From 11843b6ef270db297d2bcd39c8ee42a420a6cb87 Mon Sep 17 00:00:00 2001 From: boryslevytskyi Date: Tue, 16 May 2017 23:24:09 +0300 Subject: [PATCH] new react deployment --- react/bundle.js | 6 +++--- react/bundle.js.map | 2 +- react/npm-debug.log | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 react/npm-debug.log diff --git a/react/bundle.js b/react/bundle.js index d39f2a9..f5b3167 100644 --- a/react/bundle.js +++ b/react/bundle.js @@ -1,9 +1,9 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="http://localhost:8080/",t(t.s=192)}([function(e,t,n){"use strict";function r(e,t,n,r,i,a,u,s){if(o(t),!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,i,a,u,s],p=0;l=new Error(t.replace(/%s/g,function(){return c[p++]})),l.name="Invariant Violation"}throw l.framesToPop=1,l}}var o=function(e){};e.exports=r},function(e,t,n){"use strict";var r=n(6),o=r;e.exports=o},function(e,t,n){"use strict";function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;r1){for(var h=Array(d),m=0;m1){for(var v=Array(y),g=0;g]/;e.exports=o},function(e,t,n){"use strict";var r,o=n(5),i=n(32),a=/^[ \r\n\t\f]/,u=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,s=n(40),l=s(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&&(l=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&u.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=l},function(e,t,n){"use strict";function r(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!==e&&t!==t}function o(e,t){if(r(e,t))return!0;if("object"!==(void 0===e?"undefined":i(e))||null===e||"object"!==(void 0===t?"undefined":i(t))||null===t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(var u=0;u-1||a("96",e),!l.plugins[n]){t.extractEvents||a("97",e),l.plugins[n]=t;var r=t.eventTypes;for(var i in r)o(r[i],t,i)||a("98",i,e)}}}function o(e,t,n){l.eventNameDispatchConfigs.hasOwnProperty(n)&&a("99",n),l.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var u=r[o];i(u,t,n)}return!0}return!!e.registrationName&&(i(e.registrationName,t,n),!0)}function i(e,t,n){l.registrationNameModules[e]&&a("100",e),l.registrationNameModules[e]=t,l.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var a=n(2),u=(n(0),null),s={},l={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){u&&a("101"),u=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];s.hasOwnProperty(n)&&s[n]===o||(s[n]&&a("102",n),s[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return l.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var o=l.registrationNameModules[n[r]];if(o)return o}}return null},_resetEventPlugins:function(){u=null;for(var e in s)s.hasOwnProperty(e)&&delete s[e];l.plugins.length=0;var t=l.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=l.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};e.exports=l},function(e,t,n){"use strict";function r(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function o(e){return"topMouseMove"===e||"topTouchMove"===e}function i(e){return"topMouseDown"===e||"topTouchStart"===e}function a(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=v.getNodeFromInstance(r),t?m.invokeGuardedCallbackWithCatch(o,n,e):m.invokeGuardedCallback(o,n,e),e.currentTarget=null}function u(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;o0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function i(e,t){var n=s.get(e);if(!n){return null}return n}var a="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},u=n(2),s=(n(11),n(22)),l=(n(7),n(9)),c=(n(0),n(1),{isMounted:function(e){var t=s.get(e);return!!t&&!!t._renderedComponent},enqueueCallback:function(e,t,n){c.validateCallback(t,n);var o=i(e);if(!o)return null;o._pendingCallbacks?o._pendingCallbacks.push(t):o._pendingCallbacks=[t],r(o)},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&&(c.validateCallback(n,"replaceState"),o._pendingCallbacks?o._pendingCallbacks.push(n):o._pendingCallbacks=[n]),r(o))},enqueueSetState:function(e,t){var n=i(e,"setState");if(n){(n._pendingStateQueue||(n._pendingStateQueue=[])).push(t),r(n)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,r(e)},validateCallback:function(e,t){e&&"function"!=typeof e&&u("122",t,o(e))}});e.exports=c},function(e,t,n){"use strict";var r=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=r},function(e,t,n){"use strict";function r(e){var t,n=e.keyCode;return"charCode"in e?0===(t=e.charCode)&&13===n&&(t=13):t=n,t>=32||13===t?t:0}e.exports=r},function(e,t,n){"use strict";function r(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=i[e];return!!r&&!!n[r]}function o(e){return r}var i={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=o},function(e,t,n){"use strict";function r(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=r},function(e,t,n){"use strict";/** +var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,u,s=r(e),l=1;l1){for(var h=Array(d),m=0;m1){for(var v=Array(y),g=0;g]/;e.exports=o},function(e,t,n){"use strict";var r,o=n(5),i=n(32),a=/^[ \r\n\t\f]/,u=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,s=n(40),l=s(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&&(l=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&u.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=l},function(e,t,n){"use strict";function r(e,t){return e===t?0!==e||0!==t||1/e==1/t:e!==e&&t!==t}function o(e,t){if(r(e,t))return!0;if("object"!==(void 0===e?"undefined":i(e))||null===e||"object"!==(void 0===t?"undefined":i(t))||null===t)return!1;var n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(var u=0;u-1||a("96",e),!l.plugins[n]){t.extractEvents||a("97",e),l.plugins[n]=t;var r=t.eventTypes;for(var i in r)o(r[i],t,i)||a("98",i,e)}}}function o(e,t,n){l.eventNameDispatchConfigs.hasOwnProperty(n)&&a("99",n),l.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var u=r[o];i(u,t,n)}return!0}return!!e.registrationName&&(i(e.registrationName,t,n),!0)}function i(e,t,n){l.registrationNameModules[e]&&a("100",e),l.registrationNameModules[e]=t,l.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var a=n(2),u=(n(0),null),s={},l={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){u&&a("101"),u=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];s.hasOwnProperty(n)&&s[n]===o||(s[n]&&a("102",n),s[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return l.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var o=l.registrationNameModules[n[r]];if(o)return o}}return null},_resetEventPlugins:function(){u=null;for(var e in s)s.hasOwnProperty(e)&&delete s[e];l.plugins.length=0;var t=l.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=l.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};e.exports=l},function(e,t,n){"use strict";function r(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function o(e){return"topMouseMove"===e||"topTouchMove"===e}function i(e){return"topMouseDown"===e||"topTouchStart"===e}function a(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=v.getNodeFromInstance(r),t?m.invokeGuardedCallbackWithCatch(o,n,e):m.invokeGuardedCallback(o,n,e),e.currentTarget=null}function u(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;o0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function i(e,t){var n=s.get(e);if(!n){return null}return n}var a="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},u=n(2),s=(n(11),n(23)),l=(n(8),n(9)),c=(n(0),n(1),{isMounted:function(e){var t=s.get(e);return!!t&&!!t._renderedComponent},enqueueCallback:function(e,t,n){c.validateCallback(t,n);var o=i(e);if(!o)return null;o._pendingCallbacks?o._pendingCallbacks.push(t):o._pendingCallbacks=[t],r(o)},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&&(c.validateCallback(n,"replaceState"),o._pendingCallbacks?o._pendingCallbacks.push(n):o._pendingCallbacks=[n]),r(o))},enqueueSetState:function(e,t){var n=i(e,"setState");if(n){(n._pendingStateQueue||(n._pendingStateQueue=[])).push(t),r(n)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,r(e)},validateCallback:function(e,t){e&&"function"!=typeof e&&u("122",t,o(e))}});e.exports=c},function(e,t,n){"use strict";var r=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=r},function(e,t,n){"use strict";function r(e){var t,n=e.keyCode;return"charCode"in e?0===(t=e.charCode)&&13===n&&(t=13):t=n,t>=32||13===t?t:0}e.exports=r},function(e,t,n){"use strict";function r(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=i[e];return!!r&&!!n[r]}function o(e){return r}var i={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=o},function(e,t,n){"use strict";function r(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=r},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`, @@ -17,5 +17,5 @@ var o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.pr * @internal * @license Modernizr 3.0.0pre (Custom Build) | MIT */ -function r(e,t){if(!i.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var a=document.createElement("div");a.setAttribute(n,"return;"),r="function"==typeof a[n]}return!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var o,i=n(5);i.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=r},function(e,t,n){"use strict";function r(e,t){var n=null===e||!1===e,r=null===t||!1===t;if(n||r)return n===r;var i=void 0===e?"undefined":o(e),a=void 0===t?"undefined":o(t);return"string"===i||"number"===i?"string"===a||"number"===a:"object"===a&&e.type===t.type&&e.key===t.key}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.exports=r},function(e,t,n){"use strict";var r=(n(3),n(6)),o=(n(1),r);e.exports=o},function(e,t,n){"use strict";function r(e,t,n){this.props=e,this.context=t,this.refs=u,this.updater=n||a}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(18),a=n(48),u=(n(80),n(19));n(0),n(1);r.prototype.isReactComponent={},r.prototype.setState=function(e,t){"object"!==(void 0===e?"undefined":o(e))&&"function"!=typeof e&&null!=e&&i("85"),this.updater.enqueueSetState(this,e),t&&this.updater.enqueueCallback(this,t,"setState")},r.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")};e.exports=r},function(e,t,n){"use strict";var r=(n(1),{isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){},enqueueReplaceState:function(e,t){},enqueueSetState:function(e,t){}});e.exports=r},function(module,exports,__webpack_require__){"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var n=0;n=0;n--)if(!0===this.factories[n].canCreate(t))return!0;return!1},parse:function(e){for(var t,n=e.replace(/^\s+|\s+$/,""),r=0,o=this.factories.length;r0&&n.push(new Operand(e.trim()))}),new ListOfNumbersExpression(r,n)}}),expression.addFactory({regex:/^(~)(-?(?:\d+|0x[\d,a-f]+))$/,canCreate:function(e){return this.regex.test(e)},create:function(e){var t=this.regex.exec(e),n=new Operand(t[2]);return new SingleOperandExpression(t.input,n,t[1])}}),expression.addFactory({fullRegex:/^((<<|>>|>>>|\||\&|\^)?(-?((?:\d+(?!x))|(?:0x[\d,a-f]+))))+$/,regex:/(<<|>>|>>>|\||\&|\^)?(-?((?:\d+(?!x))|(?:0x[\d,a-f]+)))/g,canCreate:function(e){return this.fullRegex.lastIndex=0,this.fullRegex.test(this.normalizeString(e))},create:function(e){for(var t,n=[],r=this.normalizeString(e);null!=(t=this.regex.exec(r));)n.push(this.parseMatch(t));return new MultipleOperandsExpression(r,n)},parseMatch:function(e){var t=e[0],n=e[1],r=e[2];return null==n?new Operand(r):new SingleOperandExpression(t,new Operand(r),n)},normalizeString:function(e){return e.replace(/\s+/g,"")}});var Operand=exports.Operand=function(){function e(t){_classCallCheck(this,e),this.input=t,this.value=parseInt(t),this.hex=e.toHexString(this.value.toString(16)),this.dec=this.value.toString(10),this.bin=this.value<0?(this.value>>>0).toString(2):this.value.toString(2),this.kind=this.input.indexOf("0x")>-1?"hex":"dec",this.other="dec"==this.kind?this.hex:this.dec,this.lengthInBits=e.getBitLength(this.value)}return _createClass(e,[{key:"getLengthInBits",value:function(){return this.value<0?32:Math.floor(Math.log(this.value)/Math.log(2))+1}},{key:"getOtherKind",value:function(e){switch(e||this.kind){case"dec":return"hex";case"hex":return"dec";default:throw new Error(e+" kind doesn't have opposite kind")}}},{key:"toString",value:function(){return this.input}},{key:"setValue",value:function(t){console.log("Before "+t,this),this.value=t,this.bin=e.toKindString(this.value,"bin"),this.dec=e.toKindString(this.value,"dec"),this.hex=e.toKindString(this.value,"hex"),this.other=e.toKindString(this.value,this.getOtherKind()),this.input=e.toKindString(this.value,this.kind),console.log("After "+t,this)}}],[{key:"getBitLength",value:function(e){return Math.floor(Math.log(e)/Math.log(2))+1}},{key:"getBase",value:function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}}},{key:"create",value:function(t,n){var r=t.toString(e.getBase(n));return"hex"==n&&(r=e.toHexString(r)),new e(r)}},{key:"toKindString",value:function(e,t){switch(t){case"hex":var n=Math.abs(e).toString(16);return e>=0?"0x"+n:"-0x"+n;case"bin":return(e>>>0).toString(2);case"dec":return e.toString(10);default:throw new Error("Unexpected kind: "+t)}}},{key:"toHexString",value:function(e){return 0==e.indexOf("-")?"-0x"+e.substr(1):"0x"+e}}]),e}(),SingleOperandExpression=exports.SingleOperandExpression=function(){function SingleOperandExpression(e,t,n){_classCallCheck(this,SingleOperandExpression),this.expressionString=e,this.operand1=t,this.sign=n}return _createClass(SingleOperandExpression,[{key:"apply",value:function apply(value){var str="";return str="~"==this.sign?"~"+this.operand1.value:value+this.sign+this.operand1.value,Operand.create(eval(str),this.operand1.kind)}},{key:"isShiftExpression",value:function(){return this.sign.indexOf("<")>=0||this.sign.indexOf(">")>=0}},{key:"toString",value:function(){return this.sign+this.operand1.toString()}}]),SingleOperandExpression}(),TwoOperandExpression=exports.TwoOperandExpression=function e(t,n,r,o){_classCallCheck(this,e),this.expressionString=t,this.operand1=n,this.operand2=r,this.sign=o},MultipleOperandsExpression=exports.MultipleOperandsExpression=function e(t,n){_classCallCheck(this,e),this.expressionString=t,this.expressions=n},ListOfNumbersExpression=exports.ListOfNumbersExpression=function(){function e(t,n){_classCallCheck(this,e),this.expressionString=t,this.numbers=n,this.maxBitsLegnth=n.map(function(e){return e.lengthInBits}).reduce(function(e,t){return e>=t?e:t},0)}return _createClass(e,[{key:"toString",value:function(){return this.numbers.map(function(e){return e.value.toString()}).join(" ")}}]),e}(),Expression=exports.Expression=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"toString",value:function(){return this.expressionString?"Expression: "+this.expressionString:this.toString()}}]),e}(),parser=exports.parser=expression,Parser=exports.Parser=function(){function e(t,n){_classCallCheck(this,e),this.input=t,this.pos=n||0,this.buffer=[]}return _createClass(e,[{key:"parse",value:function(){for(console.log(this.input.length);this.pos=0&&t<=p.levels.SILENT))throw"log.setLevel() called with invalid level: "+t;if(c=t,!1!==n&&a(t),r.call(p,t,e),("undefined"==typeof console?"undefined":i(console))===s&&t>2' or 'help' "})}},{key:"onKeyUp",value:function(e){var t=e.target;if(13==e.keyCode&&0!=t.value.trim().length){var n=t.value;this.history.unshift(n),this.historyIndex=-1,t.value="",p.default.execute(n),console.log(this.history)}}},{key:"onKeyDown",value:function(e){if(38==e.keyCode){var t=this.historyIndex+1;return this.history.length>t&&(e.target.value=this.history[t],this.historyIndex=t),void e.preventDefault()}40==e.keyCode&&(this.historyIndex>0&&(e.target.value=this.history[--this.historyIndex]),e.preventDefault())}}]),t}(l.default.Component);t.default=f},function(e,t,n){"use strict";var r=n(6),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!0),{remove:function(){e.removeEventListener(t,n,!0)}}):{remove:r}},registerDefault:function(){}};e.exports=o},function(e,t,n){"use strict";function r(e){try{e.focus()}catch(e){}}e.exports=r},function(e,t,n){"use strict";function r(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}e.exports=r},function(e,t,n){"use strict";function r(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(p===setTimeout)return setTimeout(e,0);if((p===r||!p)&&setTimeout)return p=setTimeout,setTimeout(e,0);try{return p(e,0)}catch(t){try{return p.call(null,e,0)}catch(t){return p.call(this,e,0)}}}function a(e){if(f===clearTimeout)return clearTimeout(e);if((f===o||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function u(){y&&h&&(y=!1,h.length?m=h.concat(m):v=-1,m.length&&s())}function s(){if(!y){var e=i(u);y=!0;for(var t=m.length;t;){for(h=m,m=[];++v1)for(var n=1;n.":"function"==typeof t?" Instead of passing a class like Foo, pass React.createElement(Foo) or .":null!=t&&void 0!==t.props?" This may be caused by unintentionally loading two independent copies of React.":"");var a,u=y.createElement(U,{child:t});if(e){var s=C.get(e);a=s._processChildContext(s._context)}else a=O;var c=f(n);if(c){var p=c._currentElement,h=p.props.child;if(N(h,t)){var m=c._renderedComponent.getPublicInstance(),v=r&&function(){r.call(m)};return B._updateRootComponent(c,u,a,n,v),m}B.unmountComponentAtNode(n)}var g=o(n),b=g&&!!i(g),_=l(n),E=b&&!c&&!_,w=B._renderNewRootComponent(u,n,E,a)._renderedComponent.getPublicInstance();return r&&r.call(w),w},render:function(e,t,n){return B._renderSubtreeIntoContainer(null,e,t,n)},unmountComponentAtNode:function(e){c(e)||d("40");var t=f(e);if(!t){l(e),1===e.nodeType&&e.hasAttribute(I);return!1}return delete L[t._instance.rootID],k.batchedUpdates(s,t,e,!1),!0},_mountImageIntoNode:function(e,t,n,i,a){if(c(t)||d("41"),i){var u=o(t);if(w.canReuseMarkup(e,u))return void g.precacheNode(n,u);var s=u.getAttribute(w.CHECKSUM_ATTR_NAME);u.removeAttribute(w.CHECKSUM_ATTR_NAME);var l=u.outerHTML;u.setAttribute(w.CHECKSUM_ATTR_NAME,s);var p=e,f=r(p,l),m=" (client) "+p.substring(f-20,f+20)+"\n (server) "+l.substring(f-20,f+20);t.nodeType===A&&d("42",m)}if(t.nodeType===A&&d("43"),a.useCreateElement){for(;t.lastChild;)t.removeChild(t.lastChild);h.insertTreeBefore(t,e,null)}else T(t,e),g.precacheNode(n,t.firstChild)}};e.exports=B},function(e,t,n){"use strict";var r=n(2),o=n(16),i=(n(0),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(e){return null===e||!1===e?i.EMPTY:o.isValidElement(e)?"function"==typeof e.type?i.COMPOSITE:i.HOST:void r("26",e)}});e.exports=i},function(e,t,n){"use strict";var r={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(e){r.currentScrollLeft=e.x,r.currentScrollTop=e.y}};e.exports=r},function(e,t,n){"use strict";function r(e,t){return null==t&&o("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}var o=n(2);n(0);e.exports=r},function(e,t,n){"use strict";function r(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}e.exports=r},function(e,t,n){"use strict";function r(e){for(var t;(t=e._renderedNodeType)===o.COMPOSITE;)e=e._renderedComponent;return t===o.HOST?e._renderedComponent:t===o.EMPTY?null:void 0}var o=n(68);e.exports=r},function(e,t,n){"use strict";function r(){return!i&&o.canUseDOM&&(i="textContent"in document.documentElement?"textContent":"innerText"),i}var o=n(5),i=null;e.exports=r},function(e,t,n){"use strict";function r(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function o(e){return"function"==typeof e&&void 0!==e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}function i(e,t){var n;if(null===e||!1===e)n=c.create(i);else if("object"===(void 0===e?"undefined":a(e))){var s=e,l=s.type;if("function"!=typeof l&&"string"!=typeof l){var d="";d+=r(s._owner),u("130",null==l?l:void 0===l?"undefined":a(l),d)}"string"==typeof s.type?n=p.createInternalComponent(s):o(s.type)?(n=new s.type(s),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new f(s)}else"string"==typeof e||"number"==typeof e?n=p.createInstanceForText(e):u("131",void 0===e?"undefined":a(e));return n._mountIndex=0,n._mountImage=null,n}var a="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},u=n(2),s=n(3),l=n(122),c=n(63),p=n(65),f=(n(183),n(0),n(1),function(e){this.construct(e)});s(f.prototype,l,{_instantiateReactComponent:i}),e.exports=i},function(e,t,n){"use strict";function r(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!o[e.type]:"textarea"===t}var o={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};e.exports=r},function(e,t,n){"use strict";var r=n(5),o=n(28),i=n(29),a=function(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(a=function(e,t){if(3===e.nodeType)return void(e.nodeValue=t);i(e,o(t))})),e.exports=a},function(e,t,n){"use strict";function r(e,t){return e&&"object"===(void 0===e?"undefined":a(e))&&null!=e.key?c.escape(e.key):t.toString(36)}function o(e,t,n,i){var d=void 0===e?"undefined":a(e);if("undefined"!==d&&"boolean"!==d||(e=null),null===e||"string"===d||"number"===d||"object"===d&&e.$$typeof===s)return n(i,e,""===t?p+r(e,0):t),1;var h,m,y=0,v=""===t?p:t+f;if(Array.isArray(e))for(var g=0;g0;)t.push(s.default.createElement("span",{key:n++,className:"byte"},e.splice(0,8)));return t}}]),t}(s.default.Component);t.default=l},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},n=t.emphasizeBytes,o=void 0!==n&&n;r(this,e),this.emphasizeBytes=o,this.items=[],this.maxNumberOfBits=0}return o(e,[{key:"addOperand",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"",label:e.toString(),bin:e.bin,other:e.other,css:""})}},{key:"addExpression",value:function(e){this.maxNumberOfBits=Math.max(e.operand1.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign,label:e.operand1.toString(),bin:e.operand1.bin,other:e.operand1.other,css:""})}},{key:"addShiftExpressionResult",value:function(e,t){this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign+e.operand1.input,label:t.toString(),bin:t.bin,other:t.other,css:"expression-result"})}},{key:"addExpressionResult",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"=",label:e.toString(),bin:e.bin,other:e.other,css:"expression-result"})}}],[{key:"buildMultiple",value:function(t,n){var r,o=t.expressions[0],i=1,a=t.expressions.length,u=new e(n);for(u.addOperand(o);ir.length;)r.unshift(n);return r.join("")}}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(24),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(24),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e,n){r(this,t);var i=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return i.error=n,i}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(24),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e,n){r(this,t);var i=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return i.expression=n,i}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(24),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(24),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e){r(this,t);var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.message="Sorry, i don''t know what "+e+" is :(",n}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";e.exports=n(123)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0&&t.push(e)}):t.push(e),t}Object.defineProperty(t,"__esModule",{value:!0}),t.default={encodeHash:function(e){return encodeURI(e.trim().replace(/\s/g,","))},decodeHash:function(e){return decodeURI(e).replace(/^\#/,"").replace(/,/g," ")},getArgs:function(e){var t=this.decodeHash(e),n={commands:[]};return r(t).forEach(function(e){if(/^\-[a-zA-Z]+$/.test(e))return void(n[e.substr(1)]=!0);n.commands.push(e)}),Object.freeze(n)}}},function(e,t,n){"use strict";function r(e){return e.replace(o,function(e,t){return t.toUpperCase()})}var o=/-(.)/g;e.exports=r},function(e,t,n){"use strict";function r(e){return o(e.replace(i,"ms-"))}var o=n(95),i=/^-ms-/;e.exports=r},function(e,t,n){"use strict";function r(e,t){return!(!e||!t)&&(e===t||!o(e)&&(o(t)?r(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}var o=n(105);e.exports=r},function(e,t,n){"use strict";function r(e){var t=e.length;if((Array.isArray(e)||"object"!==(void 0===e?"undefined":a(e))&&"function"!=typeof e)&&u(!1),"number"!=typeof t&&u(!1),0===t||t-1 in e||u(!1),"function"==typeof e.callee&&u(!1),e.hasOwnProperty)try{return Array.prototype.slice.call(e)}catch(e){}for(var n=Array(t),r=0;r":"<"+e+">",u[e]=!a.firstChild),u[e]?f[e]:null}var o=n(5),i=n(0),a=o.canUseDOM?document.createElement("div"):null,u={},s=[1,'"],l=[1,"","
"],c=[3,"","
"],p=[1,'',""],f={"*":[1,"?
","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:s,option:s,caption:l,colgroup:l,tbody:l,tfoot:l,thead:l,td:c,th:c};["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"].forEach(function(e){f[e]=p,u[e]=!0}),e.exports=r},function(e,t,n){"use strict";function r(e){return e.Window&&e instanceof e.Window?{x:e.pageXOffset||e.document.documentElement.scrollLeft,y:e.pageYOffset||e.document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}e.exports=r},function(e,t,n){"use strict";function r(e){return e.replace(o,"-$1").toLowerCase()}var o=/([A-Z])/g;e.exports=r},function(e,t,n){"use strict";function r(e){return o(e).replace(i,"-ms-")}var o=n(102),i=/^ms-/;e.exports=r},function(e,t,n){"use strict";function r(e){var t=e?e.ownerDocument||e:document,n=t.defaultView||window;return!(!e||!("function"==typeof n.Node?e instanceof n.Node:"object"===(void 0===e?"undefined":o(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.exports=r},function(e,t,n){"use strict";function r(e){return o(e)&&3==e.nodeType}var o=n(104);e.exports=r},function(e,t,n){"use strict";function r(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}e.exports=r},function(e,t,n){"use strict";function r(e,t,n,r,o){}"function"==typeof Symbol&&Symbol.iterator;e.exports=r},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(6),i=n(0),a=n(1),u=n(109),s=n(107);e.exports=function(e,t){function n(e){var t=e&&(S&&e[S]||e[k]);if("function"==typeof t)return t}function l(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t}function c(e){this.message=e,this.stack=""}function p(e){function n(n,r,o,a,s,l,p){if(a=a||O,l=l||o,p!==u)if(t)i(!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;return null==r[o]?n?new c(null===r[o]?"The "+s+" `"+l+"` is marked as required in `"+a+"`, but its value is `null`.":"The "+s+" `"+l+"` is marked as required in `"+a+"`, but its value is `undefined`."):null:e(r,o,a,s,l)}var r=n.bind(null,!1);return r.isRequired=n.bind(null,!0),r}function f(e){function t(t,n,r,o,i,a){var u=t[n];if(E(u)!==e)return new c("Invalid "+o+" `"+i+"` of type `"+C(u)+"` supplied to `"+r+"`, expected `"+e+"`.");return null}return p(t)}function d(e){function t(t,n,r,o,i){if("function"!=typeof e)return new c("Property `"+i+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var a=t[n];if(!Array.isArray(a)){return new c("Invalid "+o+" `"+i+"` of type `"+E(a)+"` supplied to `"+r+"`, expected an array.")}for(var s=0;s8&&E<=11),x=32,S=String.fromCharCode(x),k={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},O=!1,P=null,T={eventTypes:k,extractEvents:function(e,t,n,r){return[s(e,t,n,r),p(e,t,n,r)]}};e.exports=T},function(e,t,n){"use strict";var r=n(58),o=n(5),i=(n(7),n(96),n(164)),a=n(103),u=n(106),s=(n(1),u(function(e){return a(e)})),l=!1,c="cssFloat";if(o.canUseDOM){var p=document.createElement("div").style;try{p.font=""}catch(e){l=!0}void 0===document.documentElement.style.cssFloat&&(c="styleFloat")}var f={createMarkupForStyles:function(e,t){var n="";for(var r in e)if(e.hasOwnProperty(r)){var o=e[r];null!=o&&(n+=s(r)+":",n+=i(r,o,t)+";")}return n||null},setValueForStyles:function(e,t,n){var o=e.style;for(var a in t)if(t.hasOwnProperty(a)){var u=i(a,t[a],n);if("float"!==a&&"cssFloat"!==a||(a=c),u)o[a]=u;else{var s=l&&r.shorthandPropertyExpansions[a];if(s)for(var p in s)o[p]="";else o[a]=""}}}};e.exports=f},function(e,t,n){"use strict";function r(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}function o(e){var t=x.getPooled(P.change,N,e,S(e));_.accumulateTwoPhaseDispatches(t),w.batchedUpdates(i,t)}function i(e){b.enqueueEvents(e),b.processEventQueue(!1)}function a(e,t){T=e,N=t,T.attachEvent("onchange",o)}function u(){T&&(T.detachEvent("onchange",o),T=null,N=null)}function s(e,t){if("topChange"===e)return t}function l(e,t,n){"topFocus"===e?(u(),a(t,n)):"topBlur"===e&&u()}function c(e,t){T=e,N=t,M=e.value,I=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(T,"value",D),T.attachEvent?T.attachEvent("onpropertychange",f):T.addEventListener("propertychange",f,!1)}function p(){T&&(delete T.value,T.detachEvent?T.detachEvent("onpropertychange",f):T.removeEventListener("propertychange",f,!1),T=null,N=null,M=null,I=null)}function f(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==M&&(M=t,o(e))}}function d(e,t){if("topInput"===e)return t}function h(e,t,n){"topFocus"===e?(p(),c(t,n)):"topBlur"===e&&p()}function m(e,t){if(("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"===e)&&T&&T.value!==M)return M=T.value,N}function y(e){return e.nodeName&&"input"===e.nodeName.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}function v(e,t){if("topClick"===e)return t}function g(e,t){if(null!=e){var n=e._wrapperState||t._wrapperState;if(n&&n.controlled&&"number"===t.type){var r=""+t.value;t.getAttribute("value")!==r&&t.setAttribute("value",r)}}}var b=n(20),_=n(21),E=n(5),C=n(4),w=n(9),x=n(10),S=n(43),k=n(44),O=n(75),P={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},T=null,N=null,M=null,I=null,R=!1;E.canUseDOM&&(R=k("change")&&(!document.documentMode||document.documentMode>8));var A=!1;E.canUseDOM&&(A=k("input")&&(!document.documentMode||document.documentMode>11));var D={get:function(){return I.get.call(this)},set:function(e){M=""+e,I.set.call(this,e)}},L={eventTypes:P,extractEvents:function(e,t,n,o){var i,a,u=t?C.getNodeFromInstance(t):window;if(r(u)?R?i=s:a=l:O(u)?A?i=d:(i=m,a=h):y(u)&&(i=v),i){var c=i(e,t);if(c){var p=x.getPooled(P.change,c,n,o);return p.type="change",_.accumulateTwoPhaseDispatches(p),p}}a&&a(e,u,t),"topBlur"===e&&g(t,u)}};e.exports=L},function(e,t,n){"use strict";var r=n(2),o=n(13),i=n(5),a=n(99),u=n(6),s=(n(0),{dangerouslyReplaceNodeWithMarkup:function(e,t){if(i.canUseDOM||r("56"),t||r("57"),"HTML"===e.nodeName&&r("58"),"string"==typeof t){var n=a(t,u)[0];e.parentNode.replaceChild(n,e)}else o.replaceChildWithTree(e,t)}});e.exports=s},function(e,t,n){"use strict";var r=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];e.exports=r},function(e,t,n){"use strict";var r=n(21),o=n(4),i=n(26),a={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},u={eventTypes:a,extractEvents:function(e,t,n,u){if("topMouseOver"===e&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==e&&"topMouseOver"!==e)return null;var s;if(u.window===u)s=u;else{var l=u.ownerDocument;s=l?l.defaultView||l.parentWindow:window}var c,p;if("topMouseOut"===e){c=t;var f=n.relatedTarget||n.toElement;p=f?o.getClosestInstanceFromNode(f):null}else c=null,p=t;if(c===p)return null;var d=null==c?s:o.getNodeFromInstance(c),h=null==p?s:o.getNodeFromInstance(p),m=i.getPooled(a.mouseLeave,c,n,u);m.type="mouseleave",m.target=d,m.relatedTarget=h;var y=i.getPooled(a.mouseEnter,p,n,u);return y.type="mouseenter",y.target=h,y.relatedTarget=d,r.accumulateEnterLeaveDispatches(m,y,c,p),[m,y]}};e.exports=u},function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var o=n(3),i=n(12),a=n(73);o(r.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[a()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,r=n.length,o=this.getText(),i=o.length;for(e=0;e1?1-t:void 0;return this._fallbackText=o.slice(e,u),this._fallbackText}}),i.addPoolingTo(r),e.exports=r},function(e,t,n){"use strict";var r=n(14),o=r.injection.MUST_USE_PROPERTY,i=r.injection.HAS_BOOLEAN_VALUE,a=r.injection.HAS_NUMERIC_VALUE,u=r.injection.HAS_POSITIVE_NUMERIC_VALUE,s=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,l={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:i,allowTransparency:0,alt:0,as:0,async:i,autoComplete:0,autoPlay:i,capture:i,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:o|i,cite:0,classID:0,className:0,cols:u,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:i,coords:0,crossOrigin:0,data:0,dateTime:0,default:i,defer:i,dir:0,disabled:i,download:s,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:i,formTarget:0,frameBorder:0,headers:0,height:0,hidden:i,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:i,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:o|i,muted:o|i,name:0,nonce:0,noValidate:i,open:i,optimum:0,pattern:0,placeholder:0,playsInline:i,poster:0,preload:0,profile:0,radioGroup:0,readOnly:i,referrerPolicy:0,rel:0,required:i,reversed:i,role:0,rows:u,rowSpan:a,sandbox:0,scope:0,scoped:i,scrolling:0,seamless:i,selected:o|i,shape:0,size:u,sizes:0,span:u,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:i,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{},DOMMutationMethods:{value:function(e,t){if(null==t)return e.removeAttribute("value");"number"!==e.type||!1===e.hasAttribute("value")?e.setAttribute("value",""+t):e.validity&&!e.validity.badInput&&e.ownerDocument.activeElement!==e&&e.setAttribute("value",""+t)}}};e.exports=l},function(e,t,n){"use strict";(function(t){function r(e,t,n,r){var o=void 0===e[n];null!=t&&o&&(e[n]=i(t,!0))}var o=n(15),i=n(74),a=(n(35),n(45)),u=n(77);n(1);void 0!==t&&t.env;var s={instantiateChildren:function(e,t,n,o){if(null==e)return null;var i={};return u(e,r,i),i},updateChildren:function(e,t,n,r,u,s,l,c,p){if(t||e){var f,d;for(f in t)if(t.hasOwnProperty(f)){d=e&&e[f];var h=d&&d._currentElement,m=t[f];if(null!=d&&a(h,m))o.receiveComponent(d,m,u,c),t[f]=d;else{d&&(r[f]=o.getHostNode(d),o.unmountComponent(d,!1));var y=i(m,!0);t[f]=y;var v=o.mountComponent(y,u,s,l,c,p);n.push(v)}}for(f in e)!e.hasOwnProperty(f)||t&&t.hasOwnProperty(f)||(d=e[f],r[f]=o.getHostNode(d),o.unmountComponent(d,!1))}},unmountChildren:function(e,t){for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];o.unmountComponent(r,t)}}};e.exports=s}).call(t,n(56))},function(e,t,n){"use strict";var r=n(31),o=n(128),i={processChildrenUpdates:o.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};e.exports=i},function(e,t,n){"use strict";function r(e){}function o(e){return!(!e.prototype||!e.prototype.isReactComponent)}function i(e){return!(!e.prototype||!e.prototype.isPureReactComponent)}var a="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},u=n(2),s=n(3),l=n(16),c=n(37),p=n(11),f=n(38),d=n(22),h=(n(7),n(68)),m=n(15),y=n(19),v=(n(0),n(30)),g=n(45),b=(n(1),{ImpureClass:0,PureClass:1,StatelessFunctional:2});r.prototype.render=function(){var e=d.get(this)._currentElement.type,t=e(this.props,this.context,this.updater);return t};var _=1,E={construct:function(e){this._currentElement=e,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1},mountComponent:function(e,t,n,s){this._context=s,this._mountOrder=_++,this._hostParent=t,this._hostContainerInfo=n;var c,p=this._currentElement.props,f=this._processContext(s),h=this._currentElement.type,m=e.getUpdateQueue(),v=o(h),g=this._constructComponent(v,p,f,m);v||null!=g&&null!=g.render?i(h)?this._compositeType=b.PureClass:this._compositeType=b.ImpureClass:(c=g,null===g||!1===g||l.isValidElement(g)||u("105",h.displayName||h.name||"Component"),g=new r(h),this._compositeType=b.StatelessFunctional);g.props=p,g.context=f,g.refs=y,g.updater=m,this._instance=g,d.set(g,this);var E=g.state;void 0===E&&(g.state=E=null),("object"!==(void 0===E?"undefined":a(E))||Array.isArray(E))&&u("106",this.getName()||"ReactCompositeComponent"),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var C;return C=g.unstable_handleError?this.performInitialMountWithErrorHandling(c,t,n,e,s):this.performInitialMount(c,t,n,e,s),g.componentDidMount&&e.getReactMountReady().enqueue(g.componentDidMount,g),C},_constructComponent:function(e,t,n,r){return this._constructComponentWithoutOwner(e,t,n,r)},_constructComponentWithoutOwner:function(e,t,n,r){var o=this._currentElement.type;return e?new o(t,n,r):o(t,n,r)},performInitialMountWithErrorHandling:function(e,t,n,r,o){var i,a=r.checkpoint();try{i=this.performInitialMount(e,t,n,r,o)}catch(u){r.rollback(a),this._instance.unstable_handleError(u),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),a=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(a),i=this.performInitialMount(e,t,n,r,o)}return i},performInitialMount:function(e,t,n,r,o){var i=this._instance,a=0;i.componentWillMount&&(i.componentWillMount(),this._pendingStateQueue&&(i.state=this._processPendingState(i.props,i.context))),void 0===e&&(e=this._renderValidatedComponent());var u=h.getType(e);this._renderedNodeType=u;var s=this._instantiateReactComponent(e,u!==h.EMPTY);this._renderedComponent=s;var l=m.mountComponent(s,r,t,n,this._processChildContext(o),a);return l},getHostNode:function(){return m.getHostNode(this._renderedComponent)},unmountComponent:function(e){if(this._renderedComponent){var t=this._instance;if(t.componentWillUnmount&&!t._calledComponentWillUnmount)if(t._calledComponentWillUnmount=!0,e){var n=this.getName()+".componentWillUnmount()";f.invokeGuardedCallback(n,t.componentWillUnmount.bind(t))}else t.componentWillUnmount();this._renderedComponent&&(m.unmountComponent(this._renderedComponent,e),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,d.remove(t)}},_maskContext:function(e){var t=this._currentElement.type,n=t.contextTypes;if(!n)return y;var r={};for(var o in n)r[o]=e[o];return r},_processContext:function(e){var t=this._maskContext(e);return t},_processChildContext:function(e){var t,n=this._currentElement.type,r=this._instance;if(r.getChildContext&&(t=r.getChildContext()),t){"object"!==a(n.childContextTypes)&&u("107",this.getName()||"ReactCompositeComponent");for(var o in t)o in n.childContextTypes||u("108",this.getName()||"ReactCompositeComponent",o);return s({},e,t)}return e},_checkContextTypes:function(e,t,n){},receiveComponent:function(e,t,n){var r=this._currentElement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement?m.receiveComponent(this,this._pendingElement,e,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(e,t,n,r,o){var i=this._instance;null==i&&u("136",this.getName()||"ReactCompositeComponent");var a,s=!1;this._context===o?a=i.context:(a=this._processContext(o),s=!0);var l=t.props,c=n.props;t!==n&&(s=!0),s&&i.componentWillReceiveProps&&i.componentWillReceiveProps(c,a);var p=this._processPendingState(c,a),f=!0;this._pendingForceUpdate||(i.shouldComponentUpdate?f=i.shouldComponentUpdate(c,p,a):this._compositeType===b.PureClass&&(f=!v(l,c)||!v(i.state,p))),this._updateBatchNumber=null,f?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,c,p,a,e,o)):(this._currentElement=n,this._context=o,i.props=c,i.state=p,i.context=a)},_processPendingState:function(e,t){var n=this._instance,r=this._pendingStateQueue,o=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(o&&1===r.length)return r[0];for(var i=s({},o?r[0]:n.state),a=o?1:0;a=0||null!=t.is}function h(e){var t=e.type;f(t),this._currentElement=e,this._tag=t.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var m="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},y=n(2),v=n(3),g=n(111),b=n(113),_=n(13),E=n(32),C=n(14),w=n(60),x=n(20),S=n(33),k=n(25),O=n(61),P=n(4),T=n(129),N=n(130),M=n(62),I=n(133),R=(n(7),n(142)),A=n(147),D=(n(6),n(28)),L=(n(0),n(44),n(30),n(46),n(1),O),j=x.deleteListener,U=P.getNodeFromInstance,B=k.listenTo,F=S.registrationNameModules,V={string:!0,number:!0},H="__html",W={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},z=11,q={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},K={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Y={listing:!0,pre:!0,textarea:!0},X=v({menuitem:!0},K),G=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,$={},Q={}.hasOwnProperty,Z=1;h.displayName="ReactDOMComponent",h.Mixin={mountComponent:function(e,t,n,r){this._rootNodeID=Z++,this._domID=n._idCounter++,this._hostParent=t,this._hostContainerInfo=n;var i=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},e.getReactMountReady().enqueue(c,this);break;case"input":T.mountWrapper(this,i,t),i=T.getHostProps(this,i),e.getReactMountReady().enqueue(c,this);break;case"option":N.mountWrapper(this,i,t),i=N.getHostProps(this,i);break;case"select":M.mountWrapper(this,i,t),i=M.getHostProps(this,i),e.getReactMountReady().enqueue(c,this);break;case"textarea":I.mountWrapper(this,i,t),i=I.getHostProps(this,i),e.getReactMountReady().enqueue(c,this)}o(this,i);var a,p;null!=t?(a=t._namespaceURI,p=t._tag):n._tag&&(a=n._namespaceURI,p=n._tag),(null==a||a===E.svg&&"foreignobject"===p)&&(a=E.html),a===E.html&&("svg"===this._tag?a=E.svg:"math"===this._tag&&(a=E.mathml)),this._namespaceURI=a;var f;if(e.useCreateElement){var d,h=n._ownerDocument;if(a===E.html)if("script"===this._tag){var m=h.createElement("div"),y=this._currentElement.type;m.innerHTML="<"+y+">",d=m.removeChild(m.firstChild)}else d=i.is?h.createElement(this._currentElement.type,i.is):h.createElement(this._currentElement.type);else d=h.createElementNS(a,this._currentElement.type);P.precacheNode(this,d),this._flags|=L.hasCachedChildNodes,this._hostParent||w.setAttributeForRoot(d),this._updateDOMProperties(null,i,e);var v=_(d);this._createInitialChildren(e,i,r,v),f=v}else{var b=this._createOpenTagMarkupAndPutListeners(e,i),C=this._createContentMarkup(e,i,r);f=!C&&K[this._tag]?b+"/>":b+">"+C+""}switch(this._tag){case"input":e.getReactMountReady().enqueue(u,this),i.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(s,this),i.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"select":case"button":i.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(l,this)}return f},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];if(null!=o)if(F.hasOwnProperty(r))o&&i(this,r,o,e);else{"style"===r&&(o&&(o=this._previousStyleCopy=v({},t.style)),o=b.createMarkupForStyles(o,this));var a=null;null!=this._tag&&d(this._tag,t)?W.hasOwnProperty(r)||(a=w.createMarkupForCustomAttribute(r,o)):a=w.createMarkupForProperty(r,o),a&&(n+=" "+a)}}return e.renderToStaticMarkup?n:(this._hostParent||(n+=" "+w.createMarkupForRoot()),n+=" "+w.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r="",o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&(r=o.__html);else{var i=V[m(t.children)]?t.children:null,a=null!=i?null:t.children;if(null!=i)r=D(i);else if(null!=a){var u=this.mountChildren(a,e,n);r=u.join("")}}return Y[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&_.queueHTML(r,o.__html);else{var i=V[m(t.children)]?t.children:null,a=null!=i?null:t.children;if(null!=i)""!==i&&_.queueText(r,i);else if(null!=a)for(var u=this.mountChildren(a,e,n),s=0;st.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function u(e,t){if(window.getSelection){var n=window.getSelection(),r=e[c()].length,o=Math.min(t.start,r),i=void 0===t.end?o:Math.min(t.end,r);if(!n.extend&&o>i){var a=i;i=o,o=a}var u=l(e,o),s=l(e,i);if(u&&s){var p=document.createRange();p.setStart(u.node,u.offset),n.removeAllRanges(),o>i?(n.addRange(p),n.extend(s.node,s.offset)):(p.setEnd(s.node,s.offset),n.addRange(p))}}}var s=n(5),l=n(169),c=n(73),p=s.canUseDOM&&"selection"in document&&!("getSelection"in window),f={getOffsets:p?o:i,setOffsets:p?a:u};e.exports=f},function(e,t,n){"use strict";var r=n(2),o=n(3),i=n(31),a=n(13),u=n(4),s=n(28),l=(n(0),n(46),function(e){this._currentElement=e,this._stringText=""+e,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});o(l.prototype,{mountComponent:function(e,t,n,r){var o=n._idCounter++,i=" react-text: "+o+" ";if(this._domID=o,this._hostParent=t,e.useCreateElement){var l=n._ownerDocument,c=l.createComment(i),p=l.createComment(" /react-text "),f=a(l.createDocumentFragment());return a.queueChild(f,a(c)),this._stringText&&a.queueChild(f,a(l.createTextNode(this._stringText))),a.queueChild(f,a(p)),u.precacheNode(this,c),this._closingComment=p,f}var d=s(this._stringText);return e.renderToStaticMarkup?d:"\x3c!--"+i+"--\x3e"+d+"\x3c!-- /react-text --\x3e"},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();i.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var e=this._commentNodes;if(e)return e;if(!this._closingComment)for(var t=u.getNodeFromInstance(this),n=t.nextSibling;;){if(null==n&&r("67",this._domID),8===n.nodeType&&" /react-text "===n.nodeValue){this._closingComment=n;break}n=n.nextSibling}return e=[this._hostNode,this._closingComment],this._commentNodes=e,e},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,u.uncacheNode(this)}}),e.exports=l},function(e,t,n){"use strict";function r(){this._rootNodeID&&c.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=u.executeOnChange(t,e);return l.asap(r,this),n}var i=n(2),a=n(3),u=n(36),s=n(4),l=n(9),c=(n(0),n(1),{getHostProps:function(e,t){return null!=t.dangerouslySetInnerHTML&&i("91"),a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue,onChange:e._wrapperState.onChange})},mountWrapper:function(e,t){var n=u.getValue(t),r=n;if(null==n){var a=t.defaultValue,s=t.children;null!=s&&(null!=a&&i("92"),Array.isArray(s)&&(s.length<=1||i("93"),s=s[0]),a=""+s),null==a&&(a=""),r=a}e._wrapperState={initialValue:""+r,listeners:null,onChange:o.bind(e)}},updateWrapper:function(e){var t=e._currentElement.props,n=s.getNodeFromInstance(e),r=u.getValue(t);if(null!=r){var o=""+r;o!==n.value&&(n.value=o),null==t.defaultValue&&(n.defaultValue=o)}null!=t.defaultValue&&(n.defaultValue=t.defaultValue)},postMountWrapper:function(e){var t=s.getNodeFromInstance(e),n=t.textContent;n===e._wrapperState.initialValue&&(t.value=n)}});e.exports=c},function(e,t,n){"use strict";function r(e,t){"_hostNode"in e||s("33"),"_hostNode"in t||s("33");for(var n=0,r=e;r;r=r._hostParent)n++;for(var o=0,i=t;i;i=i._hostParent)o++;for(;n-o>0;)e=e._hostParent,n--;for(;o-n>0;)t=t._hostParent,o--;for(var a=n;a--;){if(e===t)return e;e=e._hostParent,t=t._hostParent}return null}function o(e,t){"_hostNode"in e||s("35"),"_hostNode"in t||s("35");for(;t;){if(t===e)return!0;t=t._hostParent}return!1}function i(e){return"_hostNode"in e||s("36"),e._hostParent}function a(e,t,n){for(var r=[];e;)r.push(e),e=e._hostParent;var o;for(o=r.length;o-- >0;)t(r[o],"captured",n);for(o=0;o0;)n(s[l],"captured",i)}var s=n(2);n(0);e.exports={isAncestor:o,getLowestCommonAncestor:r,getParentInstance:i,traverseTwoPhase:a,traverseEnterLeave:u}},function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var o=n(3),i=n(9),a=n(27),u=n(6),s={initialize:u,close:function(){f.isBatchingUpdates=!1}},l={initialize:u,close:i.flushBatchedUpdates.bind(i)},c=[l,s];o(r.prototype,a,{getTransactionWrappers:function(){return c}});var p=new r,f={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o,i){var a=f.isBatchingUpdates;return f.isBatchingUpdates=!0,a?e(t,n,r,o,i):p.perform(e,null,t,n,r,o,i)}};e.exports=f},function(e,t,n){"use strict";function r(){w||(w=!0,g.EventEmitter.injectReactEventListener(v),g.EventPluginHub.injectEventPluginOrder(u),g.EventPluginUtils.injectComponentTree(f),g.EventPluginUtils.injectTreeTraversal(h),g.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:C,EnterLeaveEventPlugin:s,ChangeEventPlugin:a,SelectEventPlugin:E,BeforeInputEventPlugin:i}),g.HostComponent.injectGenericComponentClass(p),g.HostComponent.injectTextComponentClass(m),g.DOMProperty.injectDOMPropertyConfig(o),g.DOMProperty.injectDOMPropertyConfig(l),g.DOMProperty.injectDOMPropertyConfig(_),g.EmptyComponent.injectEmptyComponentFactory(function(e){return new d(e)}),g.Updates.injectReconcileTransaction(b),g.Updates.injectBatchingStrategy(y),g.Component.injectEnvironment(c))}var o=n(110),i=n(112),a=n(114),u=n(116),s=n(117),l=n(119),c=n(121),p=n(124),f=n(4),d=n(126),h=n(134),m=n(132),y=n(135),v=n(139),g=n(140),b=n(145),_=n(150),E=n(151),C=n(152),w=!1;e.exports={inject:r}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=r},function(e,t,n){"use strict";function r(e){o.enqueueEvents(e),o.processEventQueue(!1)}var o=n(20),i={handleTopLevel:function(e,t,n,i){r(o.extractEvents(e,t,n,i))}};e.exports=i},function(e,t,n){"use strict";function r(e){for(;e._hostParent;)e=e._hostParent;var t=p.getNodeFromInstance(e),n=t.parentNode;return p.getClosestInstanceFromNode(n)}function o(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}function i(e){var t=d(e.nativeEvent),n=p.getClosestInstanceFromNode(t),o=n;do{e.ancestors.push(o),o=o&&r(o)}while(o);for(var i=0;i/," "+i.CHECKSUM_ATTR_NAME+'="'+t+'"$&')},canReuseMarkup:function(e,t){var n=t.getAttribute(i.CHECKSUM_ATTR_NAME);return n=n&&parseInt(n,10),r(e)===n}};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return{type:"INSERT_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:n,afterNode:t}}function o(e,t,n){return{type:"MOVE_EXISTING",content:null,fromIndex:e._mountIndex,fromNode:f.getHostNode(e),toIndex:n,afterNode:t}}function i(e,t){return{type:"REMOVE_NODE",content:null,fromIndex:e._mountIndex,fromNode:t,toIndex:null,afterNode:null}}function a(e){return{type:"SET_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function u(e){return{type:"TEXT_CONTENT",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function s(e,t){return t&&(e=e||[],e.push(t)),e}function l(e,t){p.processChildrenUpdates(e,t)}var c=n(2),p=n(37),f=(n(22),n(7),n(11),n(15)),d=n(120),h=(n(6),n(166)),m=(n(0),{Mixin:{_reconcilerInstantiateChildren:function(e,t,n){return d.instantiateChildren(e,t,n)},_reconcilerUpdateChildren:function(e,t,n,r,o,i){var a,u=0;return a=h(t,u),d.updateChildren(e,a,n,r,o,this,this._hostContainerInfo,i,u),a},mountChildren:function(e,t,n){var r=this._reconcilerInstantiateChildren(e,t,n);this._renderedChildren=r;var o=[],i=0;for(var a in r)if(r.hasOwnProperty(a)){var u=r[a],s=0,l=f.mountComponent(u,t,this,this._hostContainerInfo,n,s);u._mountIndex=i++,o.push(l)}return o},updateTextContent:function(e){var t=this._renderedChildren;d.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");l(this,[u(e)])},updateMarkup:function(e){var t=this._renderedChildren;d.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");l(this,[a(e)])},updateChildren:function(e,t,n){this._updateChildren(e,t,n)},_updateChildren:function(e,t,n){var r=this._renderedChildren,o={},i=[],a=this._reconcilerUpdateChildren(r,e,i,o,t,n);if(a||r){var u,c=null,p=0,d=0,h=0,m=null;for(u in a)if(a.hasOwnProperty(u)){var y=r&&r[u],v=a[u];y===v?(c=s(c,this.moveChild(y,m,p,d)),d=Math.max(y._mountIndex,d),y._mountIndex=p):(y&&(d=Math.max(y._mountIndex,d)),c=s(c,this._mountChildAtIndex(v,i[h],m,p,t,n)),h++),p++,m=f.getHostNode(v)}for(u in o)o.hasOwnProperty(u)&&(c=s(c,this._unmountChild(r[u],o[u])));c&&l(this,c),this._renderedChildren=a}},unmountChildren:function(e){var t=this._renderedChildren;d.unmountChildren(t,e),this._renderedChildren=null},moveChild:function(e,t,n,r){if(e._mountIndex=t)return{node:n,offset:t-i};i=a}n=r(o(n))}}e.exports=i},function(e,t,n){"use strict";function r(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}function o(e){if(u[e])return u[e];if(!a[e])return e;var t=a[e];for(var n in t)if(t.hasOwnProperty(n)&&n in s)return u[e]=t[n];return""}var i=n(5),a={animationend:r("Animation","AnimationEnd"),animationiteration:r("Animation","AnimationIteration"),animationstart:r("Animation","AnimationStart"),transitionend:r("Transition","TransitionEnd")},u={},s={};i.canUseDOM&&(s=document.createElement("div").style,"AnimationEvent"in window||(delete a.animationend.animation,delete a.animationiteration.animation,delete a.animationstart.animation),"TransitionEvent"in window||delete a.transitionend.transition),e.exports=o},function(e,t,n){"use strict";function r(e){return'"'+o(e)+'"'}var o=n(28);e.exports=r},function(e,t,n){"use strict";var r=n(67);e.exports=r.renderSubtreeIntoContainer},function(e,t,n){"use strict";function r(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}function o(e){var t={"=0":"=","=2":":"};return(""+("."===e[0]&&"$"===e[1]?e.substring(2):e.substring(1))).replace(/(=0|=2)/g,function(e){return t[e]})}var i={escape:r,unescape:o};e.exports=i},function(e,t,n){"use strict";var r=n(18),o=(n(0),function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)}),i=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)},a=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)},u=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)},s=function(e){var t=this;e instanceof t||r("25"),e.destructor(),t.instancePool.length"),this.props.content.input,c.default.createElement("a",{className:"hashLink",title:"Link for this expression",href:window.location.pathname+"#"+this.props.inputHash},"#")),c.default.createElement("div",{className:"content"},this.findResultComponent(this.props.content)))}},{key:"renderUnknown",value:function(){return c.default.createElement("div",{className:"result"},c.default.createElement("div",{className:"error"},"¯\\_(ツ)_/¯ Sorry, i don't know what ",c.default.createElement("strong",null,this.props.input)," is"))}},{key:"renderError",value:function(e){return c.default.createElement("div",{className:"result"},c.default.createElement("div",{className:"error"},"(X_X) Error occurred: ",c.default.createElement("strong",null,e)))}},{key:"findResultComponent",value:function(e){return e instanceof f.default?c.default.createElement(g.default,{content:e}):e instanceof h.default?c.default.createElement(_.default,null):e instanceof C.default?c.default.createElement(x.default,{result:e,emphasizeBytes:this.props.appState.emphasizeBytes}):(console.warn("Unknown result:",e),c.default.createElement("span",null,"Unknown result: ",void 0===e?"undefined":u(e)))}}]),t}(c.default.Component);t.default=O},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 u=function(){function e(e,t){for(var n=0;n>")," — sign propagating right shift"),s.default.createElement("li",null,s.default.createElement("code",null,">>>")," — zero-fill right shift"))))))}}]),t}(s.default.Component);t.default=l},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 u=function(){function e(e,t){for(var n=0;n-1?C.default.setLevel("trace"):C.default.setLevel("warn")}();var w=function(){var e=f.default.getPersistedData(),t=new c.default(e);return f.default.watch(t),C.default.debug("appState",t),t}();y.default.initialize(h.default,w),function(){var e=_.default.getArgs(window.location.hash),t=["help","1|2&6","1<<0x2a","2 4 8 16 32"];e.commands.length>0&&(t=e.commands),t.forEach(h.default.execute.bind(h.default))}();var x=i.default.createElement(g.default,{appState:w});u.default.render(x,document.getElementById("root")),C.default.debug("started")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default={plainObject:function(e){return"object"==(void 0===e?"undefined":r(e))&&e instanceof Object},aFunction:function(e){return"function"==typeof e},string:function(e){return"string"==typeof e},regex:function(e){return"object"==(void 0===e?"undefined":r(e))&&this.constructedFrom(RegExp)},constructedFrom:function(e,t){return e instanceof t},htmlElement:function(e){return e instanceof HtmlElement},array:function(e){return e instanceof Array},number:function(e){return"number"==typeof e&&!isNaN(e)}}}]); +function r(e,t){if(!i.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var a=document.createElement("div");a.setAttribute(n,"return;"),r="function"==typeof a[n]}return!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var o,i=n(5);i.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=r},function(e,t,n){"use strict";function r(e,t){var n=null===e||!1===e,r=null===t||!1===t;if(n||r)return n===r;var i=void 0===e?"undefined":o(e),a=void 0===t?"undefined":o(t);return"string"===i||"number"===i?"string"===a||"number"===a:"object"===a&&e.type===t.type&&e.key===t.key}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.exports=r},function(e,t,n){"use strict";var r=(n(3),n(7)),o=(n(1),r);e.exports=o},function(e,t,n){"use strict";function r(e,t,n){this.props=e,this.context=t,this.refs=u,this.updater=n||a}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=n(18),a=n(48),u=(n(80),n(20));n(0),n(1);r.prototype.isReactComponent={},r.prototype.setState=function(e,t){"object"!==(void 0===e?"undefined":o(e))&&"function"!=typeof e&&null!=e&&i("85"),this.updater.enqueueSetState(this,e),t&&this.updater.enqueueCallback(this,t,"setState")},r.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this),e&&this.updater.enqueueCallback(this,e,"forceUpdate")};e.exports=r},function(e,t,n){"use strict";var r=(n(1),{isMounted:function(e){return!1},enqueueCallback:function(e,t){},enqueueForceUpdate:function(e){},enqueueReplaceState:function(e,t){},enqueueSetState:function(e,t){}});e.exports=r},function(module,exports,__webpack_require__){"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var n=0;n=0;n--)if(!0===this.factories[n].canCreate(t))return!0;return!1},parse:function(e){for(var t,n=e.replace(/^\s+|\s+$/,""),r=0,o=this.factories.length;r0&&n.push(new Operand(e.trim()))}),new ListOfNumbersExpression(r,n)}}),expression.addFactory({regex:/^(~)(-?(?:\d+|0x[\d,a-f]+))$/,canCreate:function(e){return this.regex.test(e)},create:function(e){var t=this.regex.exec(e),n=new Operand(t[2]);return new SingleOperandExpression(t.input,n,t[1])}}),expression.addFactory({fullRegex:/^((<<|>>|>>>|\||\&|\^)?(-?((?:\d+(?!x))|(?:0x[\d,a-f]+))))+$/,regex:/(<<|>>|>>>|\||\&|\^)?(-?((?:\d+(?!x))|(?:0x[\d,a-f]+)))/g,canCreate:function(e){return this.fullRegex.lastIndex=0,this.fullRegex.test(this.normalizeString(e))},create:function(e){for(var t,n=[],r=this.normalizeString(e);null!=(t=this.regex.exec(r));)n.push(this.parseMatch(t));return new MultipleOperandsExpression(r,n)},parseMatch:function(e){var t=e[0],n=e[1],r=e[2];return null==n?new Operand(r):new SingleOperandExpression(t,new Operand(r),n)},normalizeString:function(e){return e.replace(/\s+/g,"")}});var Operand=exports.Operand=function(){function e(t){_classCallCheck(this,e),this.input=t,this.value=parseInt(t),this.hex=e.toHexString(this.value.toString(16)),this.dec=this.value.toString(10),this.bin=this.value<0?(this.value>>>0).toString(2):this.value.toString(2),this.kind=this.input.indexOf("0x")>-1?"hex":"dec",this.other="dec"==this.kind?this.hex:this.dec,this.lengthInBits=e.getBitLength(this.value)}return _createClass(e,[{key:"getLengthInBits",value:function(){return this.value<0?32:Math.floor(Math.log(this.value)/Math.log(2))+1}},{key:"getOtherKind",value:function(e){switch(e||this.kind){case"dec":return"hex";case"hex":return"dec";default:throw new Error(e+" kind doesn't have opposite kind")}}},{key:"toString",value:function(){return this.input}},{key:"setValue",value:function(t){console.log("Before "+t,this),this.value=t,this.bin=e.toKindString(this.value,"bin"),this.dec=e.toKindString(this.value,"dec"),this.hex=e.toKindString(this.value,"hex"),this.other=e.toKindString(this.value,this.getOtherKind()),this.input=e.toKindString(this.value,this.kind),console.log("After "+t,this)}}],[{key:"getBitLength",value:function(e){return Math.floor(Math.log(e)/Math.log(2))+1}},{key:"getBase",value:function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}}},{key:"create",value:function(t,n){var r=t.toString(e.getBase(n));return"hex"==n&&(r=e.toHexString(r)),new e(r)}},{key:"toKindString",value:function(e,t){switch(t){case"hex":var n=Math.abs(e).toString(16);return e>=0?"0x"+n:"-0x"+n;case"bin":return(e>>>0).toString(2);case"dec":return e.toString(10);default:throw new Error("Unexpected kind: "+t)}}},{key:"toHexString",value:function(e){return 0==e.indexOf("-")?"-0x"+e.substr(1):"0x"+e}}]),e}(),SingleOperandExpression=exports.SingleOperandExpression=function(){function SingleOperandExpression(e,t,n){_classCallCheck(this,SingleOperandExpression),this.expressionString=e,this.operand1=t,this.sign=n}return _createClass(SingleOperandExpression,[{key:"apply",value:function apply(value){var str="";return str="~"==this.sign?"~"+this.operand1.value:value+this.sign+this.operand1.value,Operand.create(eval(str),this.operand1.kind)}},{key:"isShiftExpression",value:function(){return this.sign.indexOf("<")>=0||this.sign.indexOf(">")>=0}},{key:"toString",value:function(){return this.sign+this.operand1.toString()}}]),SingleOperandExpression}(),TwoOperandExpression=exports.TwoOperandExpression=function e(t,n,r,o){_classCallCheck(this,e),this.expressionString=t,this.operand1=n,this.operand2=r,this.sign=o},MultipleOperandsExpression=exports.MultipleOperandsExpression=function e(t,n){_classCallCheck(this,e),this.expressionString=t,this.expressions=n},ListOfNumbersExpression=exports.ListOfNumbersExpression=function(){function e(t,n){_classCallCheck(this,e),this.expressionString=t,this.numbers=n,this.maxBitsLegnth=n.map(function(e){return e.lengthInBits}).reduce(function(e,t){return e>=t?e:t},0)}return _createClass(e,[{key:"toString",value:function(){return this.numbers.map(function(e){return e.value.toString()}).join(" ")}}]),e}(),Expression=exports.Expression=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"toString",value:function(){return this.expressionString?"Expression: "+this.expressionString:this.toString()}}]),e}(),parser=exports.parser=expression,Parser=exports.Parser=function(){function e(t,n){_classCallCheck(this,e),this.input=t,this.pos=n||0,this.buffer=[]}return _createClass(e,[{key:"parse",value:function(){for(console.log(this.input.length);this.pos=0&&t<=p.levels.SILENT))throw"log.setLevel() called with invalid level: "+t;if(c=t,!1!==n&&a(t),r.call(p,t,e),("undefined"==typeof console?"undefined":i(console))===s&&t>2' or 'help' "})}},{key:"onKeyUp",value:function(e){var t=e.target;if(13==e.keyCode&&0!=t.value.trim().length){var n=t.value;this.history.unshift(n),this.historyIndex=-1,t.value="",p.default.execute(n),console.log(this.history)}}},{key:"onKeyDown",value:function(e){if(38==e.keyCode){var t=this.historyIndex+1;return this.history.length>t&&(e.target.value=this.history[t],this.historyIndex=t),void e.preventDefault()}40==e.keyCode&&(this.historyIndex>0&&(e.target.value=this.history[--this.historyIndex]),e.preventDefault())}}]),t}(l.default.Component);t.default=f},function(e,t,n){"use strict";var r=n(7),o={listen:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!1),{remove:function(){e.removeEventListener(t,n,!1)}}):e.attachEvent?(e.attachEvent("on"+t,n),{remove:function(){e.detachEvent("on"+t,n)}}):void 0},capture:function(e,t,n){return e.addEventListener?(e.addEventListener(t,n,!0),{remove:function(){e.removeEventListener(t,n,!0)}}):{remove:r}},registerDefault:function(){}};e.exports=o},function(e,t,n){"use strict";function r(e){try{e.focus()}catch(e){}}e.exports=r},function(e,t,n){"use strict";function r(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}e.exports=r},function(e,t,n){"use strict";function r(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function i(e){if(p===setTimeout)return setTimeout(e,0);if((p===r||!p)&&setTimeout)return p=setTimeout,setTimeout(e,0);try{return p(e,0)}catch(t){try{return p.call(null,e,0)}catch(t){return p.call(this,e,0)}}}function a(e){if(f===clearTimeout)return clearTimeout(e);if((f===o||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function u(){y&&h&&(y=!1,h.length?m=h.concat(m):v=-1,m.length&&s())}function s(){if(!y){var e=i(u);y=!0;for(var t=m.length;t;){for(h=m,m=[];++v1)for(var n=1;n.":"function"==typeof t?" Instead of passing a class like Foo, pass React.createElement(Foo) or .":null!=t&&void 0!==t.props?" This may be caused by unintentionally loading two independent copies of React.":"");var a,u=y.createElement(U,{child:t});if(e){var s=C.get(e);a=s._processChildContext(s._context)}else a=O;var c=f(n);if(c){var p=c._currentElement,h=p.props.child;if(N(h,t)){var m=c._renderedComponent.getPublicInstance(),v=r&&function(){r.call(m)};return B._updateRootComponent(c,u,a,n,v),m}B.unmountComponentAtNode(n)}var g=o(n),b=g&&!!i(g),_=l(n),E=b&&!c&&!_,w=B._renderNewRootComponent(u,n,E,a)._renderedComponent.getPublicInstance();return r&&r.call(w),w},render:function(e,t,n){return B._renderSubtreeIntoContainer(null,e,t,n)},unmountComponentAtNode:function(e){c(e)||d("40");var t=f(e);if(!t){l(e),1===e.nodeType&&e.hasAttribute(I);return!1}return delete j[t._instance.rootID],k.batchedUpdates(s,t,e,!1),!0},_mountImageIntoNode:function(e,t,n,i,a){if(c(t)||d("41"),i){var u=o(t);if(w.canReuseMarkup(e,u))return void g.precacheNode(n,u);var s=u.getAttribute(w.CHECKSUM_ATTR_NAME);u.removeAttribute(w.CHECKSUM_ATTR_NAME);var l=u.outerHTML;u.setAttribute(w.CHECKSUM_ATTR_NAME,s);var p=e,f=r(p,l),m=" (client) "+p.substring(f-20,f+20)+"\n (server) "+l.substring(f-20,f+20);t.nodeType===A&&d("42",m)}if(t.nodeType===A&&d("43"),a.useCreateElement){for(;t.lastChild;)t.removeChild(t.lastChild);h.insertTreeBefore(t,e,null)}else T(t,e),g.precacheNode(n,t.firstChild)}};e.exports=B},function(e,t,n){"use strict";var r=n(2),o=n(16),i=(n(0),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(e){return null===e||!1===e?i.EMPTY:o.isValidElement(e)?"function"==typeof e.type?i.COMPOSITE:i.HOST:void r("26",e)}});e.exports=i},function(e,t,n){"use strict";var r={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(e){r.currentScrollLeft=e.x,r.currentScrollTop=e.y}};e.exports=r},function(e,t,n){"use strict";function r(e,t){return null==t&&o("30"),null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}var o=n(2);n(0);e.exports=r},function(e,t,n){"use strict";function r(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}e.exports=r},function(e,t,n){"use strict";function r(e){for(var t;(t=e._renderedNodeType)===o.COMPOSITE;)e=e._renderedComponent;return t===o.HOST?e._renderedComponent:t===o.EMPTY?null:void 0}var o=n(68);e.exports=r},function(e,t,n){"use strict";function r(){return!i&&o.canUseDOM&&(i="textContent"in document.documentElement?"textContent":"innerText"),i}var o=n(5),i=null;e.exports=r},function(e,t,n){"use strict";function r(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function o(e){return"function"==typeof e&&void 0!==e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}function i(e,t){var n;if(null===e||!1===e)n=c.create(i);else if("object"===(void 0===e?"undefined":a(e))){var s=e,l=s.type;if("function"!=typeof l&&"string"!=typeof l){var d="";d+=r(s._owner),u("130",null==l?l:void 0===l?"undefined":a(l),d)}"string"==typeof s.type?n=p.createInternalComponent(s):o(s.type)?(n=new s.type(s),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new f(s)}else"string"==typeof e||"number"==typeof e?n=p.createInstanceForText(e):u("131",void 0===e?"undefined":a(e));return n._mountIndex=0,n._mountImage=null,n}var a="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},u=n(2),s=n(3),l=n(123),c=n(63),p=n(65),f=(n(184),n(0),n(1),function(e){this.construct(e)});s(f.prototype,l,{_instantiateReactComponent:i}),e.exports=i},function(e,t,n){"use strict";function r(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!o[e.type]:"textarea"===t}var o={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};e.exports=r},function(e,t,n){"use strict";var r=n(5),o=n(28),i=n(29),a=function(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(a=function(e,t){if(3===e.nodeType)return void(e.nodeValue=t);i(e,o(t))})),e.exports=a},function(e,t,n){"use strict";function r(e,t){return e&&"object"===(void 0===e?"undefined":a(e))&&null!=e.key?c.escape(e.key):t.toString(36)}function o(e,t,n,i){var d=void 0===e?"undefined":a(e);if("undefined"!==d&&"boolean"!==d||(e=null),null===e||"string"===d||"number"===d||"object"===d&&e.$$typeof===s)return n(i,e,""===t?p+r(e,0):t),1;var h,m,y=0,v=""===t?p:t+f;if(Array.isArray(e))for(var g=0;g0;)t.push(s.default.createElement("span",{key:n++,className:"byte"},e.splice(0,8)));return t}}]),t}(s.default.Component);t.default=l},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},n=t.emphasizeBytes,o=void 0!==n&&n;r(this,e),this.emphasizeBytes=o,this.items=[],this.maxNumberOfBits=0}return o(e,[{key:"addOperand",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"",label:e.toString(),bin:e.bin,other:e.other,css:""})}},{key:"addExpression",value:function(e){this.maxNumberOfBits=Math.max(e.operand1.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign,label:e.operand1.toString(),bin:e.operand1.bin,other:e.operand1.other,css:""})}},{key:"addShiftExpressionResult",value:function(e,t){this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign+e.operand1.input,label:t.toString(),bin:t.bin,other:t.other,css:"expression-result"})}},{key:"addExpressionResult",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"=",label:e.toString(),bin:e.bin,other:e.other,css:"expression-result"})}}],[{key:"buildMultiple",value:function(t,n){var r,o=t.expressions[0],i=1,a=t.expressions.length,u=new e(n);for(u.addOperand(o);ir.length;)r.unshift(n);return r.join("")}}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(19),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(19),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e,n){r(this,t);var i=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return i.error=n,i}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(19),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e,n){r(this,t);var i=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return i.expression=n,i}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(19),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(19),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e){r(this,t);var n=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.message="Sorry, i don''t know what "+e+" is :(",n}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=n(19),u=function(e){return e&&e.__esModule?e:{default:e}}(a),s=function(e){function t(e){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return i(t,e),t}(u.default);t.default=s},function(e,t,n){"use strict";e.exports=n(124)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){for(var n=0;nthis.persistedVersion}return o(e,[{key:"addCommandResult",value:function(e){this.commandResults.unshift(e),this.triggerChanged()}},{key:"clearCommmandResults",value:function(){this.commandResults=[],this.triggerChanged()}},{key:"toggleEmphasizeBytes",value:function(){this.emphasizeBytes=!this.emphasizeBytes,this.triggerChanged()}},{key:"onChange",value:function(e){this.handlers.push(e)}},{key:"triggerChanged",value:function(){var e=!0,t=!1,n=void 0;try{for(var r,o=this.handlers[Symbol.iterator]();!(e=(r=o.next()).done);e=!0){(0,r.value)()}}catch(e){t=!0,n=e}finally{try{!e&&o.return&&o.return()}finally{if(t)throw n}}}},{key:"setUiTheme",value:function(e){this.uiTheme=e,this.triggerChanged()}},{key:"getPersistData",value:function(){return{emphasizeBytes:this.emphasizeBytes,uiTheme:this.uiTheme,version:this.version}}}]),e}();t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={getPersistedData:function(){var e=window.localStorage.getItem("AppState");if(!e)return{};try{return JSON.parse(e)}catch(t){return console.error("Failed to parse AppState json. Json Value: \n"+e,t),{}}},watch:function(e){var t=this;e.onChange(function(){return t.persistData(e)})},persistData:function(e){localStorage.setItem("AppState",JSON.stringify(e.getPersistData()))}}},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(87),i=r(o),a=n(84),u=r(a),s=n(88),l=r(s),c=n(86),p=r(c),f=n(85),d=r(f),h=n(89),m=r(h),y=n(49),v=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(y);t.default={initialize:function(e,t){e.command({canHandle:function(e){return v.parser.canParse(e)},handle:function(e){var n=v.parser.parse(e.input);t.addCommandResult(new p.default(e.input,n))}}),e.commands({help:function(e){t.addCommandResult(new i.default(e.input))},clear:function(){t.clearCommmandResults()},em:function(){t.toggleEmphasizeBytes()},dark:function(){t.setUiTheme("dark")},light:function(){t.setUiTheme("light")},about:function(e){t.addCommandResult(new u.default(e.input))},whatsnew:function(e){t.addCommandResult(new m.default(e.input))},"-notrack":function(){}}),e.command({canHandle:function(){return!0},handle:function(e){return t.addCommandResult(new l.default(e.input))}}),e.onError(function(e,n){return t.addCommandResult(new d.default(e,n))})}}},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 u=function(){function e(e,t){for(var n=0;n0&&t.push(e)}):t.push(e),t}Object.defineProperty(t,"__esModule",{value:!0}),t.default={encodeHash:function(e){return encodeURI(e.trim().replace(/\s/g,","))},decodeHash:function(e){return decodeURI(e).replace(/^\#/,"").replace(/,/g," ")},getArgs:function(e){var t=this.decodeHash(e),n={commands:[]};return r(t).forEach(function(e){if(/^\-[a-zA-Z]+$/.test(e))return void(n[e.substr(1)]=!0);n.commands.push(e)}),Object.freeze(n)}}},function(e,t,n){"use strict";function r(e){return e.replace(o,function(e,t){return t.toUpperCase()})}var o=/-(.)/g;e.exports=r},function(e,t,n){"use strict";function r(e){return o(e.replace(i,"ms-"))}var o=n(96),i=/^-ms-/;e.exports=r},function(e,t,n){"use strict";function r(e,t){return!(!e||!t)&&(e===t||!o(e)&&(o(t)?r(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}var o=n(106);e.exports=r},function(e,t,n){"use strict";function r(e){var t=e.length;if((Array.isArray(e)||"object"!==(void 0===e?"undefined":a(e))&&"function"!=typeof e)&&u(!1),"number"!=typeof t&&u(!1),0===t||t-1 in e||u(!1),"function"==typeof e.callee&&u(!1),e.hasOwnProperty)try{return Array.prototype.slice.call(e)}catch(e){}for(var n=Array(t),r=0;r":"<"+e+">",u[e]=!a.firstChild),u[e]?f[e]:null}var o=n(5),i=n(0),a=o.canUseDOM?document.createElement("div"):null,u={},s=[1,'"],l=[1,"","
"],c=[3,"","
"],p=[1,'',""],f={"*":[1,"?
","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:s,option:s,caption:l,colgroup:l,tbody:l,tfoot:l,thead:l,td:c,th:c};["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"].forEach(function(e){f[e]=p,u[e]=!0}),e.exports=r},function(e,t,n){"use strict";function r(e){return e.Window&&e instanceof e.Window?{x:e.pageXOffset||e.document.documentElement.scrollLeft,y:e.pageYOffset||e.document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}e.exports=r},function(e,t,n){"use strict";function r(e){return e.replace(o,"-$1").toLowerCase()}var o=/([A-Z])/g;e.exports=r},function(e,t,n){"use strict";function r(e){return o(e).replace(i,"-ms-")}var o=n(103),i=/^ms-/;e.exports=r},function(e,t,n){"use strict";function r(e){var t=e?e.ownerDocument||e:document,n=t.defaultView||window;return!(!e||!("function"==typeof n.Node?e instanceof n.Node:"object"===(void 0===e?"undefined":o(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.exports=r},function(e,t,n){"use strict";function r(e){return o(e)&&3==e.nodeType}var o=n(105);e.exports=r},function(e,t,n){"use strict";function r(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}e.exports=r},function(e,t,n){"use strict";function r(e,t,n,r,o){}"function"==typeof Symbol&&Symbol.iterator;e.exports=r},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(7),i=n(0),a=n(1),u=n(110),s=n(108);e.exports=function(e,t){function n(e){var t=e&&(S&&e[S]||e[k]);if("function"==typeof t)return t}function l(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t}function c(e){this.message=e,this.stack=""}function p(e){function n(n,r,o,a,s,l,p){if(a=a||O,l=l||o,p!==u)if(t)i(!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;return null==r[o]?n?new c(null===r[o]?"The "+s+" `"+l+"` is marked as required in `"+a+"`, but its value is `null`.":"The "+s+" `"+l+"` is marked as required in `"+a+"`, but its value is `undefined`."):null:e(r,o,a,s,l)}var r=n.bind(null,!1);return r.isRequired=n.bind(null,!0),r}function f(e){function t(t,n,r,o,i,a){var u=t[n];if(E(u)!==e)return new c("Invalid "+o+" `"+i+"` of type `"+C(u)+"` supplied to `"+r+"`, expected `"+e+"`.");return null}return p(t)}function d(e){function t(t,n,r,o,i){if("function"!=typeof e)return new c("Property `"+i+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var a=t[n];if(!Array.isArray(a)){return new c("Invalid "+o+" `"+i+"` of type `"+E(a)+"` supplied to `"+r+"`, expected an array.")}for(var s=0;s8&&E<=11),x=32,S=String.fromCharCode(x),k={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},O=!1,P=null,T={eventTypes:k,extractEvents:function(e,t,n,r){return[s(e,t,n,r),p(e,t,n,r)]}};e.exports=T},function(e,t,n){"use strict";var r=n(58),o=n(5),i=(n(8),n(97),n(165)),a=n(104),u=n(107),s=(n(1),u(function(e){return a(e)})),l=!1,c="cssFloat";if(o.canUseDOM){var p=document.createElement("div").style;try{p.font=""}catch(e){l=!0}void 0===document.documentElement.style.cssFloat&&(c="styleFloat")}var f={createMarkupForStyles:function(e,t){var n="";for(var r in e)if(e.hasOwnProperty(r)){var o=e[r];null!=o&&(n+=s(r)+":",n+=i(r,o,t)+";")}return n||null},setValueForStyles:function(e,t,n){var o=e.style;for(var a in t)if(t.hasOwnProperty(a)){var u=i(a,t[a],n);if("float"!==a&&"cssFloat"!==a||(a=c),u)o[a]=u;else{var s=l&&r.shorthandPropertyExpansions[a];if(s)for(var p in s)o[p]="";else o[a]=""}}}};e.exports=f},function(e,t,n){"use strict";function r(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}function o(e){var t=x.getPooled(P.change,N,e,S(e));_.accumulateTwoPhaseDispatches(t),w.batchedUpdates(i,t)}function i(e){b.enqueueEvents(e),b.processEventQueue(!1)}function a(e,t){T=e,N=t,T.attachEvent("onchange",o)}function u(){T&&(T.detachEvent("onchange",o),T=null,N=null)}function s(e,t){if("topChange"===e)return t}function l(e,t,n){"topFocus"===e?(u(),a(t,n)):"topBlur"===e&&u()}function c(e,t){T=e,N=t,M=e.value,I=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(T,"value",D),T.attachEvent?T.attachEvent("onpropertychange",f):T.addEventListener("propertychange",f,!1)}function p(){T&&(delete T.value,T.detachEvent?T.detachEvent("onpropertychange",f):T.removeEventListener("propertychange",f,!1),T=null,N=null,M=null,I=null)}function f(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==M&&(M=t,o(e))}}function d(e,t){if("topInput"===e)return t}function h(e,t,n){"topFocus"===e?(p(),c(t,n)):"topBlur"===e&&p()}function m(e,t){if(("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"===e)&&T&&T.value!==M)return M=T.value,N}function y(e){return e.nodeName&&"input"===e.nodeName.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}function v(e,t){if("topClick"===e)return t}function g(e,t){if(null!=e){var n=e._wrapperState||t._wrapperState;if(n&&n.controlled&&"number"===t.type){var r=""+t.value;t.getAttribute("value")!==r&&t.setAttribute("value",r)}}}var b=n(21),_=n(22),E=n(5),C=n(4),w=n(9),x=n(10),S=n(43),k=n(44),O=n(75),P={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},T=null,N=null,M=null,I=null,R=!1;E.canUseDOM&&(R=k("change")&&(!document.documentMode||document.documentMode>8));var A=!1;E.canUseDOM&&(A=k("input")&&(!document.documentMode||document.documentMode>11));var D={get:function(){return I.get.call(this)},set:function(e){M=""+e,I.set.call(this,e)}},j={eventTypes:P,extractEvents:function(e,t,n,o){var i,a,u=t?C.getNodeFromInstance(t):window;if(r(u)?R?i=s:a=l:O(u)?A?i=d:(i=m,a=h):y(u)&&(i=v),i){var c=i(e,t);if(c){var p=x.getPooled(P.change,c,n,o);return p.type="change",_.accumulateTwoPhaseDispatches(p),p}}a&&a(e,u,t),"topBlur"===e&&g(t,u)}};e.exports=j},function(e,t,n){"use strict";var r=n(2),o=n(13),i=n(5),a=n(100),u=n(7),s=(n(0),{dangerouslyReplaceNodeWithMarkup:function(e,t){if(i.canUseDOM||r("56"),t||r("57"),"HTML"===e.nodeName&&r("58"),"string"==typeof t){var n=a(t,u)[0];e.parentNode.replaceChild(n,e)}else o.replaceChildWithTree(e,t)}});e.exports=s},function(e,t,n){"use strict";var r=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];e.exports=r},function(e,t,n){"use strict";var r=n(22),o=n(4),i=n(26),a={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},u={eventTypes:a,extractEvents:function(e,t,n,u){if("topMouseOver"===e&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==e&&"topMouseOver"!==e)return null;var s;if(u.window===u)s=u;else{var l=u.ownerDocument;s=l?l.defaultView||l.parentWindow:window}var c,p;if("topMouseOut"===e){c=t;var f=n.relatedTarget||n.toElement;p=f?o.getClosestInstanceFromNode(f):null}else c=null,p=t;if(c===p)return null;var d=null==c?s:o.getNodeFromInstance(c),h=null==p?s:o.getNodeFromInstance(p),m=i.getPooled(a.mouseLeave,c,n,u);m.type="mouseleave",m.target=d,m.relatedTarget=h;var y=i.getPooled(a.mouseEnter,p,n,u);return y.type="mouseenter",y.target=h,y.relatedTarget=d,r.accumulateEnterLeaveDispatches(m,y,c,p),[m,y]}};e.exports=u},function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var o=n(3),i=n(12),a=n(73);o(r.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[a()]},getData:function(){if(this._fallbackText)return this._fallbackText;var e,t,n=this._startText,r=n.length,o=this.getText(),i=o.length;for(e=0;e1?1-t:void 0;return this._fallbackText=o.slice(e,u),this._fallbackText}}),i.addPoolingTo(r),e.exports=r},function(e,t,n){"use strict";var r=n(14),o=r.injection.MUST_USE_PROPERTY,i=r.injection.HAS_BOOLEAN_VALUE,a=r.injection.HAS_NUMERIC_VALUE,u=r.injection.HAS_POSITIVE_NUMERIC_VALUE,s=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,l={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:i,allowTransparency:0,alt:0,as:0,async:i,autoComplete:0,autoPlay:i,capture:i,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:o|i,cite:0,classID:0,className:0,cols:u,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:i,coords:0,crossOrigin:0,data:0,dateTime:0,default:i,defer:i,dir:0,disabled:i,download:s,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:i,formTarget:0,frameBorder:0,headers:0,height:0,hidden:i,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:i,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:o|i,muted:o|i,name:0,nonce:0,noValidate:i,open:i,optimum:0,pattern:0,placeholder:0,playsInline:i,poster:0,preload:0,profile:0,radioGroup:0,readOnly:i,referrerPolicy:0,rel:0,required:i,reversed:i,role:0,rows:u,rowSpan:a,sandbox:0,scope:0,scoped:i,scrolling:0,seamless:i,selected:o|i,shape:0,size:u,sizes:0,span:u,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:i,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{},DOMMutationMethods:{value:function(e,t){if(null==t)return e.removeAttribute("value");"number"!==e.type||!1===e.hasAttribute("value")?e.setAttribute("value",""+t):e.validity&&!e.validity.badInput&&e.ownerDocument.activeElement!==e&&e.setAttribute("value",""+t)}}};e.exports=l},function(e,t,n){"use strict";(function(t){function r(e,t,n,r){var o=void 0===e[n];null!=t&&o&&(e[n]=i(t,!0))}var o=n(15),i=n(74),a=(n(35),n(45)),u=n(77);n(1);void 0!==t&&t.env;var s={instantiateChildren:function(e,t,n,o){if(null==e)return null;var i={};return u(e,r,i),i},updateChildren:function(e,t,n,r,u,s,l,c,p){if(t||e){var f,d;for(f in t)if(t.hasOwnProperty(f)){d=e&&e[f];var h=d&&d._currentElement,m=t[f];if(null!=d&&a(h,m))o.receiveComponent(d,m,u,c),t[f]=d;else{d&&(r[f]=o.getHostNode(d),o.unmountComponent(d,!1));var y=i(m,!0);t[f]=y;var v=o.mountComponent(y,u,s,l,c,p);n.push(v)}}for(f in e)!e.hasOwnProperty(f)||t&&t.hasOwnProperty(f)||(d=e[f],r[f]=o.getHostNode(d),o.unmountComponent(d,!1))}},unmountChildren:function(e,t){for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];o.unmountComponent(r,t)}}};e.exports=s}).call(t,n(56))},function(e,t,n){"use strict";var r=n(31),o=n(129),i={processChildrenUpdates:o.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};e.exports=i},function(e,t,n){"use strict";function r(e){}function o(e){return!(!e.prototype||!e.prototype.isReactComponent)}function i(e){return!(!e.prototype||!e.prototype.isPureReactComponent)}var a="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},u=n(2),s=n(3),l=n(16),c=n(37),p=n(11),f=n(38),d=n(23),h=(n(8),n(68)),m=n(15),y=n(20),v=(n(0),n(30)),g=n(45),b=(n(1),{ImpureClass:0,PureClass:1,StatelessFunctional:2});r.prototype.render=function(){var e=d.get(this)._currentElement.type,t=e(this.props,this.context,this.updater);return t};var _=1,E={construct:function(e){this._currentElement=e,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1},mountComponent:function(e,t,n,s){this._context=s,this._mountOrder=_++,this._hostParent=t,this._hostContainerInfo=n;var c,p=this._currentElement.props,f=this._processContext(s),h=this._currentElement.type,m=e.getUpdateQueue(),v=o(h),g=this._constructComponent(v,p,f,m);v||null!=g&&null!=g.render?i(h)?this._compositeType=b.PureClass:this._compositeType=b.ImpureClass:(c=g,null===g||!1===g||l.isValidElement(g)||u("105",h.displayName||h.name||"Component"),g=new r(h),this._compositeType=b.StatelessFunctional);g.props=p,g.context=f,g.refs=y,g.updater=m,this._instance=g,d.set(g,this);var E=g.state;void 0===E&&(g.state=E=null),("object"!==(void 0===E?"undefined":a(E))||Array.isArray(E))&&u("106",this.getName()||"ReactCompositeComponent"),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var C;return C=g.unstable_handleError?this.performInitialMountWithErrorHandling(c,t,n,e,s):this.performInitialMount(c,t,n,e,s),g.componentDidMount&&e.getReactMountReady().enqueue(g.componentDidMount,g),C},_constructComponent:function(e,t,n,r){return this._constructComponentWithoutOwner(e,t,n,r)},_constructComponentWithoutOwner:function(e,t,n,r){var o=this._currentElement.type;return e?new o(t,n,r):o(t,n,r)},performInitialMountWithErrorHandling:function(e,t,n,r,o){var i,a=r.checkpoint();try{i=this.performInitialMount(e,t,n,r,o)}catch(u){r.rollback(a),this._instance.unstable_handleError(u),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),a=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(a),i=this.performInitialMount(e,t,n,r,o)}return i},performInitialMount:function(e,t,n,r,o){var i=this._instance,a=0;i.componentWillMount&&(i.componentWillMount(),this._pendingStateQueue&&(i.state=this._processPendingState(i.props,i.context))),void 0===e&&(e=this._renderValidatedComponent());var u=h.getType(e);this._renderedNodeType=u;var s=this._instantiateReactComponent(e,u!==h.EMPTY);this._renderedComponent=s;var l=m.mountComponent(s,r,t,n,this._processChildContext(o),a);return l},getHostNode:function(){return m.getHostNode(this._renderedComponent)},unmountComponent:function(e){if(this._renderedComponent){var t=this._instance;if(t.componentWillUnmount&&!t._calledComponentWillUnmount)if(t._calledComponentWillUnmount=!0,e){var n=this.getName()+".componentWillUnmount()";f.invokeGuardedCallback(n,t.componentWillUnmount.bind(t))}else t.componentWillUnmount();this._renderedComponent&&(m.unmountComponent(this._renderedComponent,e),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,d.remove(t)}},_maskContext:function(e){var t=this._currentElement.type,n=t.contextTypes;if(!n)return y;var r={};for(var o in n)r[o]=e[o];return r},_processContext:function(e){var t=this._maskContext(e);return t},_processChildContext:function(e){var t,n=this._currentElement.type,r=this._instance;if(r.getChildContext&&(t=r.getChildContext()),t){"object"!==a(n.childContextTypes)&&u("107",this.getName()||"ReactCompositeComponent");for(var o in t)o in n.childContextTypes||u("108",this.getName()||"ReactCompositeComponent",o);return s({},e,t)}return e},_checkContextTypes:function(e,t,n){},receiveComponent:function(e,t,n){var r=this._currentElement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement?m.receiveComponent(this,this._pendingElement,e,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(e,t,n,r,o){var i=this._instance;null==i&&u("136",this.getName()||"ReactCompositeComponent");var a,s=!1;this._context===o?a=i.context:(a=this._processContext(o),s=!0);var l=t.props,c=n.props;t!==n&&(s=!0),s&&i.componentWillReceiveProps&&i.componentWillReceiveProps(c,a);var p=this._processPendingState(c,a),f=!0;this._pendingForceUpdate||(i.shouldComponentUpdate?f=i.shouldComponentUpdate(c,p,a):this._compositeType===b.PureClass&&(f=!v(l,c)||!v(i.state,p))),this._updateBatchNumber=null,f?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,c,p,a,e,o)):(this._currentElement=n,this._context=o,i.props=c,i.state=p,i.context=a)},_processPendingState:function(e,t){var n=this._instance,r=this._pendingStateQueue,o=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(o&&1===r.length)return r[0];for(var i=s({},o?r[0]:n.state),a=o?1:0;a=0||null!=t.is}function h(e){var t=e.type;f(t),this._currentElement=e,this._tag=t.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var m="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},y=n(2),v=n(3),g=n(112),b=n(114),_=n(13),E=n(32),C=n(14),w=n(60),x=n(21),S=n(33),k=n(25),O=n(61),P=n(4),T=n(130),N=n(131),M=n(62),I=n(134),R=(n(8),n(143)),A=n(148),D=(n(7),n(28)),j=(n(0),n(44),n(30),n(46),n(1),O),L=x.deleteListener,U=P.getNodeFromInstance,B=k.listenTo,F=S.registrationNameModules,V={string:!0,number:!0},H="__html",W={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},z=11,q={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},K={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},Y={listing:!0,pre:!0,textarea:!0},X=v({menuitem:!0},K),G=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,$={},Q={}.hasOwnProperty,Z=1;h.displayName="ReactDOMComponent",h.Mixin={mountComponent:function(e,t,n,r){this._rootNodeID=Z++,this._domID=n._idCounter++,this._hostParent=t,this._hostContainerInfo=n;var i=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},e.getReactMountReady().enqueue(c,this);break;case"input":T.mountWrapper(this,i,t),i=T.getHostProps(this,i),e.getReactMountReady().enqueue(c,this);break;case"option":N.mountWrapper(this,i,t),i=N.getHostProps(this,i);break;case"select":M.mountWrapper(this,i,t),i=M.getHostProps(this,i),e.getReactMountReady().enqueue(c,this);break;case"textarea":I.mountWrapper(this,i,t),i=I.getHostProps(this,i),e.getReactMountReady().enqueue(c,this)}o(this,i);var a,p;null!=t?(a=t._namespaceURI,p=t._tag):n._tag&&(a=n._namespaceURI,p=n._tag),(null==a||a===E.svg&&"foreignobject"===p)&&(a=E.html),a===E.html&&("svg"===this._tag?a=E.svg:"math"===this._tag&&(a=E.mathml)),this._namespaceURI=a;var f;if(e.useCreateElement){var d,h=n._ownerDocument;if(a===E.html)if("script"===this._tag){var m=h.createElement("div"),y=this._currentElement.type;m.innerHTML="<"+y+">",d=m.removeChild(m.firstChild)}else d=i.is?h.createElement(this._currentElement.type,i.is):h.createElement(this._currentElement.type);else d=h.createElementNS(a,this._currentElement.type);P.precacheNode(this,d),this._flags|=j.hasCachedChildNodes,this._hostParent||w.setAttributeForRoot(d),this._updateDOMProperties(null,i,e);var v=_(d);this._createInitialChildren(e,i,r,v),f=v}else{var b=this._createOpenTagMarkupAndPutListeners(e,i),C=this._createContentMarkup(e,i,r);f=!C&&K[this._tag]?b+"/>":b+">"+C+""}switch(this._tag){case"input":e.getReactMountReady().enqueue(u,this),i.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(s,this),i.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"select":case"button":i.autoFocus&&e.getReactMountReady().enqueue(g.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(l,this)}return f},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];if(null!=o)if(F.hasOwnProperty(r))o&&i(this,r,o,e);else{"style"===r&&(o&&(o=this._previousStyleCopy=v({},t.style)),o=b.createMarkupForStyles(o,this));var a=null;null!=this._tag&&d(this._tag,t)?W.hasOwnProperty(r)||(a=w.createMarkupForCustomAttribute(r,o)):a=w.createMarkupForProperty(r,o),a&&(n+=" "+a)}}return e.renderToStaticMarkup?n:(this._hostParent||(n+=" "+w.createMarkupForRoot()),n+=" "+w.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r="",o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&(r=o.__html);else{var i=V[m(t.children)]?t.children:null,a=null!=i?null:t.children;if(null!=i)r=D(i);else if(null!=a){var u=this.mountChildren(a,e,n);r=u.join("")}}return Y[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&_.queueHTML(r,o.__html);else{var i=V[m(t.children)]?t.children:null,a=null!=i?null:t.children;if(null!=i)""!==i&&_.queueText(r,i);else if(null!=a)for(var u=this.mountChildren(a,e,n),s=0;st.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function u(e,t){if(window.getSelection){var n=window.getSelection(),r=e[c()].length,o=Math.min(t.start,r),i=void 0===t.end?o:Math.min(t.end,r);if(!n.extend&&o>i){var a=i;i=o,o=a}var u=l(e,o),s=l(e,i);if(u&&s){var p=document.createRange();p.setStart(u.node,u.offset),n.removeAllRanges(),o>i?(n.addRange(p),n.extend(s.node,s.offset)):(p.setEnd(s.node,s.offset),n.addRange(p))}}}var s=n(5),l=n(170),c=n(73),p=s.canUseDOM&&"selection"in document&&!("getSelection"in window),f={getOffsets:p?o:i,setOffsets:p?a:u};e.exports=f},function(e,t,n){"use strict";var r=n(2),o=n(3),i=n(31),a=n(13),u=n(4),s=n(28),l=(n(0),n(46),function(e){this._currentElement=e,this._stringText=""+e,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});o(l.prototype,{mountComponent:function(e,t,n,r){var o=n._idCounter++,i=" react-text: "+o+" ";if(this._domID=o,this._hostParent=t,e.useCreateElement){var l=n._ownerDocument,c=l.createComment(i),p=l.createComment(" /react-text "),f=a(l.createDocumentFragment());return a.queueChild(f,a(c)),this._stringText&&a.queueChild(f,a(l.createTextNode(this._stringText))),a.queueChild(f,a(p)),u.precacheNode(this,c),this._closingComment=p,f}var d=s(this._stringText);return e.renderToStaticMarkup?d:"\x3c!--"+i+"--\x3e"+d+"\x3c!-- /react-text --\x3e"},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();i.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var e=this._commentNodes;if(e)return e;if(!this._closingComment)for(var t=u.getNodeFromInstance(this),n=t.nextSibling;;){if(null==n&&r("67",this._domID),8===n.nodeType&&" /react-text "===n.nodeValue){this._closingComment=n;break}n=n.nextSibling}return e=[this._hostNode,this._closingComment],this._commentNodes=e,e},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,u.uncacheNode(this)}}),e.exports=l},function(e,t,n){"use strict";function r(){this._rootNodeID&&c.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=u.executeOnChange(t,e);return l.asap(r,this),n}var i=n(2),a=n(3),u=n(36),s=n(4),l=n(9),c=(n(0),n(1),{getHostProps:function(e,t){return null!=t.dangerouslySetInnerHTML&&i("91"),a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue,onChange:e._wrapperState.onChange})},mountWrapper:function(e,t){var n=u.getValue(t),r=n;if(null==n){var a=t.defaultValue,s=t.children;null!=s&&(null!=a&&i("92"),Array.isArray(s)&&(s.length<=1||i("93"),s=s[0]),a=""+s),null==a&&(a=""),r=a}e._wrapperState={initialValue:""+r,listeners:null,onChange:o.bind(e)}},updateWrapper:function(e){var t=e._currentElement.props,n=s.getNodeFromInstance(e),r=u.getValue(t);if(null!=r){var o=""+r;o!==n.value&&(n.value=o),null==t.defaultValue&&(n.defaultValue=o)}null!=t.defaultValue&&(n.defaultValue=t.defaultValue)},postMountWrapper:function(e){var t=s.getNodeFromInstance(e),n=t.textContent;n===e._wrapperState.initialValue&&(t.value=n)}});e.exports=c},function(e,t,n){"use strict";function r(e,t){"_hostNode"in e||s("33"),"_hostNode"in t||s("33");for(var n=0,r=e;r;r=r._hostParent)n++;for(var o=0,i=t;i;i=i._hostParent)o++;for(;n-o>0;)e=e._hostParent,n--;for(;o-n>0;)t=t._hostParent,o--;for(var a=n;a--;){if(e===t)return e;e=e._hostParent,t=t._hostParent}return null}function o(e,t){"_hostNode"in e||s("35"),"_hostNode"in t||s("35");for(;t;){if(t===e)return!0;t=t._hostParent}return!1}function i(e){return"_hostNode"in e||s("36"),e._hostParent}function a(e,t,n){for(var r=[];e;)r.push(e),e=e._hostParent;var o;for(o=r.length;o-- >0;)t(r[o],"captured",n);for(o=0;o0;)n(s[l],"captured",i)}var s=n(2);n(0);e.exports={isAncestor:o,getLowestCommonAncestor:r,getParentInstance:i,traverseTwoPhase:a,traverseEnterLeave:u}},function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var o=n(3),i=n(9),a=n(27),u=n(7),s={initialize:u,close:function(){f.isBatchingUpdates=!1}},l={initialize:u,close:i.flushBatchedUpdates.bind(i)},c=[l,s];o(r.prototype,a,{getTransactionWrappers:function(){return c}});var p=new r,f={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o,i){var a=f.isBatchingUpdates;return f.isBatchingUpdates=!0,a?e(t,n,r,o,i):p.perform(e,null,t,n,r,o,i)}};e.exports=f},function(e,t,n){"use strict";function r(){w||(w=!0,g.EventEmitter.injectReactEventListener(v),g.EventPluginHub.injectEventPluginOrder(u),g.EventPluginUtils.injectComponentTree(f),g.EventPluginUtils.injectTreeTraversal(h),g.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:C,EnterLeaveEventPlugin:s,ChangeEventPlugin:a,SelectEventPlugin:E,BeforeInputEventPlugin:i}),g.HostComponent.injectGenericComponentClass(p),g.HostComponent.injectTextComponentClass(m),g.DOMProperty.injectDOMPropertyConfig(o),g.DOMProperty.injectDOMPropertyConfig(l),g.DOMProperty.injectDOMPropertyConfig(_),g.EmptyComponent.injectEmptyComponentFactory(function(e){return new d(e)}),g.Updates.injectReconcileTransaction(b),g.Updates.injectBatchingStrategy(y),g.Component.injectEnvironment(c))}var o=n(111),i=n(113),a=n(115),u=n(117),s=n(118),l=n(120),c=n(122),p=n(125),f=n(4),d=n(127),h=n(135),m=n(133),y=n(136),v=n(140),g=n(141),b=n(146),_=n(151),E=n(152),C=n(153),w=!1;e.exports={inject:r}},function(e,t,n){"use strict";var r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=r},function(e,t,n){"use strict";function r(e){o.enqueueEvents(e),o.processEventQueue(!1)}var o=n(21),i={handleTopLevel:function(e,t,n,i){r(o.extractEvents(e,t,n,i))}};e.exports=i},function(e,t,n){"use strict";function r(e){for(;e._hostParent;)e=e._hostParent;var t=p.getNodeFromInstance(e),n=t.parentNode;return p.getClosestInstanceFromNode(n)}function o(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}function i(e){var t=d(e.nativeEvent),n=p.getClosestInstanceFromNode(t),o=n;do{e.ancestors.push(o),o=o&&r(o)}while(o);for(var i=0;i/," "+i.CHECKSUM_ATTR_NAME+'="'+t+'"$&')},canReuseMarkup:function(e,t){var n=t.getAttribute(i.CHECKSUM_ATTR_NAME);return n=n&&parseInt(n,10),r(e)===n}};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return{type:"INSERT_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:n,afterNode:t}}function o(e,t,n){return{type:"MOVE_EXISTING",content:null,fromIndex:e._mountIndex,fromNode:f.getHostNode(e),toIndex:n,afterNode:t}}function i(e,t){return{type:"REMOVE_NODE",content:null,fromIndex:e._mountIndex,fromNode:t,toIndex:null,afterNode:null}}function a(e){return{type:"SET_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function u(e){return{type:"TEXT_CONTENT",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function s(e,t){return t&&(e=e||[],e.push(t)),e}function l(e,t){p.processChildrenUpdates(e,t)}var c=n(2),p=n(37),f=(n(23),n(8),n(11),n(15)),d=n(121),h=(n(7),n(167)),m=(n(0),{Mixin:{_reconcilerInstantiateChildren:function(e,t,n){return d.instantiateChildren(e,t,n)},_reconcilerUpdateChildren:function(e,t,n,r,o,i){var a,u=0;return a=h(t,u),d.updateChildren(e,a,n,r,o,this,this._hostContainerInfo,i,u),a},mountChildren:function(e,t,n){var r=this._reconcilerInstantiateChildren(e,t,n);this._renderedChildren=r;var o=[],i=0;for(var a in r)if(r.hasOwnProperty(a)){var u=r[a],s=0,l=f.mountComponent(u,t,this,this._hostContainerInfo,n,s);u._mountIndex=i++,o.push(l)}return o},updateTextContent:function(e){var t=this._renderedChildren;d.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");l(this,[u(e)])},updateMarkup:function(e){var t=this._renderedChildren;d.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");l(this,[a(e)])},updateChildren:function(e,t,n){this._updateChildren(e,t,n)},_updateChildren:function(e,t,n){var r=this._renderedChildren,o={},i=[],a=this._reconcilerUpdateChildren(r,e,i,o,t,n);if(a||r){var u,c=null,p=0,d=0,h=0,m=null;for(u in a)if(a.hasOwnProperty(u)){var y=r&&r[u],v=a[u];y===v?(c=s(c,this.moveChild(y,m,p,d)),d=Math.max(y._mountIndex,d),y._mountIndex=p):(y&&(d=Math.max(y._mountIndex,d)),c=s(c,this._mountChildAtIndex(v,i[h],m,p,t,n)),h++),p++,m=f.getHostNode(v)}for(u in o)o.hasOwnProperty(u)&&(c=s(c,this._unmountChild(r[u],o[u])));c&&l(this,c),this._renderedChildren=a}},unmountChildren:function(e){var t=this._renderedChildren;d.unmountChildren(t,e),this._renderedChildren=null},moveChild:function(e,t,n,r){if(e._mountIndex=t)return{node:n,offset:t-i};i=a}n=r(o(n))}}e.exports=i},function(e,t,n){"use strict";function r(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}function o(e){if(u[e])return u[e];if(!a[e])return e;var t=a[e];for(var n in t)if(t.hasOwnProperty(n)&&n in s)return u[e]=t[n];return""}var i=n(5),a={animationend:r("Animation","AnimationEnd"),animationiteration:r("Animation","AnimationIteration"),animationstart:r("Animation","AnimationStart"),transitionend:r("Transition","TransitionEnd")},u={},s={};i.canUseDOM&&(s=document.createElement("div").style,"AnimationEvent"in window||(delete a.animationend.animation,delete a.animationiteration.animation,delete a.animationstart.animation),"TransitionEvent"in window||delete a.transitionend.transition),e.exports=o},function(e,t,n){"use strict";function r(e){return'"'+o(e)+'"'}var o=n(28);e.exports=r},function(e,t,n){"use strict";var r=n(67);e.exports=r.renderSubtreeIntoContainer},function(e,t,n){"use strict";function r(e){var t={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g,function(e){return t[e]})}function o(e){var t={"=0":"=","=2":":"};return(""+("."===e[0]&&"$"===e[1]?e.substring(2):e.substring(1))).replace(/(=0|=2)/g,function(e){return t[e]})}var i={escape:r,unescape:o};e.exports=i},function(e,t,n){"use strict";var r=n(18),o=(n(0),function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)}),i=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)},a=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)},u=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)},s=function(e){var t=this;e instanceof t||r("25"),e.destructor(),t.instancePool.length"),this.props.content.input,c.default.createElement("a",{className:"hashLink",title:"Link for this expression",href:window.location.pathname+"#"+this.props.inputHash},"#")),c.default.createElement("div",{className:"content"},this.findResultComponent(this.props.content)))}},{key:"renderUnknown",value:function(){return c.default.createElement("div",{className:"result"},c.default.createElement("div",{className:"error"},"¯\\_(ツ)_/¯ Sorry, i don′t know what ",c.default.createElement("strong",null,this.props.input)," is"))}},{key:"renderError",value:function(e){return c.default.createElement("div",{className:"result"},c.default.createElement("div",{className:"error"},"(X_X) Error occurred: ",c.default.createElement("strong",null,e)))}},{key:"findResultComponent",value:function(e){return e instanceof f.default?c.default.createElement(g.default,{content:e}):e instanceof h.default?c.default.createElement(_.default,null):e instanceof C.default?c.default.createElement(x.default,{result:e,emphasizeBytes:this.props.appState.emphasizeBytes}):e instanceof k.default?c.default.createElement(P.default,null):(console.warn("Unknown result:",e),c.default.createElement("span",null,"Unknown result: ",void 0===e?"undefined":u(e)))}}]),t}(c.default.Component);t.default=M},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(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 i(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 a=function(){function e(e,t){for(var n=0;n>")," — sign propagating right shift"),s.default.createElement("li",null,s.default.createElement("code",null,">>>")," — zero-fill right shift"))))))}}]),t}(s.default.Component);t.default=l},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 u=function(){function e(e,t){for(var n=0;n-1?C.default.setLevel("trace"):C.default.setLevel("warn")}();var w=function(){var e=f.default.getPersistedData(),t=new c.default(e);return f.default.watch(t),C.default.debug("appState",t),t}();y.default.initialize(h.default,w),function(){var e=_.default.getArgs(window.location.hash),t=["help","1|2&6","1<<0x2a","2 4 8 16 32"];w.wasOldVersion&&(t=["whatsnew"]),e.commands.length>0&&(t=e.commands),t.forEach(h.default.execute.bind(h.default))}();var x=i.default.createElement(g.default,{appState:w});u.default.render(x,document.getElementById("root")),C.default.debug("started")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default={plainObject:function(e){return"object"==(void 0===e?"undefined":r(e))&&e instanceof Object},aFunction:function(e){return"function"==typeof e},string:function(e){return"string"==typeof e},regex:function(e){return"object"==(void 0===e?"undefined":r(e))&&this.constructedFrom(RegExp)},constructedFrom:function(e,t){return e instanceof t},htmlElement:function(e){return e instanceof HtmlElement},array:function(e){return e instanceof Array},number:function(e){return"number"==typeof e&&!isNaN(e)}}}]); //# sourceMappingURL=bundle.js.map \ No newline at end of file diff --git a/react/bundle.js.map b/react/bundle.js.map index 05c50e4..404436d 100644 --- a/react/bundle.js.map +++ b/react/bundle.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///bundle.js","webpack:///webpack/bootstrap 43d8e49d1fec2897c144","webpack:///./~/fbjs/lib/invariant.js","webpack:///./~/fbjs/lib/warning.js","webpack:///./~/react-dom/lib/reactProdInvariant.js","webpack:///./~/object-assign/index.js","webpack:///./~/react-dom/lib/ReactDOMComponentTree.js","webpack:///./~/fbjs/lib/ExecutionEnvironment.js","webpack:///./~/fbjs/lib/emptyFunction.js","webpack:///./~/react-dom/lib/ReactInstrumentation.js","webpack:///./~/react/react.js","webpack:///./~/react-dom/lib/ReactUpdates.js","webpack:///./~/react-dom/lib/SyntheticEvent.js","webpack:///./~/react/lib/ReactCurrentOwner.js","webpack:///./~/react-dom/lib/PooledClass.js","webpack:///./~/react-dom/lib/DOMLazyTree.js","webpack:///./~/react-dom/lib/DOMProperty.js","webpack:///./~/react-dom/lib/ReactReconciler.js","webpack:///./~/react/lib/React.js","webpack:///./~/react/lib/ReactElement.js","webpack:///./~/react/lib/reactProdInvariant.js","webpack:///./~/fbjs/lib/emptyObject.js","webpack:///./~/react-dom/lib/EventPluginHub.js","webpack:///./~/react-dom/lib/EventPropagators.js","webpack:///./~/react-dom/lib/ReactInstanceMap.js","webpack:///./~/react-dom/lib/SyntheticUIEvent.js","webpack:///./src/app/models/CommandResult.js","webpack:///./~/react-dom/lib/ReactBrowserEventEmitter.js","webpack:///./~/react-dom/lib/SyntheticMouseEvent.js","webpack:///./~/react-dom/lib/Transaction.js","webpack:///./~/react-dom/lib/escapeTextContentForBrowser.js","webpack:///./~/react-dom/lib/setInnerHTML.js","webpack:///./~/fbjs/lib/shallowEqual.js","webpack:///./~/react-dom/lib/DOMChildrenOperations.js","webpack:///./~/react-dom/lib/DOMNamespaces.js","webpack:///./~/react-dom/lib/EventPluginRegistry.js","webpack:///./~/react-dom/lib/EventPluginUtils.js","webpack:///./~/react-dom/lib/KeyEscapeUtils.js","webpack:///./~/react-dom/lib/LinkedValueUtils.js","webpack:///./~/react-dom/lib/ReactComponentEnvironment.js","webpack:///./~/react-dom/lib/ReactErrorUtils.js","webpack:///./~/react-dom/lib/ReactUpdateQueue.js","webpack:///./~/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","webpack:///./~/react-dom/lib/getEventCharCode.js","webpack:///./~/react-dom/lib/getEventModifierState.js","webpack:///./~/react-dom/lib/getEventTarget.js","webpack:///./~/react-dom/lib/isEventSupported.js","webpack:///./~/react-dom/lib/shouldUpdateReactComponent.js","webpack:///./~/react-dom/lib/validateDOMNesting.js","webpack:///./~/react/lib/ReactComponent.js","webpack:///./~/react/lib/ReactNoopUpdateQueue.js","webpack:///./src/app/expression.js","webpack:///./~/loglevel/lib/loglevel.js","webpack:///./src/app/cmd.js","webpack:///./src/app/components/InputBox.jsx","webpack:///./~/fbjs/lib/EventListener.js","webpack:///./~/fbjs/lib/focusNode.js","webpack:///./~/fbjs/lib/getActiveElement.js","webpack:///./~/process/browser.js","webpack:///./~/prop-types/factory.js","webpack:///./~/react-dom/lib/CSSProperty.js","webpack:///./~/react-dom/lib/CallbackQueue.js","webpack:///./~/react-dom/lib/DOMPropertyOperations.js","webpack:///./~/react-dom/lib/ReactDOMComponentFlags.js","webpack:///./~/react-dom/lib/ReactDOMSelect.js","webpack:///./~/react-dom/lib/ReactEmptyComponent.js","webpack:///./~/react-dom/lib/ReactFeatureFlags.js","webpack:///./~/react-dom/lib/ReactHostComponent.js","webpack:///./~/react-dom/lib/ReactInputSelection.js","webpack:///./~/react-dom/lib/ReactMount.js","webpack:///./~/react-dom/lib/ReactNodeTypes.js","webpack:///./~/react-dom/lib/ViewportMetrics.js","webpack:///./~/react-dom/lib/accumulateInto.js","webpack:///./~/react-dom/lib/forEachAccumulated.js","webpack:///./~/react-dom/lib/getHostComponentFromComposite.js","webpack:///./~/react-dom/lib/getTextContentAccessor.js","webpack:///./~/react-dom/lib/instantiateReactComponent.js","webpack:///./~/react-dom/lib/isTextInputElement.js","webpack:///./~/react-dom/lib/setTextContent.js","webpack:///./~/react-dom/lib/traverseAllChildren.js","webpack:///./~/react/lib/ReactComponentTreeHook.js","webpack:///./~/react/lib/ReactElementSymbol.js","webpack:///./~/react/lib/canDefineProperty.js","webpack:///./src/app/components/results/BinaryStringView.jsx","webpack:///./src/app/components/results/models/BitwiseExpressionViewModel.js","webpack:///./src/app/formatter.js","webpack:///./src/app/models/AboutResult.js","webpack:///./src/app/models/ErrorResult.js","webpack:///./src/app/models/ExpressionResult.js","webpack:///./src/app/models/HelpResult.js","webpack:///./src/app/models/UnknownCommandResult.js","webpack:///./~/react-dom/index.js","webpack:///./src/app/AppState.js","webpack:///./src/app/appStateStore.js","webpack:///./src/app/commands.js","webpack:///./src/app/components/AppRoot.jsx","webpack:///./src/app/hash.js","webpack:///./~/fbjs/lib/camelize.js","webpack:///./~/fbjs/lib/camelizeStyleName.js","webpack:///./~/fbjs/lib/containsNode.js","webpack:///./~/fbjs/lib/createArrayFromMixed.js","webpack:///./~/fbjs/lib/createNodesFromMarkup.js","webpack:///./~/fbjs/lib/getMarkupWrap.js","webpack:///./~/fbjs/lib/getUnboundedScrollPosition.js","webpack:///./~/fbjs/lib/hyphenate.js","webpack:///./~/fbjs/lib/hyphenateStyleName.js","webpack:///./~/fbjs/lib/isNode.js","webpack:///./~/fbjs/lib/isTextNode.js","webpack:///./~/fbjs/lib/memoizeStringOnly.js","webpack:///./~/prop-types/checkPropTypes.js","webpack:///./~/prop-types/factoryWithTypeCheckers.js","webpack:///./~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/react-dom/lib/ARIADOMPropertyConfig.js","webpack:///./~/react-dom/lib/AutoFocusUtils.js","webpack:///./~/react-dom/lib/BeforeInputEventPlugin.js","webpack:///./~/react-dom/lib/CSSPropertyOperations.js","webpack:///./~/react-dom/lib/ChangeEventPlugin.js","webpack:///./~/react-dom/lib/Danger.js","webpack:///./~/react-dom/lib/DefaultEventPluginOrder.js","webpack:///./~/react-dom/lib/EnterLeaveEventPlugin.js","webpack:///./~/react-dom/lib/FallbackCompositionState.js","webpack:///./~/react-dom/lib/HTMLDOMPropertyConfig.js","webpack:///./~/react-dom/lib/ReactChildReconciler.js","webpack:///./~/react-dom/lib/ReactComponentBrowserEnvironment.js","webpack:///./~/react-dom/lib/ReactCompositeComponent.js","webpack:///./~/react-dom/lib/ReactDOM.js","webpack:///./~/react-dom/lib/ReactDOMComponent.js","webpack:///./~/react-dom/lib/ReactDOMContainerInfo.js","webpack:///./~/react-dom/lib/ReactDOMEmptyComponent.js","webpack:///./~/react-dom/lib/ReactDOMFeatureFlags.js","webpack:///./~/react-dom/lib/ReactDOMIDOperations.js","webpack:///./~/react-dom/lib/ReactDOMInput.js","webpack:///./~/react-dom/lib/ReactDOMOption.js","webpack:///./~/react-dom/lib/ReactDOMSelection.js","webpack:///./~/react-dom/lib/ReactDOMTextComponent.js","webpack:///./~/react-dom/lib/ReactDOMTextarea.js","webpack:///./~/react-dom/lib/ReactDOMTreeTraversal.js","webpack:///./~/react-dom/lib/ReactDefaultBatchingStrategy.js","webpack:///./~/react-dom/lib/ReactDefaultInjection.js","webpack:///./~/react-dom/lib/ReactElementSymbol.js","webpack:///./~/react-dom/lib/ReactEventEmitterMixin.js","webpack:///./~/react-dom/lib/ReactEventListener.js","webpack:///./~/react-dom/lib/ReactInjection.js","webpack:///./~/react-dom/lib/ReactMarkupChecksum.js","webpack:///./~/react-dom/lib/ReactMultiChild.js","webpack:///./~/react-dom/lib/ReactOwner.js","webpack:///./~/react-dom/lib/ReactPropTypesSecret.js","webpack:///./~/react-dom/lib/ReactReconcileTransaction.js","webpack:///./~/react-dom/lib/ReactRef.js","webpack:///./~/react-dom/lib/ReactServerRenderingTransaction.js","webpack:///./~/react-dom/lib/ReactServerUpdateQueue.js","webpack:///./~/react-dom/lib/ReactVersion.js","webpack:///./~/react-dom/lib/SVGDOMPropertyConfig.js","webpack:///./~/react-dom/lib/SelectEventPlugin.js","webpack:///./~/react-dom/lib/SimpleEventPlugin.js","webpack:///./~/react-dom/lib/SyntheticAnimationEvent.js","webpack:///./~/react-dom/lib/SyntheticClipboardEvent.js","webpack:///./~/react-dom/lib/SyntheticCompositionEvent.js","webpack:///./~/react-dom/lib/SyntheticDragEvent.js","webpack:///./~/react-dom/lib/SyntheticFocusEvent.js","webpack:///./~/react-dom/lib/SyntheticInputEvent.js","webpack:///./~/react-dom/lib/SyntheticKeyboardEvent.js","webpack:///./~/react-dom/lib/SyntheticTouchEvent.js","webpack:///./~/react-dom/lib/SyntheticTransitionEvent.js","webpack:///./~/react-dom/lib/SyntheticWheelEvent.js","webpack:///./~/react-dom/lib/adler32.js","webpack:///./~/react-dom/lib/dangerousStyleValue.js","webpack:///./~/react-dom/lib/findDOMNode.js","webpack:///./~/react-dom/lib/flattenChildren.js","webpack:///./~/react-dom/lib/getEventKey.js","webpack:///./~/react-dom/lib/getIteratorFn.js","webpack:///./~/react-dom/lib/getNodeForCharacterOffset.js","webpack:///./~/react-dom/lib/getVendorPrefixedEventName.js","webpack:///./~/react-dom/lib/quoteAttributeValueForBrowser.js","webpack:///./~/react-dom/lib/renderSubtreeIntoContainer.js","webpack:///./~/react/lib/KeyEscapeUtils.js","webpack:///./~/react/lib/PooledClass.js","webpack:///./~/react/lib/ReactChildren.js","webpack:///./~/react/lib/ReactClass.js","webpack:///./~/react/lib/ReactDOMFactories.js","webpack:///./~/react/lib/ReactPropTypeLocationNames.js","webpack:///./~/react/lib/ReactPropTypes.js","webpack:///./~/react/lib/ReactPureComponent.js","webpack:///./~/react/lib/ReactVersion.js","webpack:///./~/react/lib/getIteratorFn.js","webpack:///./~/react/lib/getNextDebugID.js","webpack:///./~/react/lib/onlyChild.js","webpack:///./~/react/lib/traverseAllChildren.js","webpack:///./src/app/components/results/AboutResultView.jsx","webpack:///./src/app/components/results/BitwiseOperationExpressionView.jsx","webpack:///./src/app/components/results/DisplayResultView.jsx","webpack:///./src/app/components/results/ExpressionResultView.jsx","webpack:///./src/app/components/results/HelpResultView.jsx","webpack:///./src/app/components/results/ListOfNumbersExpressionView.jsx","webpack:///./src/app/index.jsx","webpack:///./src/app/is.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","invariant","condition","format","a","b","e","f","validateFormat","error","undefined","Error","args","argIndex","replace","framesToPop","emptyFunction","warning","reactProdInvariant","code","argCount","arguments","length","message","argIdx","encodeURIComponent","toObject","val","TypeError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","map","join","test3","split","forEach","letter","keys","err","target","source","from","symbols","to","key","shouldPrecacheNode","node","nodeID","nodeType","getAttribute","ATTR_NAME","nodeValue","getRenderedHostOrTextFromComponent","component","rendered","_renderedComponent","precacheNode","inst","hostInst","_hostNode","internalInstanceKey","uncacheNode","precacheChildNodes","_flags","Flags","hasCachedChildNodes","children","_renderedChildren","childNode","firstChild","outer","childInst","childID","_domID","nextSibling","_prodInvariant","getClosestInstanceFromNode","parents","push","parentNode","closest","pop","getInstanceFromNode","getNodeFromInstance","_hostParent","DOMProperty","ReactDOMComponentFlags","ID_ATTRIBUTE_NAME","Math","random","toString","slice","ReactDOMComponentTree","canUseDOM","window","document","createElement","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","isInWorker","makeEmptyFunction","arg","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","this","thatReturnsArgument","debugTool","ensureInjected","ReactUpdates","ReactReconcileTransaction","batchingStrategy","ReactUpdatesFlushTransaction","reinitializeTransaction","dirtyComponentsLength","callbackQueue","CallbackQueue","getPooled","reconcileTransaction","batchedUpdates","callback","mountOrderComparator","c1","c2","_mountOrder","runBatchedUpdates","transaction","len","dirtyComponents","sort","updateBatchNumber","callbacks","_pendingCallbacks","markerName","ReactFeatureFlags","logTopLevelRenders","namedComponent","_currentElement","type","isReactTopLevelWrapper","getName","console","time","ReactReconciler","performUpdateIfNecessary","timeEnd","j","enqueue","getPublicInstance","enqueueUpdate","isBatchingUpdates","_updateBatchNumber","asap","context","asapCallbackQueue","asapEnqueued","_assign","PooledClass","Transaction","NESTED_UPDATES","initialize","close","splice","flushBatchedUpdates","UPDATE_QUEUEING","reset","notifyAll","TRANSACTION_WRAPPERS","getTransactionWrappers","destructor","release","perform","method","scope","addPoolingTo","queue","ReactUpdatesInjection","injectReconcileTransaction","ReconcileTransaction","injectBatchingStrategy","_batchingStrategy","injection","SyntheticEvent","dispatchConfig","targetInst","nativeEvent","nativeEventTarget","_targetInst","Interface","constructor","propName","normalize","defaultPrevented","returnValue","isDefaultPrevented","isPropagationStopped","shouldBeReleasedProperties","EventInterface","currentTarget","eventPhase","bubbles","cancelable","timeStamp","event","Date","now","isTrusted","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","augmentClass","Class","Super","E","fourArgumentPooler","ReactCurrentOwner","current","oneArgumentPooler","copyFieldsFrom","Klass","instancePool","instance","twoArgumentPooler","a1","a2","threeArgumentPooler","a3","a4","standardReleaser","poolSize","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass","insertTreeChildren","tree","enableLazy","insertTreeBefore","html","setInnerHTML","text","setTextContent","replaceChildWithTree","oldNode","newTree","replaceChild","queueChild","parentTree","childTree","appendChild","queueHTML","queueText","nodeName","DOMLazyTree","DOMNamespaces","createMicrosoftUnsafeLocalFunction","documentMode","navigator","userAgent","test","referenceNode","toLowerCase","namespaceURI","insertBefore","checkMask","bitmask","DOMPropertyInjection","MUST_USE_PROPERTY","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Injection","Properties","DOMAttributeNamespaces","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","isCustomAttribute","_isCustomAttributeFunctions","properties","lowerCased","propConfig","propertyInfo","attributeName","attributeNamespace","propertyName","mutationMethod","mustUseProperty","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","ATTRIBUTE_NAME_START_CHAR","ROOT_ATTRIBUTE_NAME","ATTRIBUTE_NAME_CHAR","getPossibleStandardName","isCustomAttributeFn","attachRefs","ReactRef","mountComponent","internalInstance","hostParent","hostContainerInfo","parentDebugID","markup","ref","getReactMountReady","getHostNode","unmountComponent","safely","detachRefs","receiveComponent","nextElement","prevElement","_context","refsChanged","shouldUpdateRefs","ReactChildren","ReactComponent","ReactPureComponent","ReactClass","ReactDOMFactories","ReactElement","ReactPropTypes","ReactVersion","onlyChild","createFactory","cloneElement","__spread","React","Children","count","toArray","only","Component","PureComponent","isValidElement","PropTypes","createClass","createMixin","mixin","DOM","version","hasValidRef","config","hasValidKey","_typeof","Symbol","iterator","obj","REACT_ELEMENT_TYPE","RESERVED_PROPS","__self","__source","self","owner","props","element","$$typeof","_owner","childrenLength","childArray","Array","defaultProps","factory","bind","cloneAndReplaceKey","oldElement","newKey","_self","_source","emptyObject","isInteractive","tag","shouldPreventMouseEvent","disabled","EventPluginRegistry","EventPluginUtils","ReactErrorUtils","accumulateInto","forEachAccumulated","listenerBank","eventQueue","executeDispatchesAndRelease","simulated","executeDispatchesInOrder","executeDispatchesAndReleaseSimulated","executeDispatchesAndReleaseTopLevel","getDictionaryKey","_rootNodeID","EventPluginHub","injectEventPluginOrder","injectEventPluginsByName","putListener","registrationName","listener","PluginModule","registrationNameModules","didPutListener","getListener","bankForRegistrationName","deleteListener","willDeleteListener","deleteAllListeners","extractEvents","topLevelType","events","plugins","possiblePlugin","extractedEvents","enqueueEvents","processEventQueue","processingEventQueue","rethrowCaughtError","__purge","__getListenerBank","listenerAtPhase","propagationPhase","phasedRegistrationNames","accumulateDirectionalDispatches","phase","_dispatchListeners","_dispatchInstances","accumulateTwoPhaseDispatchesSingle","traverseTwoPhase","accumulateTwoPhaseDispatchesSingleSkipTarget","parentInst","getParentInstance","accumulateDispatches","ignoredDirection","accumulateDirectDispatchesSingle","accumulateTwoPhaseDispatches","accumulateTwoPhaseDispatchesSkipTarget","accumulateEnterLeaveDispatches","leave","enter","traverseEnterLeave","accumulateDirectDispatches","EventPropagators","ReactInstanceMap","remove","_reactInternalInstance","has","set","SyntheticUIEvent","dispatchMarker","getEventTarget","UIEventInterface","view","doc","ownerDocument","defaultView","parentWindow","detail","_classCallCheck","Constructor","_createClass","defineProperties","descriptor","writable","protoProps","staticProps","CommandResult","input","inputHash","encodeHash","string","encodeURI","trim","default","getListeningForDocument","mountAt","topListenersIDKey","reactTopListenersCounter","alreadyListeningTo","hasEventPageXY","ReactEventEmitterMixin","ViewportMetrics","getVendorPrefixedEventName","isEventSupported","isMonitoringScrollValue","topEventMapping","topAbort","topAnimationEnd","topAnimationIteration","topAnimationStart","topBlur","topCanPlay","topCanPlayThrough","topChange","topClick","topCompositionEnd","topCompositionStart","topCompositionUpdate","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topDurationChange","topEmptied","topEncrypted","topEnded","topError","topFocus","topInput","topKeyDown","topKeyPress","topKeyUp","topLoadedData","topLoadedMetadata","topLoadStart","topMouseDown","topMouseMove","topMouseOut","topMouseOver","topMouseUp","topPaste","topPause","topPlay","topPlaying","topProgress","topRateChange","topScroll","topSeeked","topSeeking","topSelectionChange","topStalled","topSuspend","topTextInput","topTimeUpdate","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topTransitionEnd","topVolumeChange","topWaiting","topWheel","ReactBrowserEventEmitter","ReactEventListener","injectReactEventListener","setHandleTopLevel","handleTopLevel","setEnabled","enabled","isEnabled","listenTo","contentDocumentHandle","isListening","dependencies","registrationNameDependencies","dependency","trapBubbledEvent","trapCapturedEvent","WINDOW_HANDLE","handlerBaseName","handle","supportsEventPageXY","createEvent","ev","ensureScrollValueMonitoring","refresh","refreshScrollValues","monitorScrollValue","SyntheticMouseEvent","getEventModifierState","MouseEventInterface","screenX","screenY","clientX","clientY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","button","buttons","relatedTarget","fromElement","srcElement","toElement","pageX","currentScrollLeft","pageY","currentScrollTop","OBSERVED_ERROR","TransactionImpl","transactionWrappers","wrapperInitData","_isInTransaction","isInTransaction","errorThrown","ret","initializeAll","closeAll","startIndex","wrapper","initData","escapeHtml","str","match","matchHtmlRegExp","exec","escape","index","lastIndex","charCodeAt","substring","escapeTextContentForBrowser","reusableSVGContainer","WHITESPACE_TEST","NONVISIBLE_TEST","svg","innerHTML","svgNode","testElement","textNode","data","removeChild","deleteData","is","x","y","shallowEqual","objA","objB","keysA","keysB","getNodeAfter","isArray","insertLazyTreeChildAt","moveChild","moveDelimitedText","insertChildAt","closingComment","removeDelimitedText","openingComment","nextNode","startNode","replaceDelimitedText","stringText","nodeAfterComment","createTextNode","Danger","dangerouslyReplaceNodeWithMarkup","DOMChildrenOperations","processUpdates","updates","k","update","content","afterNode","fromNode","mathml","recomputePluginOrdering","eventPluginOrder","pluginName","namesToPlugins","pluginModule","pluginIndex","indexOf","publishedEvents","eventTypes","eventName","publishEventForPlugin","eventNameDispatchConfigs","phaseName","phasedRegistrationName","publishRegistrationName","possibleRegistrationNames","injectedEventPluginOrder","injectedNamesToPlugins","isOrderingDirty","getPluginModuleForEvent","_resetEventPlugins","isEndish","isMoveish","isStartish","executeDispatch","invokeGuardedCallbackWithCatch","invokeGuardedCallback","dispatchListeners","dispatchInstances","executeDispatchesInOrderStopAtTrueImpl","executeDispatchesInOrderStopAtTrue","executeDirectDispatch","dispatchListener","dispatchInstance","res","hasDispatches","ComponentTree","TreeTraversal","injectComponentTree","Injected","injectTreeTraversal","isAncestor","getLowestCommonAncestor","fn","argFrom","argTo","escaperLookup","=",":","unescape","unescaperLookup","=0","=2","KeyEscapeUtils","_assertSingleLink","inputProps","checkedLink","valueLink","_assertValueLink","onChange","_assertCheckedLink","checked","getDeclarationErrorAddendum","ReactPropTypesSecret","propTypesFactory","hasReadOnlyValue","checkbox","image","hidden","radio","submit","propTypes","componentName","readOnly","func","loggedTypeFailures","LinkedValueUtils","checkPropTypes","tagName","getValue","getChecked","executeOnChange","requestChange","injected","ReactComponentEnvironment","replaceNodeWithMarkup","processChildrenUpdates","injectEnvironment","environment","caughtError","formatUnexpectedArgument","displayName","getInternalInstanceReadyForUpdate","publicInstance","callerName","ReactUpdateQueue","isMounted","enqueueCallback","validateCallback","enqueueCallbackInternal","enqueueForceUpdate","_pendingForceUpdate","enqueueReplaceState","completeState","_pendingStateQueue","_pendingReplaceState","enqueueSetState","partialState","enqueueElementInternal","nextContext","_pendingElement","MSApp","execUnsafeLocalFunction","arg0","arg1","arg2","arg3","getEventCharCode","charCode","keyCode","modifierStateGetter","keyArg","syntheticEvent","keyProp","modifierKeyToProp","Alt","Control","Meta","Shift","correspondingUseElement","eventNameSuffix","capture","isSupported","setAttribute","useHasFeature","implementation","hasFeature","shouldUpdateReactComponent","prevEmpty","nextEmpty","prevType","nextType","validateDOMNesting","updater","refs","ReactNoopUpdateQueue","isReactComponent","setState","forceUpdate","expression","factories","canParse","trimmed","canCreate","parse","create","parseOperand","Operand","createOperand","number","kind","addFactory","regex","matches","numbers","ListOfNumbersExpression","operand","SingleOperandExpression","fullRegex","normalizeString","operands","normalizedString","parseMatch","MultipleOperandsExpression","sign","num","parseInt","hex","toHexString","dec","bin","other","lengthInBits","getBitLength","floor","log","toKindString","getOtherKind","getBase","hexVal","abs","substr","expressionString","operand1","apply","eval","TwoOperandExpression","operand2","expressions","maxBitsLegnth","reduce","Expression","parser","Parser","pos","buffer","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","root","definition","realMethod","methodName","undefinedType","bindMethod","noop","Function","enableLoggingWhenConsoleArrives","level","loggerName","replaceLoggingMethods","logMethods","methodFactory","defaultMethodFactory","Logger","defaultLevel","persistLevelIfPossible","levelNum","levelName","toUpperCase","localStorage","storageKey","ignore","cookie","getPersistedLevel","storedLevel","location","levels","currentLevel","TRACE","DEBUG","INFO","WARN","ERROR","SILENT","getLevel","setLevel","setDefaultLevel","enableAll","disableAll","initialLevel","defaultLogger","_loggersByName","getLogger","logger","_log","noConflict","logError","invokeHandler","handler","cmdResult","createHandler","cmd","_is2","plainObject","canHandle","findHandler","handlers","_is","errorHandler","debugMode","execute","rawInput","commands","catalog","command","h","warn","aFunction","clear","onError","_interopRequireDefault","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","setPrototypeOf","__proto__","_react","_react2","_cmd","_cmd2","InputBox","_React$Component","_this","getPrototypeOf","history","historyIndex","nameInput","focus","_this2","id","onKeyUp","onKeyDown","className","placeholder","unshift","newIndex","EventListener","listen","eventType","removeEventListener","detachEvent","registerDefault","focusNode","getActiveElement","activeElement","body","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","setTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","concat","queueIndex","drainQueue","timeout","run","Item","array","process","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","prefixKey","prefix","charAt","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","prop","shorthandPropertyExpansions","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPositionX","backgroundPositionY","backgroundRepeat","backgroundPosition","border","borderWidth","borderStyle","borderColor","borderBottom","borderBottomWidth","borderBottomStyle","borderBottomColor","borderLeft","borderLeftWidth","borderLeftStyle","borderLeftColor","borderRight","borderRightWidth","borderRightStyle","borderRightColor","borderTop","borderTopWidth","borderTopStyle","borderTopColor","font","fontStyle","fontVariant","fontSize","fontFamily","outline","outlineWidth","outlineStyle","outlineColor","CSSProperty","_callbacks","_contexts","_arg","contexts","checkpoint","rollback","isAttributeNameSafe","validatedAttributeNameCache","illegalAttributeNameCache","VALID_ATTRIBUTE_NAME_REGEX","shouldIgnoreValue","isNaN","quoteAttributeValueForBrowser","RegExp","DOMPropertyOperations","createMarkupForID","setAttributeForID","createMarkupForRoot","setAttributeForRoot","createMarkupForProperty","createMarkupForCustomAttribute","setValueForProperty","deleteValueForProperty","namespace","setAttributeNS","setValueForAttribute","removeAttribute","deleteValueForAttribute","updateOptionsIfPendingUpdateAndMounted","_wrapperState","pendingUpdate","updateOptions","Boolean","multiple","propValue","selectedValue","options","selected","_handleChange","didWarnValueDefaultValue","ReactDOMSelect","getHostProps","mountWrapper","initialValue","defaultValue","wasMultiple","getSelectValueContext","postUpdateWrapper","emptyComponentFactory","ReactEmptyComponentInjection","injectEmptyComponentFactory","ReactEmptyComponent","instantiate","createInternalComponent","genericComponentClass","createInstanceForText","textComponentClass","isTextComponent","ReactHostComponentInjection","injectGenericComponentClass","componentClass","injectTextComponentClass","ReactHostComponent","isInDocument","containsNode","documentElement","ReactDOMSelection","ReactInputSelection","hasSelectionCapabilities","elem","contentEditable","getSelectionInformation","focusedElem","selectionRange","getSelection","restoreSelection","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","setSelection","selection","start","selectionStart","end","selectionEnd","range","createRange","parentElement","moveStart","moveEnd","getOffsets","offsets","min","createTextRange","collapse","select","setOffsets","firstDifferenceIndex","string1","string2","minLen","getReactRootElementInContainer","container","DOC_NODE_TYPE","internalGetID","mountComponentIntoNode","wrapperInstance","shouldReuseMarkup","wrappedElement","child","ReactDOMContainerInfo","_topLevelWrapper","ReactMount","_mountImageIntoNode","batchedMountComponentIntoNode","componentInstance","ReactDOMFeatureFlags","useCreateElement","unmountComponentFromNode","lastChild","hasNonRootReactChild","rootEl","isValidContainer","ELEMENT_NODE_TYPE","DOCUMENT_FRAGMENT_NODE_TYPE","getHostRootInstanceInContainer","prevHostInstance","getTopLevelWrapperInContainer","_hostContainerInfo","ReactMarkupChecksum","instantiateReactComponent","ROOT_ATTR_NAME","instancesByReactRootID","topLevelRootCounter","TopLevelWrapper","rootID","render","_instancesByReactRootID","scrollMonitor","renderCallback","_updateRootComponent","prevComponent","_renderNewRootComponent","wrapperID","_instance","renderSubtreeIntoContainer","parentComponent","_renderSubtreeIntoContainer","nextWrappedElement","_processChildContext","prevWrappedElement","publicInst","updatedCallback","unmountComponentAtNode","reactRootElement","containerHasReactMarkup","containerHasNonRootReactChild","hasAttribute","rootElement","canReuseMarkup","checksum","CHECKSUM_ATTR_NAME","rootMarkup","outerHTML","normalizedMarkup","diffIndex","difference","ReactNodeTypes","HOST","COMPOSITE","EMPTY","getType","scrollPosition","next","arr","cb","getHostComponentFromComposite","_renderedNodeType","getTextContentAccessor","contentKey","isInternalComponentType","shouldHaveDebugID","info","getNativeNode","ReactCompositeComponentWrapper","_mountIndex","_mountImage","ReactCompositeComponent","construct","_instantiateReactComponent","isTextInputElement","supportedInputTypes","color","date","datetime","datetime-local","email","month","password","search","tel","url","week","textContent","getComponentKey","traverseAllChildrenImpl","nameSoFar","traverseContext","SEPARATOR","nextName","subtreeCount","nextNamePrefix","SUBSEPARATOR","iteratorFn","getIteratorFn","step","entries","ii","done","entry","addendum","childrenString","traverseAllChildren","isNative","funcToString","reIsNative","purgeDeep","item","getItem","childIDs","removeItem","describeComponentFrame","ownerName","fileName","lineNumber","getDisplayName","describeID","ReactComponentTreeHook","getElement","ownerID","getOwnerID","setItem","getItemIDs","addRoot","removeRoot","getRootIDs","canUseCollections","Map","Set","itemMap","rootIDSet","add","itemByKey","rootByKey","getKeyFromID","getIDFromKey","unmountedIDs","onSetChildren","nextChildIDs","nextChildID","nextChild","parentID","onBeforeMountComponent","updateCount","onBeforeUpdateComponent","onMountComponent","onUpdateComponent","onUnmountComponent","purgeUnmountedComponents","_preventPurging","getCurrentStackAddendum","topElement","currentOwner","_debugID","getStackAddendumByID","getParentID","getChildIDs","getSource","getText","getUpdateCount","getRegisteredIDs","canDefineProperty","BinaryStringView","getChildren","allowFlipBits","onFlipBit","bits","createBits","binaryString","emphasizeBytes","splitIntoBytes","bitChars","css","classNames","0","1","onClick","onBitClick","bytes","BitwiseExpressionViewModel","_ref","_ref$emphasizeBytes","items","maxNumberOfBits","max","getLengthInBits","label","resultOperand","expr","ex","op","addOperand","isShiftExpression","addShiftExpressionResult","addExpression","addExpressionResult","getNumberOfBits","formatString","padLeft","symbol","sb","_CommandResult2","_CommandResult3","AboutResult","_CommandResult","ErrorResult","ExpressionResult","HelpResult","UnknownCommandResult","AppState","persistData","commandResults","uiTheme","result","triggerChanged","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","return","theme","getPersistedData","json","JSON","watch","appState","stringify","getPersistData","_HelpResult","_HelpResult2","_AboutResult","_AboutResult2","_UnknownCommandResult","_UnknownCommandResult2","_ExpressionResult","_ExpressionResult2","_ErrorResult","_ErrorResult2","_expression","newObj","addCommandResult","help","clearCommmandResults","em","toggleEmphasizeBytes","dark","setUiTheme","light","about","-notrack","_InputBox","_InputBox2","_DisplayResultView","_DisplayResultView2","AppRoot","_this3","state","r","_this4","style","href","data-cmd","getIndicator","getResultViews","splitHashList","values","v","decodeHash","hashValue","decodeURI","getArgs","decodedHash","freeze","camelize","_hyphenPattern","_","character","camelizeStyleName","msPattern","outerNode","innerNode","isTextNode","contains","compareDocumentPosition","callee","hasArrayNature","createArrayFromMixed","getNodeName","nodeNameMatch","nodeNamePattern","createNodesFromMarkup","handleScript","dummyNode","wrap","getMarkupWrap","wrapDepth","scripts","getElementsByTagName","nodes","childNodes","markupWrap","shouldWrap","selectWrap","tableWrap","trWrap","svgWrap","*","area","col","legend","param","tr","optgroup","option","caption","colgroup","tbody","tfoot","thead","td","th","getUnboundedScrollPosition","scrollable","Window","pageXOffset","scrollLeft","pageYOffset","scrollTop","hyphenate","_uppercasePattern","hyphenateStyleName","isNode","Node","memoizeStringOnly","cache","typeSpecs","getStack","throwOnDirectAccess","maybeIterable","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","PropTypeError","stack","createChainableTypeChecker","validate","checkType","isRequired","propFullName","secret","ANONYMOUS","chainedCheckType","createPrimitiveTypeChecker","expectedType","getPropType","getPreciseType","createArrayOfTypeChecker","typeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","createEnumTypeChecker","expectedValues","createObjectOfTypeChecker","propType","createUnionTypeChecker","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","createShapeTypeChecker","shapeTypes","every","isSymbol","bool","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","ARIADOMPropertyConfig","aria-current","aria-details","aria-disabled","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-roledescription","aria-autocomplete","aria-checked","aria-expanded","aria-haspopup","aria-level","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-placeholder","aria-pressed","aria-readonly","aria-required","aria-selected","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","aria-atomic","aria-busy","aria-live","aria-relevant","aria-dropeffect","aria-grabbed","aria-activedescendant","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-describedby","aria-errormessage","aria-flowto","aria-labelledby","aria-owns","aria-posinset","aria-rowcount","aria-rowindex","aria-rowspan","aria-setsize","AutoFocusUtils","focusDOMComponent","isKeypressCommand","getCompositionEventType","compositionStart","compositionEnd","compositionUpdate","isFallbackCompositionStart","START_KEYCODE","isFallbackCompositionEnd","END_KEYCODES","getDataFromCustomEvent","extractCompositionEvent","fallbackData","canUseCompositionEvent","currentComposition","useFallbackCompositionData","getData","FallbackCompositionState","SyntheticCompositionEvent","customData","getNativeBeforeInputChars","which","SPACEBAR_CODE","hasSpaceKeypress","SPACEBAR_CHAR","chars","getFallbackBeforeInputChars","extractBeforeInputEvent","canUseTextInputEvent","SyntheticInputEvent","beforeInput","opera","bubbled","captured","BeforeInputEventPlugin","dangerousStyleValue","processStyleName","styleName","hasShorthandPropertyBug","styleFloatAccessor","tempStyle","cssFloat","CSSPropertyOperations","createMarkupForStyles","styles","serialized","styleValue","setValueForStyles","expansion","individualStyleName","shouldUseChangeEvent","manualDispatchChangeEvent","change","activeElementInst","runEventInBatch","startWatchingForChangeEventIE8","stopWatchingForChangeEventIE8","getTargetInstForChangeEvent","handleEventsForChangeEventIE8","startWatchingForValueChange","activeElementValue","activeElementValueProp","getOwnPropertyDescriptor","newValueProp","handlePropertyChange","stopWatchingForValueChange","getTargetInstForInputEvent","handleEventsForInputEventIE","getTargetInstForInputEventIE","shouldUseClickEvent","getTargetInstForClickEvent","handleControlledInputBlur","controlled","doesChangeEventBubble","isInputEventSupported","ChangeEventPlugin","getTargetInstFunc","handleEventFunc","targetNode","oldChild","newChild","DefaultEventPluginOrder","mouseEnter","mouseLeave","EnterLeaveEventPlugin","win","related","toNode","_root","_startText","_fallbackText","startValue","startLength","endValue","endLength","minEnd","sliceTail","HTMLDOMPropertyConfig","accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","as","async","autoComplete","autoPlay","cellPadding","cellSpacing","charSet","challenge","cite","classID","cols","colSpan","contextMenu","controls","coords","crossOrigin","dateTime","defer","download","draggable","encType","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","headers","height","high","hrefLang","htmlFor","httpEquiv","icon","inputMode","integrity","keyParams","keyType","lang","list","loop","low","manifest","marginHeight","marginWidth","maxLength","media","mediaGroup","minLength","muted","nonce","noValidate","open","optimum","pattern","playsInline","poster","preload","profile","radioGroup","referrerPolicy","rel","required","reversed","role","rows","rowSpan","sandbox","scoped","scrolling","seamless","size","sizes","span","spellCheck","src","srcDoc","srcLang","srcSet","summary","tabIndex","useMap","width","wmode","datatype","inlist","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","validity","badInput","instantiateChild","childInstances","selfDebugID","keyUnique","ReactChildReconciler","instantiateChildren","nestedChildNodes","updateChildren","prevChildren","nextChildren","mountImages","removedNodes","prevChild","nextChildInstance","nextChildMountImage","unmountChildren","renderedChildren","renderedChild","ReactDOMIDOperations","ReactComponentBrowserEnvironment","dangerouslyProcessChildrenUpdates","StatelessComponent","shouldConstruct","isPureComponent","isPureReactComponent","CompositeTypes","ImpureClass","PureClass","StatelessFunctional","nextMountID","_compositeType","_calledComponentWillUnmount","renderedElement","publicProps","publicContext","_processContext","updateQueue","getUpdateQueue","doConstruct","_constructComponent","initialState","unstable_handleError","performInitialMountWithErrorHandling","performInitialMount","componentDidMount","_constructComponentWithoutOwner","_processPendingState","debugID","componentWillMount","_renderValidatedComponent","componentWillUnmount","_maskContext","contextTypes","maskedContext","contextName","currentContext","childContext","getChildContext","childContextTypes","_checkContextTypes","prevContext","updateComponent","prevParentElement","nextParentElement","prevUnmaskedContext","nextUnmaskedContext","willReceive","prevProps","nextProps","componentWillReceiveProps","nextState","shouldUpdate","shouldComponentUpdate","_performComponentUpdate","partial","unmaskedContext","prevState","hasComponentDidUpdate","componentDidUpdate","componentWillUpdate","_updateRenderedComponent","prevComponentInstance","prevRenderedElement","nextRenderedElement","oldHostNode","nextMarkup","_replaceNodeWithMarkup","prevInstance","_renderValidatedComponentWithoutOwnerOrContext","attachRef","publicComponentInstance","detachRef","ReactDefaultInjection","findDOMNode","inject","ReactDOM","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","__REACT_DEVTOOLS_GLOBAL_HOOK__","Mount","Reconciler","assertValidProps","voidElementTags","_tag","dangerouslySetInnerHTML","HTML","enqueuePutListener","ReactServerRenderingTransaction","containerInfo","isDocumentFragment","_node","DOC_FRAGMENT_TYPE","_ownerDocument","listenerToPut","inputPostMount","ReactDOMInput","postMountWrapper","textareaPostMount","ReactDOMTextarea","optionPostMount","ReactDOMOption","trapBubbledEventsLocal","getNode","mediaEvents","postUpdateSelectWrapper","validateDangerousTag","validatedTagCache","VALID_TAG_REGEX","isCustomComponent","ReactDOMComponent","_namespaceURI","_previousStyle","_previousStyleCopy","ReactMultiChild","CONTENT_TYPES","suppressContentEditableWarning","omittedCloseTags","base","br","embed","hr","img","keygen","link","meta","track","wbr","newlineEatingTags","listing","pre","textarea","menuitem","globalIdCounter","Mixin","_idCounter","parentTag","mountImage","el","div","createElementNS","_updateDOMProperties","lazyTree","_createInitialChildren","tagOpen","_createOpenTagMarkupAndPutListeners","tagContent","_createContentMarkup","autoFocus","propKey","renderToStaticMarkup","__html","contentToUse","childrenToUse","mountChildren","lastProps","_updateDOMChildren","updateWrapper","styleUpdates","lastStyle","nextProp","lastProp","lastContent","nextContent","lastHtml","nextHtml","lastChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateTextContent","updateMarkup","topLevelWrapper","ReactDOMEmptyComponent","domID","createComment","useFiber","forceUpdateIfMounted","isControlled","rootNode","queryRoot","group","querySelectorAll","otherNode","otherInstance","defaultChecked","initialChecked","valueAsNumber","parseFloat","flattenChildren","didWarnInvalidOptionChildren","selectValue","selectParent","hostProps","isCollapsed","anchorNode","anchorOffset","focusOffset","getIEOffsets","selectedRange","selectedLength","fromStart","duplicate","moveToElementText","setEndPoint","startOffset","getModernOffsets","rangeCount","currentRange","getRangeAt","startContainer","endContainer","isSelectionCollapsed","rangeLength","tempRange","cloneRange","selectNodeContents","setEnd","isTempRangeCollapsed","endOffset","detectionRange","setStart","isBackward","collapsed","setIEOffsets","setModernOffsets","extend","temp","startMarker","getNodeForCharacterOffset","endMarker","offset","removeAllRanges","addRange","useIEOffsets","ReactDOMTextComponent","_stringText","_closingComment","_commentNodes","openingValue","createDocumentFragment","escapedText","nextText","nextStringText","commentNodes","hostNode","newValue","instA","instB","depthA","tempA","depthB","tempB","depth","path","common","pathFrom","pathTo","ReactDefaultBatchingStrategyTransaction","RESET_BATCHED_UPDATES","ReactDefaultBatchingStrategy","FLUSH_BATCHED_UPDATES","alreadyBatchingUpdates","alreadyInjected","ReactInjection","EventEmitter","ReactDOMTreeTraversal","SimpleEventPlugin","SelectEventPlugin","HostComponent","SVGDOMPropertyConfig","EmptyComponent","Updates","runEventQueueInBatch","findParent","TopLevelCallbackBookKeeping","ancestors","handleTopLevelImpl","bookKeeping","ancestor","_handleTopLevel","scrollValueMonitor","_enabled","dispatchEvent","adler32","COMMENT_START","addChecksumToMarkup","existingChecksum","makeInsertMarkup","toIndex","fromIndex","makeMove","makeRemove","makeSetMarkup","makeTextContent","processQueue","_reconcilerInstantiateChildren","nestedChildren","_reconcilerUpdateChildren","nextNestedChildrenElements","_updateChildren","nextIndex","nextMountIndex","lastPlacedNode","_mountChildAtIndex","_unmountChild","createChild","isValidOwner","ReactOwner","addComponentAsRefTo","removeComponentAsRefFrom","ownerPublicInstance","reactMountReady","SELECTION_RESTORATION","EVENT_SUPPRESSION","currentlyEnabled","previouslyEnabled","ON_DOM_READY_QUEUEING","prevRef","prevOwner","nextRef","nextOwner","ReactServerUpdateQueue","noopCallbackQueue","NS","xlink","xml","ATTRS","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baseProfile","baselineShift","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipRule","clipPathUnits","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","exponent","externalResourcesRequired","fill","fillRule","filter","filterRes","filterUnits","floodColor","focusable","fontSizeAdjust","fontStretch","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerMid","markerStart","markerHeight","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mode","numOctaves","operator","orient","orientation","origin","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","rotate","rx","ry","scale","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","stroke","strokeLinecap","strokeLinejoin","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textRendering","textLength","transform","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","visibility","widths","wordSpacing","writingMode","xHeight","x1","x2","xChannelSelector","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlns","xmlnsXlink","xmlLang","xmlSpace","y1","y2","yChannelSelector","z","zoomAndPan","top","boundingTop","left","boundingLeft","constructSelectEvent","mouseDown","currentSelection","lastSelection","skipSelectionChangeEvent","hasListener","SyntheticAnimationEvent","SyntheticClipboardEvent","SyntheticFocusEvent","SyntheticKeyboardEvent","SyntheticDragEvent","SyntheticTouchEvent","SyntheticTransitionEvent","SyntheticWheelEvent","topLevelEventsToDispatchConfig","capitalizedEvent","onEvent","topEvent","onClickListeners","EventConstructor","AnimationEventInterface","animationName","elapsedTime","pseudoElement","ClipboardEventInterface","clipboardData","CompositionEventInterface","DragEventInterface","dataTransfer","FocusEventInterface","InputEventInterface","getEventKey","KeyboardEventInterface","repeat","locale","TouchEventInterface","touches","targetTouches","changedTouches","TransitionEventInterface","WheelEventInterface","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","MOD","componentOrElement","flattenSingleChildIntoContext","normalizeKey","translateToKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","getLeafNode","getSiblingNode","nodeStart","nodeEnd","makePrefixMap","styleProp","prefixedEventNames","vendorPrefixes","prefixMap","animationend","animationiteration","animationstart","transitionend","animation","transition","escapeUserProvidedKey","userProvidedKeyEscapeRegex","ForEachBookKeeping","forEachFunction","forEachContext","forEachSingleChild","forEachChildren","forEachFunc","MapBookKeeping","mapResult","keyPrefix","mapFunction","mapContext","mapSingleChildIntoContext","childKey","mappedChild","mapIntoWithKeyPrefixInternal","escapedPrefix","mapChildren","forEachSingleChildDummy","countChildren","identity","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassInterface","ReactClassMixin","mixSpecIntoComponent","spec","proto","autoBindPairs","__reactAutoBindPairs","MIXINS_KEY","RESERVED_SPEC_KEYS","mixins","isReactClassMethod","isFunction","shouldAutoBind","autobind","createMergedResultFunction","createChainedFunction","mixStaticSpecIntoComponent","statics","isReserved","isInherited","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","boundMethod","bindAutoBindMethods","pairs","autoBindKey","injectedMixins","getDefaultProps","getInitialState","replaceState","newState","ReactClassComponent","injectMixin","createDOMFactory","abbr","address","article","aside","audio","bdi","bdo","big","blockquote","canvas","datalist","dd","del","details","dfn","dialog","dl","dt","fieldset","figcaption","figure","footer","h1","h2","h3","h4","h5","h6","head","header","hgroup","iframe","ins","kbd","li","main","mark","menu","meter","nav","noscript","ol","output","picture","progress","q","rp","rt","ruby","samp","script","section","small","strong","sub","sup","table","u","ul","var","video","circle","defs","ellipse","g","line","linearGradient","polygon","polyline","radialGradient","rect","stop","tspan","ReactPropTypeLocationNames","_require","ComponentDummy","getNextDebugID","nextDebugID","AboutResultView","_extends","_formatter","_formatter2","_BinaryStringView","_BinaryStringView2","_BitwiseExpressionViewModel","_BitwiseExpressionViewModel2","_loglevel","_loglevel2","BitwiseOperationEpxressionView","getRows","buildNot","itm","ExpressionRow","buildMultiple","_React$Component2","_props","_HelpResultView","_HelpResultView2","_AboutResultView","_AboutResultView2","_ExpressionResultView","_ExpressionResultView2","DisplayResult","renderUnknown","renderError","pathname","findResultComponent","_ListOfNumbersExpressionView","_ListOfNumbersExpressionView2","_BitwiseOperationExpressionView","_BitwiseOperationExpressionView2","ExpressionResultView","HelpResultView","float","marginRight","ListOfNumersExpressionView","numberRows","OperandView","data-kind","flipBit","setValue","_reactDom","_reactDom2","_AppState","_AppState2","_appStateStore","_appStateStore2","_commands","_commands2","_AppRoot","_AppRoot2","_hash","_hash2","host","hash","stateData","debug","hashArgs","startupCommands","getElementById","constructedFrom","ctor","htmlElement","HtmlElement"],"mappings":"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","file":"bundle.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"http://localhost:8080/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 192);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(6);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (false) {\n (function () {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n })();\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMProperty = __webpack_require__(14);\nvar ReactDOMComponentFlags = __webpack_require__(61);\n\nvar invariant = __webpack_require__(0);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n true ? false ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? false ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (false) {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(16);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar CallbackQueue = __webpack_require__(59);\nvar PooledClass = __webpack_require__(12);\nvar ReactFeatureFlags = __webpack_require__(64);\nvar ReactReconciler = __webpack_require__(15);\nvar Transaction = __webpack_require__(27);\n\nvar invariant = __webpack_require__(0);\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? false ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function initialize() {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function close() {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function initialize() {\n this.callbackQueue.reset();\n },\n close: function close() {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function destructor() {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function perform(method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? false ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function flushBatchedUpdates() {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? false ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function injectReconcileTransaction(ReconcileTransaction) {\n !ReconcileTransaction ? false ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function injectBatchingStrategy(_batchingStrategy) {\n !_batchingStrategy ? false ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? false ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? false ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(12);\n\nvar emptyFunction = __webpack_require__(6);\nvar warning = __webpack_require__(1);\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function timeStamp(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (false) {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (false) {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function preventDefault() {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function stopPropagation() {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function persist() {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function destructor() {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (false) {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (false) {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (false) {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function construct(target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function apply(constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function set(target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function E() {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n false ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\n\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function oneArgumentPooler(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function twoArgumentPooler(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function threeArgumentPooler(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function fourArgumentPooler(a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function standardReleaser(instance) {\n var Klass = this;\n !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function addPoolingTo(CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMNamespaces = __webpack_require__(32);\nvar setInnerHTML = __webpack_require__(29);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(40);\nvar setTextContent = __webpack_require__(76);\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some plugins (like Flash Player) will read\n // nodes immediately upon insertion into the DOM, so \n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function injectDOMPropertyConfig(domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? false ? invariant(false, '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.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? false ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (false) {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (false) {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':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';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: false ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function isCustomAttribute(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactRef = __webpack_require__(146);\nvar ReactInstrumentation = __webpack_require__(7);\n\nvar warning = __webpack_require__(1);\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function mountComponent(internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n ) {\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function getHostNode(internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function unmountComponent(internalInstance, safely) {\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function receiveComponent(internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function performUpdateIfNecessary(internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n false ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactChildren = __webpack_require__(175);\nvar ReactComponent = __webpack_require__(47);\nvar ReactPureComponent = __webpack_require__(180);\nvar ReactClass = __webpack_require__(176);\nvar ReactDOMFactories = __webpack_require__(177);\nvar ReactElement = __webpack_require__(17);\nvar ReactPropTypes = __webpack_require__(179);\nvar ReactVersion = __webpack_require__(181);\n\nvar onlyChild = __webpack_require__(184);\nvar warning = __webpack_require__(1);\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (false) {\n var canDefineProperty = require('./canDefineProperty');\n var ReactElementValidator = require('./ReactElementValidator');\n var didWarnPropTypesDeprecated = false;\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (false) {\n var warned = false;\n __spread = function __spread() {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactComponent,\n PureComponent: ReactPureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function createMixin(mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\n// TODO: Fix tests so that this deprecation warning doesn't cause failures.\nif (false) {\n if (canDefineProperty) {\n Object.defineProperty(React, 'PropTypes', {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? warning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated. Use ' + 'the prop-types package from npm instead.') : void 0;\n didWarnPropTypesDeprecated = true;\n return ReactPropTypes;\n }\n });\n }\n}\n\nmodule.exports = React;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _assign = __webpack_require__(3);\n\nvar ReactCurrentOwner = __webpack_require__(11);\n\nvar warning = __webpack_require__(1);\nvar canDefineProperty = __webpack_require__(80);\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = __webpack_require__(79);\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (false) {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (false) {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function warnAboutAccessingKey() {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n false ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function warnAboutAccessingRef() {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n false ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function ReactElement(type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (false) {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (false) {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (false) {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyObject = {};\n\nif (false) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar EventPluginRegistry = __webpack_require__(33);\nvar EventPluginUtils = __webpack_require__(34);\nvar ReactErrorUtils = __webpack_require__(38);\n\nvar accumulateInto = __webpack_require__(70);\nvar forEachAccumulated = __webpack_require__(71);\nvar invariant = __webpack_require__(0);\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function executeDispatchesAndRelease(event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function executeDispatchesAndReleaseSimulated(e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function executeDispatchesAndReleaseTopLevel(e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function putListener(inst, registrationName, listener) {\n !(typeof listener === 'function') ? false ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener === 'undefined' ? 'undefined' : _typeof(listener)) : _prodInvariant('94', registrationName, typeof listener === 'undefined' ? 'undefined' : _typeof(listener)) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function getListener(inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function deleteListener(inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function deleteAllListeners(inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function enqueueEvents(events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function processEventQueue(simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? false ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function __purge() {\n listenerBank = {};\n },\n\n __getListenerBank: function __getListenerBank() {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(20);\nvar EventPluginUtils = __webpack_require__(34);\n\nvar accumulateInto = __webpack_require__(70);\nvar forEachAccumulated = __webpack_require__(71);\nvar warning = __webpack_require__(1);\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function remove(key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function get(key) {\n return key._reactInternalInstance;\n },\n\n has: function has(key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function set(key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\nvar getEventTarget = __webpack_require__(43);\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function view(event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function detail(event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CommandResult = function () {\n function CommandResult(input) {\n _classCallCheck(this, CommandResult);\n\n this.input = input;\n this.inputHash = this.encodeHash(input);\n }\n\n _createClass(CommandResult, [{\n key: 'encodeHash',\n value: function encodeHash(string) {\n return encodeURI(string.trim().replace(/\\s/g, ','));\n }\n }]);\n\n return CommandResult;\n}();\n\nexports.default = CommandResult;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar EventPluginRegistry = __webpack_require__(33);\nvar ReactEventEmitterMixin = __webpack_require__(138);\nvar ViewportMetrics = __webpack_require__(69);\n\nvar getVendorPrefixedEventName = __webpack_require__(170);\nvar isEventSupported = __webpack_require__(44);\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function injectReactEventListener(ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function setEnabled(enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function isEnabled() {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function listenTo(registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function trapBubbledEvent(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function trapCapturedEvent(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function supportsEventPageXY() {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function ensureScrollValueMonitoring() {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(23);\nvar ViewportMetrics = __webpack_require__(69);\n\nvar getEventModifierState = __webpack_require__(42);\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function button(event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function relatedTarget(event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function pageX(event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function pageY(event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n *
\n *                       wrappers (injected at creation time)\n *                                      +        +\n *                                      |        |\n *                    +-----------------|--------|--------------+\n *                    |                 v        |              |\n *                    |      +---------------+   |              |\n *                    |   +--|    wrapper1   |---|----+         |\n *                    |   |  +---------------+   v    |         |\n *                    |   |          +-------------+  |         |\n *                    |   |     +----|   wrapper2  |--------+   |\n *                    |   |     |    +-------------+  |     |   |\n *                    |   |     |                     |     |   |\n *                    |   v     v                     v     v   | wrapper\n *                    | +---+ +---+   +---------+   +---+ +---+ | invariants\n * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | |   | |   |   |         |   |   | |   | |\n *                    | +---+ +---+   +---------+   +---+ +---+ |\n *                    |  initialize                    close    |\n *                    +-----------------------------------------+\n * 
\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function reinitializeTransaction() {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function isInTransaction() {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function perform(method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? false ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function initializeAll(startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function closeAll(startIndex) {\n !this.isInTransaction() ? false ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\nvar DOMNamespaces = __webpack_require__(32);\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(40);\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '' + html + '';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function setInnerHTML(node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMLazyTree = __webpack_require__(13);\nvar Danger = __webpack_require__(115);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstrumentation = __webpack_require__(7);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(40);\nvar setInnerHTML = __webpack_require__(29);\nvar setTextContent = __webpack_require__(76);\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (false) {\n dangerouslyReplaceNodeWithMarkup = function dangerouslyReplaceNodeWithMarkup(oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array} updates List of update configurations.\n * @internal\n */\n processUpdates: function processUpdates(parentNode, updates) {\n if (false) {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: { toIndex: update.toIndex, content: update.content.toString() }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? false ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? false ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (false) {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: false ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function injectEventPluginOrder(injectedEventPluginOrder) {\n !!eventPluginOrder ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function injectEventPluginsByName(injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? false ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function getPluginModuleForEvent(event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function _resetEventPlugins() {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (false) {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactErrorUtils = __webpack_require__(38);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function injectComponentTree(Injected) {\n ComponentTree = Injected;\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function injectTreeTraversal(Injected) {\n TreeTraversal = Injected;\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (false) {\n validateEventDispatches = function validateEventDispatches(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (false) {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? false ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function getInstanceFromNode(node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function getNodeFromInstance(node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function isAncestor(a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function getLowestCommonAncestor(a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function getParentInstance(inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function traverseTwoPhase(target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function traverseEnterLeave(from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactPropTypesSecret = __webpack_require__(144);\nvar propTypesFactory = __webpack_require__(57);\n\nvar React = __webpack_require__(16);\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function value(props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function checked(props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function checkPropTypes(tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n false ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function getValue(inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function getChecked(inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function executeOnChange(inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function injectEnvironment(environment) {\n !!injected ? false ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function rethrowCaughtError() {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (false) {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = func.bind(null, a);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactInstanceMap = __webpack_require__(22);\nvar ReactInstrumentation = __webpack_require__(7);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg === 'undefined' ? 'undefined' : _typeof(arg);\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (false) {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%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.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%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`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted(publicInstance) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._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.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function enqueueCallback(publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function enqueueCallbackInternal(internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function enqueueForceUpdate(publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function enqueueReplaceState(publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function enqueueSetState(publicInstance, partialState) {\n if (false) {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function enqueueElementInternal(internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function validateCallback(callback, callerName) {\n !(!callback || typeof callback === 'function') ? false ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function createMicrosoftUnsafeLocalFunction(func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement === 'undefined' ? 'undefined' : _typeof(prevElement);\n var nextType = typeof nextElement === 'undefined' ? 'undefined' : _typeof(nextElement);\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar emptyFunction = __webpack_require__(6);\nvar warning = __webpack_require__(1);\n\nvar validateDOMNesting = emptyFunction;\n\nif (false) {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example,
is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n //

tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['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'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for , including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function updatedAncestorInfo(oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function isTagValidWithParent(tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function findInvalidAncestorForTag(tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function findOwnerStack(instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function validateDOMNesting(childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar ReactNoopUpdateQueue = __webpack_require__(48);\n\nvar canDefineProperty = __webpack_require__(80);\nvar emptyObject = __webpack_require__(19);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !((typeof partialState === 'undefined' ? 'undefined' : _typeof(partialState)) === 'object' || typeof partialState === 'function' || partialState == null) ? false ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (false) {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function defineDeprecationWarning(methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar warning = __webpack_require__(1);\n\nfunction warnNoop(publicInstance, callerName) {\n if (false) {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%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.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted(publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function enqueueCallback(publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function enqueueForceUpdate(publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function enqueueReplaceState(publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function enqueueSetState(publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar expression = {\n factories: [],\n canParse: function canParse(string) {\n var trimmed = string.replace(/^\\s+|\\s+$/, '');\n var i = this.factories.length - 1;\n for (; i >= 0; i--) {\n if (this.factories[i].canCreate(trimmed) === true) {\n return true;\n }\n }\n return false;\n },\n parse: function parse(string) {\n var trimmed = string.replace(/^\\s+|\\s+$/, '');\n var i = 0,\n l = this.factories.length,\n factory;\n\n for (; i < l; i++) {\n factory = this.factories[i];\n\n if (factory.canCreate(trimmed) == true) {\n return factory.create(trimmed);\n }\n }\n\n return null;\n },\n parseOperand: function parseOperand(input) {\n return new Operand(input);\n },\n createOperand: function createOperand(number, kind) {\n return Operand.create(number, kind);\n },\n addFactory: function addFactory(factory) {\n this.factories.push(factory);\n }\n};\n\n// List of numbers\nexpression.addFactory({\n regex: /^(-?(?:\\d+|0x[\\d,a-f]+)\\s?)+$/,\n canCreate: function canCreate(string) {\n return this.regex.test(string);\n },\n create: function create(string) {\n var matches = this.regex.exec(string),\n numbers = [],\n input = matches.input;\n\n input.split(' ').forEach(function (n) {\n if (n.trim().length > 0) {\n numbers.push(new Operand(n.trim()));\n }\n });\n\n return new ListOfNumbersExpression(input, numbers);\n }\n});\n\n// Not Expression\nexpression.addFactory({\n regex: /^(~)(-?(?:\\d+|0x[\\d,a-f]+))$/,\n canCreate: function canCreate(string) {\n return this.regex.test(string);\n },\n create: function create(string) {\n var matches = this.regex.exec(string),\n operand = new Operand(matches[2]);\n\n return new SingleOperandExpression(matches.input, operand, matches[1]);\n }\n});\n\n// Multiple operands expression\nexpression.addFactory({\n fullRegex: /^((<<|>>|>>>|\\||\\&|\\^)?(-?((?:\\d+(?!x))|(?:0x[\\d,a-f]+))))+$/,\n regex: /(<<|>>|>>>|\\||\\&|\\^)?(-?((?:\\d+(?!x))|(?:0x[\\d,a-f]+)))/g,\n canCreate: function canCreate(string) {\n this.fullRegex.lastIndex = 0;\n return this.fullRegex.test(this.normalizeString(string));\n },\n create: function create(string) {\n var m,\n operands = [],\n normalizedString = this.normalizeString(string);\n\n while ((m = this.regex.exec(normalizedString)) != null) {\n operands.push(this.parseMatch(m));\n }\n\n return new MultipleOperandsExpression(normalizedString, operands);\n },\n parseMatch: function parseMatch(m) {\n var input = m[0],\n sign = m[1],\n num = m[2];\n\n if (sign == null) {\n return new Operand(num);\n } else {\n return new SingleOperandExpression(input, new Operand(num), sign);\n }\n },\n normalizeString: function normalizeString(string) {\n return string.replace(/\\s+/g, '');\n }\n});\n\n// Represents numeric value\n\nvar Operand = exports.Operand = function () {\n function Operand(input) {\n _classCallCheck(this, Operand);\n\n this.input = input;\n this.value = parseInt(input);\n this.hex = Operand.toHexString(this.value.toString(16));\n this.dec = this.value.toString(10);\n // >>> 0 makes negative numbers like -1 to be displayed as '11111111111111111111111111111111' in binary instead of -1\n this.bin = this.value < 0 ? (this.value >>> 0).toString(2) : this.value.toString(2);\n this.kind = this.input.indexOf('0x') > -1 ? 'hex' : 'dec';\n this.other = this.kind == 'dec' ? this.hex : this.dec;\n this.lengthInBits = Operand.getBitLength(this.value);\n }\n\n _createClass(Operand, [{\n key: 'getLengthInBits',\n value: function getLengthInBits() {\n if (this.value < 0) {\n return 32;\n }\n return Math.floor(Math.log(this.value) / Math.log(2)) + 1;\n }\n }, {\n key: 'getOtherKind',\n value: function getOtherKind(kind) {\n switch (kind || this.kind) {\n case 'dec':\n return 'hex';\n case 'hex':\n return 'dec';\n default:\n throw new Error(kind + \" kind doesn't have opposite kind\");\n }\n }\n }, {\n key: 'toString',\n value: function toString() {\n return this.input;\n }\n }, {\n key: 'setValue',\n value: function setValue(value) {\n console.log('Before ' + value, this);\n this.value = value;\n this.bin = Operand.toKindString(this.value, 'bin');\n this.dec = Operand.toKindString(this.value, 'dec');\n this.hex = Operand.toKindString(this.value, 'hex');\n this.other = Operand.toKindString(this.value, this.getOtherKind());\n this.input = Operand.toKindString(this.value, this.kind);\n console.log('After ' + value, this);\n }\n }], [{\n key: 'getBitLength',\n value: function getBitLength(num) {\n return Math.floor(Math.log(num) / Math.log(2)) + 1;\n }\n }, {\n key: 'getBase',\n value: function getBase(kind) {\n switch (kind) {\n case 'bin':\n return 2;\n case 'hex':\n return 16;\n case 'dec':\n return 10;\n }\n }\n }, {\n key: 'create',\n value: function create(number, kind) {\n var str = number.toString(Operand.getBase(kind));\n if (kind == 'hex') {\n str = Operand.toHexString(str);\n }\n\n return new Operand(str);\n }\n }, {\n key: 'toKindString',\n value: function toKindString(value, kind) {\n switch (kind) {\n case 'hex':\n var hexVal = Math.abs(value).toString(16);\n return value >= 0 ? '0x' + hexVal : '-0x' + hexVal;\n case 'bin':\n return (value >>> 0).toString(2);\n case 'dec':\n return value.toString(10);\n default:\n throw new Error(\"Unexpected kind: \" + kind);\n }\n }\n }, {\n key: 'toHexString',\n value: function toHexString(hex) {\n return hex.indexOf('-') == 0 ? '-0x' + hex.substr(1) : '0x' + hex;\n }\n }]);\n\n return Operand;\n}();\n\n// Expressions like ~1\n\n\nvar SingleOperandExpression = exports.SingleOperandExpression = function () {\n function SingleOperandExpression(expressionString, operand, sign) {\n _classCallCheck(this, SingleOperandExpression);\n\n this.expressionString = expressionString;\n this.operand1 = operand;\n this.sign = sign;\n }\n\n _createClass(SingleOperandExpression, [{\n key: 'apply',\n value: function apply(value) {\n var str = '';\n if (this.sign == '~') {\n str = '~' + this.operand1.value;\n } else {\n str = value + this.sign + this.operand1.value;\n }\n\n return Operand.create(eval(str), this.operand1.kind);\n }\n }, {\n key: 'isShiftExpression',\n value: function isShiftExpression() {\n return this.sign.indexOf('<') >= 0 || this.sign.indexOf('>') >= 0;\n }\n }, {\n key: 'toString',\n value: function toString() {\n return this.sign + this.operand1.toString();\n }\n }]);\n\n return SingleOperandExpression;\n}();\n\n// Expression like 1|2 or 4^5\n\n\nvar TwoOperandExpression = exports.TwoOperandExpression = function TwoOperandExpression(expressionString, operand1, operand2, sign) {\n _classCallCheck(this, TwoOperandExpression);\n\n this.expressionString = expressionString;\n this.operand1 = operand1;\n this.operand2 = operand2;\n this.sign = sign;\n};\n\nvar MultipleOperandsExpression = exports.MultipleOperandsExpression = function MultipleOperandsExpression(expressionString, expressions) {\n _classCallCheck(this, MultipleOperandsExpression);\n\n this.expressionString = expressionString;\n this.expressions = expressions;\n};\n\nvar ListOfNumbersExpression = exports.ListOfNumbersExpression = function () {\n function ListOfNumbersExpression(expressionString, numbers) {\n _classCallCheck(this, ListOfNumbersExpression);\n\n this.expressionString = expressionString;\n this.numbers = numbers;\n this.maxBitsLegnth = numbers.map(function (n) {\n return n.lengthInBits;\n }).reduce(function (n, c) {\n return n >= c ? n : c;\n }, 0);\n }\n\n _createClass(ListOfNumbersExpression, [{\n key: 'toString',\n value: function toString() {\n return this.numbers.map(function (n) {\n return n.value.toString();\n }).join(' ');\n }\n }]);\n\n return ListOfNumbersExpression;\n}();\n\nvar Expression = exports.Expression = function () {\n function Expression() {\n _classCallCheck(this, Expression);\n }\n\n _createClass(Expression, [{\n key: 'toString',\n value: function toString() {\n return this.expressionString ? \"Expression: \" + this.expressionString : this.toString();\n }\n }]);\n\n return Expression;\n}();\n\nvar parser = exports.parser = expression;\n\nvar Parser = exports.Parser = function () {\n function Parser(input, pos) {\n _classCallCheck(this, Parser);\n\n this.input = input;\n this.pos = pos || 0;\n this.buffer = [];\n }\n\n _createClass(Parser, [{\n key: 'parse',\n value: function parse() {\n console.log(this.input.length);\n while (this.pos < this.input.length) {\n this.buffer.push(this.input[this.pos]);\n this.pos++;\n }\n console.log('exit');\n }\n }]);\n\n return Parser;\n}();\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n})(undefined, function () {\n \"use strict\";\n\n var noop = function noop() {};\n var undefinedType = \"undefined\";\n\n function realMethod(methodName) {\n if ((typeof console === 'undefined' ? 'undefined' : _typeof(console)) === undefinedType) {\n return false; // We can't build a real method without a console to log to\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function () {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // these private functions always need `this` to be set properly\n\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if ((typeof console === 'undefined' ? 'undefined' : _typeof(console)) !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = i < level ? noop : this.methodFactory(methodName, level, loggerName);\n }\n }\n\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n var logMethods = [\"trace\", \"debug\", \"info\", \"warn\", \"error\"];\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie = encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n if ((typeof storedLevel === 'undefined' ? 'undefined' : _typeof(storedLevel)) === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(encodeURIComponent(storageKey) + \"=\");\n if (location) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public API\n *\n */\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5 };\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) {\n // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if ((typeof console === 'undefined' ? 'undefined' : _typeof(console)) === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function (persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function (persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Package-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== undefinedType ? window.log : undefined;\n defaultLogger.noConflict = function () {\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== undefinedType && window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n return defaultLogger;\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _is = __webpack_require__(193);\n\nvar _is2 = _interopRequireDefault(_is);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar handlers = [];\n\nvar config = {\n errorHandler: function errorHandler(input, err) {\n return logError(err);\n }\n};\n\nvar cmd = {\n debugMode: false,\n execute: function execute(rawInput) {\n var input = rawInput.trim().toLowerCase();\n var handler = findHandler(input);\n\n if (handler != null) {\n if (this.debugMode) {\n invokeHandler(input, handler);\n } else {\n try {\n invokeHandler(input, handler);\n } catch (e) {\n config.errorHandler(input, e);\n }\n }\n } else {\n logError(input, new Error(\"Unsupported expression: \" + input.trim()));\n }\n },\n commands: function commands(catalog) {\n for (var key in catalog) {\n if (catalog.hasOwnProperty(key)) {\n this.command(key, catalog[key]);\n }\n }\n },\n command: function command(cmd, handler) {\n var h = createHandler(cmd, handler);\n if (h == null) {\n console.warn('unexpected set of arguments: ', Array.prototype.splice.call(arguments));\n return;\n }\n\n if (!_is2.default.aFunction(h.canHandle)) {\n console.warn('handler is missing \"canHandle\" function. registration denied.');\n return;\n }\n\n if (!_is2.default.aFunction(h.handle)) {\n console.warn('handler is missing \"handle\" function. registration denied.');\n return;\n }\n\n handlers.push(h);\n },\n clear: function clear() {\n console.log('clear');\n },\n onError: function onError(handler) {\n config.errorHandler = handler;\n }\n};\n\nfunction logError(err) {\n console.error(err);\n}\n\nfunction invokeHandler(input, handler) {\n var cmdResult = handler.handle({ input: input });\n if (cmdResult != null) {\n console.log(cmdResult);\n }\n}\n\nfunction createHandler(cmd, handler) {\n if (_is2.default.plainObject(cmd)) {\n return cmd;\n }\n\n if (_is2.default.string(cmd)) {\n return { canHandle: function canHandle(input) {\n return input === cmd;\n }, handle: handler };\n }\n\n return null;\n}\n\nfunction findHandler(input) {\n var i = 0;\n for (i; i < handlers.length; i++) {\n if (handlers[i].canHandle(input)) {\n return handlers[i];\n }\n }\n};\n\nexports.default = cmd;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _cmd = __webpack_require__(51);\n\nvar _cmd2 = _interopRequireDefault(_cmd);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InputBox = function (_React$Component) {\n _inherits(InputBox, _React$Component);\n\n function InputBox() {\n _classCallCheck(this, InputBox);\n\n var _this = _possibleConstructorReturn(this, (InputBox.__proto__ || Object.getPrototypeOf(InputBox)).call(this));\n\n _this.history = [];\n _this.historyIndex = -1;\n return _this;\n }\n\n _createClass(InputBox, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.nameInput.focus();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return _react2.default.createElement('input', { id: 'in', type: 'text',\n ref: function ref(input) {\n _this2.nameInput = input;\n },\n onKeyUp: function onKeyUp(e) {\n return _this2.onKeyUp(e);\n },\n onKeyDown: function onKeyDown(e) {\n return _this2.onKeyDown(e);\n },\n className: 'expressionInput mono',\n placeholder: 'type expression like \\'1>>2\\' or \\'help\\' ' });\n }\n }, {\n key: 'onKeyUp',\n value: function onKeyUp(e) {\n var input = e.target;\n if (e.keyCode != 13 || input.value.trim().length == 0) {\n return;\n }\n\n var value = input.value;\n this.history.unshift(value);\n this.historyIndex = -1;\n\n input.value = '';\n _cmd2.default.execute(value);\n console.log(this.history);\n }\n }, {\n key: 'onKeyDown',\n value: function onKeyDown(args) {\n\n if (args.keyCode == 38) {\n var newIndex = this.historyIndex + 1;\n\n if (this.history.length > newIndex) {\n // up\n args.target.value = this.history[newIndex];\n this.historyIndex = newIndex;\n }\n\n args.preventDefault();\n return;\n }\n\n if (args.keyCode == 40) {\n if (this.historyIndex > 0) {\n // down\n args.target.value = this.history[--this.historyIndex];\n }\n\n args.preventDefault();\n }\n }\n }]);\n\n return InputBox;\n}(_react2.default.Component);\n\nexports.default = InputBox;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @typechecks\n */\n\nvar emptyFunction = __webpack_require__(6);\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (false) {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\n};\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\n\nvar factory = __webpack_require__(108);\nmodule.exports = function (isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar PooledClass = __webpack_require__(12);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? false ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(14);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstrumentation = __webpack_require__(7);\n\nvar quoteAttributeValueForBrowser = __webpack_require__(171);\nvar warning = __webpack_require__(1);\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n false ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function createMarkupForID(id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function setAttributeForID(node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function createMarkupForRoot() {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function setAttributeForRoot(node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function createMarkupForProperty(name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function createMarkupForCustomAttribute(name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function setValueForProperty(node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (false) {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function setValueForAttribute(node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (false) {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function deleteValueForAttribute(node, name) {\n node.removeAttribute(name);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function deleteValueForProperty(node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar LinkedValueUtils = __webpack_require__(36);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n false ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n false ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n false ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function getHostProps(inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function mountWrapper(inst, props) {\n if (false) {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n false ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function getSelectValueContext(inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function postUpdateWrapper(inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function injectEmptyComponentFactory(factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function create(instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function injectGenericComponentClass(componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function injectTextComponentClass(componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? false ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMSelection = __webpack_require__(131);\n\nvar containsNode = __webpack_require__(97);\nvar focusNode = __webpack_require__(54);\nvar getActiveElement = __webpack_require__(55);\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function getSelectionInformation() {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function restoreSelection(priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function getSelection(input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function setSelection(input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMLazyTree = __webpack_require__(13);\nvar DOMProperty = __webpack_require__(14);\nvar React = __webpack_require__(16);\nvar ReactBrowserEventEmitter = __webpack_require__(25);\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMContainerInfo = __webpack_require__(125);\nvar ReactDOMFeatureFlags = __webpack_require__(127);\nvar ReactFeatureFlags = __webpack_require__(64);\nvar ReactInstanceMap = __webpack_require__(22);\nvar ReactInstrumentation = __webpack_require__(7);\nvar ReactMarkupChecksum = __webpack_require__(141);\nvar ReactReconciler = __webpack_require__(15);\nvar ReactUpdateQueue = __webpack_require__(39);\nvar ReactUpdates = __webpack_require__(9);\n\nvar emptyObject = __webpack_require__(19);\nvar instantiateReactComponent = __webpack_require__(74);\nvar invariant = __webpack_require__(0);\nvar setInnerHTML = __webpack_require__(29);\nvar shouldUpdateReactComponent = __webpack_require__(45);\nvar warning = __webpack_require__(1);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (false) {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (false) {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function TopLevelWrapper() {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (false) {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function scrollMonitor(container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function _updateRootComponent(prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function _renderNewRootComponent(nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n false ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? false ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function renderSubtreeIntoContainer(parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? false ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function _renderSubtreeIntoContainer(parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? false ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n false ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function render(nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function unmountComponentAtNode(container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n false ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? false ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function _mountImageIntoNode(markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? false ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (false) {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (false) {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar React = __webpack_require__(16);\n\nvar invariant = __webpack_require__(0);\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function getType(node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n true ? false ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function refreshScrollValues(scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? false ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactNodeTypes = __webpack_require__(68);\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar ReactCompositeComponent = __webpack_require__(122);\nvar ReactEmptyComponent = __webpack_require__(63);\nvar ReactHostComponent = __webpack_require__(65);\n\nvar getNextDebugID = __webpack_require__(183);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function ReactCompositeComponentWrapper(element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if ((typeof node === 'undefined' ? 'undefined' : _typeof(node)) === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (false) {\n if (type === undefined || (typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + 'it\\'s defined in.';\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n true ? false ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type === 'undefined' ? 'undefined' : _typeof(type), info) : _prodInvariant('130', type == null ? type : typeof type === 'undefined' ? 'undefined' : _typeof(type), info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n true ? false ? invariant(false, 'Encountered invalid React node of type %s', typeof node === 'undefined' ? 'undefined' : _typeof(node)) : _prodInvariant('131', typeof node === 'undefined' ? 'undefined' : _typeof(node)) : void 0;\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (false) {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (false) {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\nvar escapeTextContentForBrowser = __webpack_require__(28);\nvar setInnerHTML = __webpack_require__(29);\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function setTextContent(node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar REACT_ELEMENT_TYPE = __webpack_require__(137);\n\nvar getIteratorFn = __webpack_require__(168);\nvar invariant = __webpack_require__(0);\nvar KeyEscapeUtils = __webpack_require__(35);\nvar warning = __webpack_require__(1);\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && (typeof component === 'undefined' ? 'undefined' : _typeof(component)) === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children === 'undefined' ? 'undefined' : _typeof(children);\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (false) {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (false) {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar ReactCurrentOwner = __webpack_require__(11);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty)\n // Strip regex characters so we can use it for regex\n .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n // Remove hasOwnProperty from the template to make it generic\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function setItem(id, item) {\n itemMap.set(id, item);\n };\n getItem = function getItem(id) {\n return itemMap.get(id);\n };\n removeItem = function removeItem(id) {\n itemMap['delete'](id);\n };\n getItemIDs = function getItemIDs() {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function addRoot(id) {\n rootIDSet.add(id);\n };\n removeRoot = function removeRoot(id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function getRootIDs() {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function getKeyFromID(id) {\n return '.' + id;\n };\n var getIDFromKey = function getIDFromKey(key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function setItem(id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function getItem(id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function removeItem(id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function getItemIDs() {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function addRoot(id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function removeRoot(id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function getRootIDs() {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction _getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n false ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function onSetChildren(id, nextChildIDs) {\n var item = getItem(id);\n !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? false ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || _typeof(nextChild.element) !== 'object' || nextChild.element == null) ? false ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? false ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? false ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function onBeforeMountComponent(id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function onBeforeUpdateComponent(id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function onMountComponent(id) {\n var item = getItem(id);\n !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function onUpdateComponent(id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function onUnmountComponent(id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function purgeUnmountedComponents() {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function isMounted(id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function getCurrentStackAddendum(topElement) {\n var info = '';\n if (topElement) {\n var name = _getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function getStackAddendumByID(id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function getChildIDs(id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function getDisplayName(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return _getDisplayName(element);\n },\n getElement: function getElement(id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function getOwnerID(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function getParentID(id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function getSource(id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function getText(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function getUpdateCount(id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar canDefineProperty = false;\nif (false) {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function get() {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BinaryStringView = function (_React$Component) {\n _inherits(BinaryStringView, _React$Component);\n\n function BinaryStringView() {\n _classCallCheck(this, BinaryStringView);\n\n return _possibleConstructorReturn(this, (BinaryStringView.__proto__ || Object.getPrototypeOf(BinaryStringView)).apply(this, arguments));\n }\n\n _createClass(BinaryStringView, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'span',\n null,\n this.getChildren()\n );\n }\n }, {\n key: 'onBitClick',\n value: function onBitClick(index, e) {\n if (!this.props.allowFlipBits) {\n return;\n }\n\n if (this.props.onFlipBit) {\n this.props.onFlipBit(index);\n }\n }\n }, {\n key: 'getChildren',\n value: function getChildren() {\n var bits = this.createBits(this.props.binaryString.split(''));\n\n if (this.props.emphasizeBytes) {\n return this.splitIntoBytes(bits);\n }\n\n return bits;\n }\n }, {\n key: 'createBits',\n value: function createBits(bitChars) {\n var _this2 = this;\n\n var allowFlipBits = this.props.allowFlipBits || false;\n var css = allowFlipBits ? ' flipable' : '';\n var classNames = { '0': 'zero' + css, '1': 'one ' + css };\n\n return bitChars.map(function (c, i) {\n return _react2.default.createElement(\n 'span',\n { className: classNames[c], key: i, onClick: function onClick(e) {\n return _this2.onBitClick(i, e);\n } },\n c\n );\n });\n }\n }, {\n key: 'splitIntoBytes',\n value: function splitIntoBytes(bits) {\n var bytes = [];\n\n var key = 0;\n while (bits.length > 0) {\n bytes.push(_react2.default.createElement(\n 'span',\n { key: key++, className: 'byte' },\n bits.splice(0, 8)\n ));\n }\n\n return bytes;\n }\n }]);\n\n return BinaryStringView;\n}(_react2.default.Component);\n\nexports.default = BinaryStringView;\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BitwiseExpressionViewModel = function () {\n function BitwiseExpressionViewModel() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$emphasizeBytes = _ref.emphasizeBytes,\n emphasizeBytes = _ref$emphasizeBytes === undefined ? false : _ref$emphasizeBytes;\n\n _classCallCheck(this, BitwiseExpressionViewModel);\n\n this.emphasizeBytes = emphasizeBytes;\n this.items = [];\n this.maxNumberOfBits = 0;\n }\n\n _createClass(BitwiseExpressionViewModel, [{\n key: 'addOperand',\n value: function addOperand(operand) {\n this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign: '', label: operand.toString(), bin: operand.bin, other: operand.other, css: '' });\n }\n }, {\n key: 'addExpression',\n value: function addExpression(expression) {\n this.maxNumberOfBits = Math.max(expression.operand1.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign: expression.sign, label: expression.operand1.toString(), bin: expression.operand1.bin, other: expression.operand1.other, css: '' });\n }\n }, {\n key: 'addShiftExpressionResult',\n value: function addShiftExpressionResult(expression, resultOperand) {\n this.maxNumberOfBits = Math.max(resultOperand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({\n sign: expression.sign + expression.operand1.input,\n label: resultOperand.toString(),\n bin: resultOperand.bin,\n other: resultOperand.other,\n css: 'expression-result' });\n }\n }, {\n key: 'addExpressionResult',\n value: function addExpressionResult(operand) {\n this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign: '=', label: operand.toString(), bin: operand.bin, other: operand.other, css: 'expression-result' });\n }\n\n // TODO: move this method elsewhere. It is also used in LisOfNumbersExpressionView.js\n\n }], [{\n key: 'buildMultiple',\n value: function buildMultiple(expr, config) {\n\n var op = expr.expressions[0],\n i = 1,\n l = expr.expressions.length,\n ex,\n m = new BitwiseExpressionViewModel(config);\n\n m.addOperand(op);\n\n for (; i < l; i++) {\n ex = expr.expressions[i];\n op = ex.apply(op.value);\n\n if (ex.isShiftExpression()) {\n m.addShiftExpressionResult(ex, op);\n } else {\n m.addExpression(ex);\n m.addExpressionResult(op);\n }\n }\n\n m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);\n return m;\n }\n }, {\n key: 'buildNot',\n value: function buildNot(expression, config) {\n\n var m = new BitwiseExpressionViewModel(config);\n m.addExpression(expression);\n m.addExpressionResult(expression.apply());\n m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);\n return m;\n }\n }]);\n\n return BitwiseExpressionViewModel;\n}();\n\nBitwiseExpressionViewModel.getNumberOfBits = function (bits, emphasizeBytes) {\n if (emphasizeBytes && bits % 8 != 0) {\n if (bits < 8) {\n return 8;\n }\n\n var n = bits - bits % 8;\n return n + 8;\n }\n\n return bits;\n};\n\nexports.default = BitwiseExpressionViewModel;\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n formatString: function formatString(num, kind) {\n return num.toString(getBase(kind || \"bin\"));\n },\n padLeft: function padLeft(str, length, symbol) {\n var sb = Array.prototype.slice.call(str),\n symbol = symbol || \"0\";\n\n if (length == null) {\n return str;\n }\n\n while (length > sb.length) {\n sb.unshift(symbol);\n }\n\n return sb.join('');\n }\n};\n\n\nfunction getBase(kind) {\n switch (kind) {\n case 'bin':\n return 2;\n case 'hex':\n return 16;\n case 'dec':\n return 10;\n }\n}\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(24);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar AboutResult = function (_CommandResult) {\n _inherits(AboutResult, _CommandResult);\n\n function AboutResult(input) {\n _classCallCheck(this, AboutResult);\n\n return _possibleConstructorReturn(this, (AboutResult.__proto__ || Object.getPrototypeOf(AboutResult)).call(this, input));\n }\n\n return AboutResult;\n}(_CommandResult3.default);\n\nexports.default = AboutResult;\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(24);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ErrorResult = function (_CommandResult) {\n _inherits(ErrorResult, _CommandResult);\n\n function ErrorResult(input, error) {\n _classCallCheck(this, ErrorResult);\n\n var _this = _possibleConstructorReturn(this, (ErrorResult.__proto__ || Object.getPrototypeOf(ErrorResult)).call(this, input));\n\n _this.error = error;\n return _this;\n }\n\n return ErrorResult;\n}(_CommandResult3.default);\n\nexports.default = ErrorResult;\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(24);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ExpressionResult = function (_CommandResult) {\n _inherits(ExpressionResult, _CommandResult);\n\n function ExpressionResult(input, expression) {\n _classCallCheck(this, ExpressionResult);\n\n var _this = _possibleConstructorReturn(this, (ExpressionResult.__proto__ || Object.getPrototypeOf(ExpressionResult)).call(this, input));\n\n _this.expression = expression;\n return _this;\n }\n\n return ExpressionResult;\n}(_CommandResult3.default);\n\nexports.default = ExpressionResult;\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(24);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar HelpResult = function (_CommandResult) {\n _inherits(HelpResult, _CommandResult);\n\n function HelpResult(input) {\n _classCallCheck(this, HelpResult);\n\n return _possibleConstructorReturn(this, (HelpResult.__proto__ || Object.getPrototypeOf(HelpResult)).call(this, input));\n }\n\n return HelpResult;\n}(_CommandResult3.default);\n\nexports.default = HelpResult;\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(24);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar UnknownCommandResult = function (_CommandResult) {\n _inherits(UnknownCommandResult, _CommandResult);\n\n function UnknownCommandResult(input) {\n _classCallCheck(this, UnknownCommandResult);\n\n var _this = _possibleConstructorReturn(this, (UnknownCommandResult.__proto__ || Object.getPrototypeOf(UnknownCommandResult)).call(this, input));\n\n _this.message = 'Sorry, i don\\'\\'t know what ' + input + ' is :(';\n return _this;\n }\n\n return UnknownCommandResult;\n}(_CommandResult3.default);\n\nexports.default = UnknownCommandResult;\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(123);\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AppState = function () {\n function AppState(persistData) {\n _classCallCheck(this, AppState);\n\n this.emphasizeBytes = persistData.emphasizeBytes || true;\n this.commandResults = [];\n this.handlers = [];\n this.uiTheme = persistData.uiTheme || 'dark';\n this.debugMode = false;\n }\n\n _createClass(AppState, [{\n key: 'addCommandResult',\n value: function addCommandResult(result) {\n this.commandResults.unshift(result);\n this.triggerChanged();\n }\n }, {\n key: 'clearCommmandResults',\n value: function clearCommmandResults() {\n this.commandResults = [];\n this.triggerChanged();\n }\n }, {\n key: 'toggleEmphasizeBytes',\n value: function toggleEmphasizeBytes() {\n this.emphasizeBytes = !this.emphasizeBytes;\n this.triggerChanged();\n }\n }, {\n key: 'onChange',\n value: function onChange(handler) {\n this.handlers.push(handler);\n }\n }, {\n key: 'triggerChanged',\n value: function triggerChanged() {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.handlers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var h = _step.value;\n\n h();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: 'setUiTheme',\n value: function setUiTheme(theme) {\n this.uiTheme = theme;\n this.triggerChanged();\n }\n }, {\n key: 'getPersistData',\n value: function getPersistData() {\n return {\n emphasizeBytes: this.emphasizeBytes,\n uiTheme: this.uiTheme\n };\n }\n }]);\n\n return AppState;\n}();\n\nexports.default = AppState;\n;\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar storeKey = 'AppState';\n\nexports.default = {\n getPersistedData: function getPersistedData() {\n var json = window.localStorage.getItem(storeKey);\n if (!json) {\n return {};\n }\n\n try {\n return JSON.parse(json);\n } catch (ex) {\n console.error('Failed to parse AppState json. Json Value: \\n' + json, ex);\n return {};\n }\n },\n watch: function watch(appState) {\n var _this = this;\n\n appState.onChange(function () {\n return _this.persistData(appState);\n });\n },\n persistData: function persistData(appState) {\n localStorage.setItem(storeKey, JSON.stringify(appState.getPersistData()));\n }\n};\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _HelpResult = __webpack_require__(87);\n\nvar _HelpResult2 = _interopRequireDefault(_HelpResult);\n\nvar _AboutResult = __webpack_require__(84);\n\nvar _AboutResult2 = _interopRequireDefault(_AboutResult);\n\nvar _UnknownCommandResult = __webpack_require__(88);\n\nvar _UnknownCommandResult2 = _interopRequireDefault(_UnknownCommandResult);\n\nvar _ExpressionResult = __webpack_require__(86);\n\nvar _ExpressionResult2 = _interopRequireDefault(_ExpressionResult);\n\nvar _ErrorResult = __webpack_require__(85);\n\nvar _ErrorResult2 = _interopRequireDefault(_ErrorResult);\n\nvar _expression = __webpack_require__(49);\n\nvar expression = _interopRequireWildcard(_expression);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar cmdConfig = {};\n\nexports.default = {\n initialize: function initialize(cmd, appState) {\n\n cmd.command({\n canHandle: function canHandle(input) {\n return expression.parser.canParse(input);\n },\n handle: function handle(c) {\n var expr = expression.parser.parse(c.input);\n appState.addCommandResult(new _ExpressionResult2.default(c.input, expr));\n }\n });\n\n cmd.commands({\n 'help': function help(c) {\n appState.addCommandResult(new _HelpResult2.default(c.input));\n },\n 'clear': function clear() {\n appState.clearCommmandResults();\n },\n 'em': function em() {\n appState.toggleEmphasizeBytes();\n },\n 'dark': function dark() {\n appState.setUiTheme('dark');\n },\n 'light': function light() {\n appState.setUiTheme('light');\n },\n 'about': function about(c) {\n appState.addCommandResult(new _AboutResult2.default(c.input));\n },\n '-notrack': function notrack() {}\n });\n\n // Last command handler reports that input is unknown\n cmd.command({\n canHandle: function canHandle() {\n return true;\n },\n handle: function handle(c) {\n return appState.addCommandResult(new _UnknownCommandResult2.default(c.input));\n }\n });\n\n cmd.onError(function (input, err) {\n return appState.addCommandResult(new _ErrorResult2.default(input, err));\n });\n }\n};\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _InputBox = __webpack_require__(52);\n\nvar _InputBox2 = _interopRequireDefault(_InputBox);\n\nvar _DisplayResultView = __webpack_require__(188);\n\nvar _DisplayResultView2 = _interopRequireDefault(_DisplayResultView);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar AppRoot = function (_React$Component) {\n _inherits(AppRoot, _React$Component);\n\n function AppRoot() {\n _classCallCheck(this, AppRoot);\n\n return _possibleConstructorReturn(this, (AppRoot.__proto__ || Object.getPrototypeOf(AppRoot)).apply(this, arguments));\n }\n\n _createClass(AppRoot, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this.refresh();\n this.props.appState.onChange(function () {\n return _this2.refresh();\n });\n }\n }, {\n key: 'refresh',\n value: function refresh() {\n this.setState(this.props.appState);\n }\n }, {\n key: 'getIndicator',\n value: function getIndicator(value) {\n return value === true ? 'on' : 'off';\n }\n }, {\n key: 'getResultViews',\n value: function getResultViews() {\n var _this3 = this;\n\n var results = this.state.commandResults.map(function (r, i) {\n return _react2.default.createElement(_DisplayResultView2.default, { key: i, content: r, input: r.input, inputHash: r.inputHash, appState: _this3.props.appState });\n });\n return results;\n }\n }, {\n key: 'toggleEmphasizeBytes',\n value: function toggleEmphasizeBytes() {\n console.log(this.props.appState);\n this.props.appState.toggleEmphasizeBytes();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n return _react2.default.createElement(\n 'div',\n { className: 'app-root ' + this.state.uiTheme },\n _react2.default.createElement(\n 'div',\n { className: 'header' },\n _react2.default.createElement(\n 'h1',\n null,\n 'Bitwise',\n _react2.default.createElement(\n 'span',\n { style: { color: \"#c5c5c5\" } },\n 'Cmd'\n )\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'top-links' },\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'a',\n { href: 'https://github.com/BorisLevitskiy/BitwiseCmd' },\n _react2.default.createElement(\n 'i',\n { className: 'icon github' },\n '\\xA0'\n ),\n _react2.default.createElement(\n 'span',\n { className: 'link-text' },\n 'Project on GitHub'\n )\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'a',\n { href: 'https://twitter.com/BitwiseCmd' },\n _react2.default.createElement(\n 'i',\n { className: 'icon twitter' },\n '\\xA0'\n ),\n _react2.default.createElement(\n 'span',\n { className: 'link-text' },\n 'Twitter'\n )\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'a',\n { href: 'mailto:bitwisecmd@gmail.com?subject=Feedback' },\n _react2.default.createElement(\n 'i',\n { className: 'icon feedback' },\n '\\xA0'\n ),\n _react2.default.createElement(\n 'span',\n { className: 'link-text' },\n 'Send Feedback'\n )\n )\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'expressionInput-container' },\n _react2.default.createElement(_InputBox2.default, null),\n _react2.default.createElement(\n 'span',\n { className: 'configPnl' },\n _react2.default.createElement(\n 'span',\n { id: 'emphasizeBytes', 'data-cmd': 'em', className: \"indicator \" + this.getIndicator(this.state.emphasizeBytes), title: 'Toggle Emphasize Bytes', onClick: function onClick(e) {\n return _this4.toggleEmphasizeBytes();\n } },\n '[em]'\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { id: 'output' },\n this.getResultViews()\n )\n );\n }\n }]);\n\n return AppRoot;\n}(_react2.default.Component);\n\nexports.default = AppRoot;\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n encodeHash: function encodeHash(string) {\n return encodeURI(string.trim().replace(/\\s/g, ','));\n },\n decodeHash: function decodeHash(hashValue) {\n return decodeURI(hashValue).replace(/^\\#/, '').replace(/,/g, ' ');\n },\n getArgs: function getArgs(hashValue) {\n\n var decodedHash = this.decodeHash(hashValue),\n args = { commands: [] };\n\n splitHashList(decodedHash).forEach(function (value) {\n // Support for -debur or -notrack properties\n if (/^\\-[a-zA-Z]+$/.test(value)) {\n args[value.substr(1)] = true;\n return;\n }\n\n args.commands.push(value);\n });\n\n return Object.freeze(args);\n }\n};\n\n\nfunction splitHashList(str) {\n var values = [];\n\n if (str.indexOf('||')) {\n str.split('||').forEach(function (v) {\n if (v.length > 0) {\n values.push(v);\n }\n });\n } else {\n values.push(str);\n }\n\n return values;\n}\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n\n\nvar camelize = __webpack_require__(95);\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar isTextNode = __webpack_require__(105);\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' || typeof obj === 'function')) ? false ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? false ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? false ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? false ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar createArrayFromMixed = __webpack_require__(98);\nvar getMarkupWrap = __webpack_require__(100);\nvar invariant = __webpack_require__(0);\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? false ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? false ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? false ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n\n\nvar hyphenate = __webpack_require__(102);\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar isNode = __webpack_require__(104);\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @typechecks static-only\n */\n\n\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nif (false) {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (false) {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error === 'undefined' ? 'undefined' : _typeof(error));\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar emptyFunction = __webpack_require__(6);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar ReactPropTypesSecret = __webpack_require__(109);\nvar checkPropTypes = __webpack_require__(107);\n\nmodule.exports = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (false) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(false, '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');\n } else if (false) {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n warning(false, '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.', propFullName, componentName);\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n false ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n false ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(false, 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' + 'received %s at index %s.', getPostfixForTypeWarning(checker), i);\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue)) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar focusNode = __webpack_require__(54);\n\nvar AutoFocusUtils = {\n focusDOMComponent: function focusDOMComponent() {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar EventPropagators = __webpack_require__(21);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar FallbackCompositionState = __webpack_require__(118);\nvar SyntheticCompositionEvent = __webpack_require__(155);\nvar SyntheticInputEvent = __webpack_require__(158);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return (typeof opera === 'undefined' ? 'undefined' : _typeof(opera)) === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if ((typeof detail === 'undefined' ? 'undefined' : _typeof(detail)) === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar CSSProperty = __webpack_require__(58);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactInstrumentation = __webpack_require__(7);\n\nvar camelizeStyleName = __webpack_require__(96);\nvar dangerousStyleValue = __webpack_require__(164);\nvar hyphenateStyleName = __webpack_require__(103);\nvar memoizeStringOnly = __webpack_require__(106);\nvar warning = __webpack_require__(1);\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (false) {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function warnHyphenatedStyleName(name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function warnBadVendoredStyleName(name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function warnStyleValueWithSemicolon(name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function warnStyleValueIsNaN(name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function checkRenderMessage(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function warnValidStyle(name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function createMarkupForStyles(styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (false) {\n warnValidStyle(styleName, styleValue, component);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function setValueForStyles(node, styles, component) {\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (false) {\n warnValidStyle(styleName, styles[styleName], component);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(20);\nvar EventPropagators = __webpack_require__(21);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\nvar SyntheticEvent = __webpack_require__(10);\n\nvar getEventTarget = __webpack_require__(43);\nvar isEventSupported = __webpack_require__(44);\nvar isTextInputElement = __webpack_require__(75);\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n}\n\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function get() {\n return activeElementValueProp.get.call(this);\n },\n set: function set(val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\n // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n Object.defineProperty(activeElement, 'value', newValueProp);\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === 'topInput') {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === 'topClick') {\n return targetInst;\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMLazyTree = __webpack_require__(13);\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar createNodesFromMarkup = __webpack_require__(99);\nvar emptyFunction = __webpack_require__(6);\nvar invariant = __webpack_require__(0);\n\nvar Danger = {\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function dangerouslyReplaceNodeWithMarkup(oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n\n};\n\nmodule.exports = Danger;\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(21);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar SyntheticMouseEvent = __webpack_require__(26);\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(12);\n\nvar getTextContentAccessor = __webpack_require__(73);\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function destructor() {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function getText() {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function getData() {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(14);\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function value(node, _value) {\n if (_value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + _value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + _value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactReconciler = __webpack_require__(15);\n\nvar instantiateReactComponent = __webpack_require__(74);\nvar KeyEscapeUtils = __webpack_require__(35);\nvar shouldUpdateReactComponent = __webpack_require__(45);\nvar traverseAllChildren = __webpack_require__(77);\nvar warning = __webpack_require__(1);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && \"production\" === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = __webpack_require__(78);\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (false) {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function instantiateChildren(nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n ) {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (false) {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n ) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function unmountChildren(renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(56)))\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMChildrenOperations = __webpack_require__(31);\nvar ReactDOMIDOperations = __webpack_require__(128);\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar React = __webpack_require__(16);\nvar ReactComponentEnvironment = __webpack_require__(37);\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactErrorUtils = __webpack_require__(38);\nvar ReactInstanceMap = __webpack_require__(22);\nvar ReactInstrumentation = __webpack_require__(7);\nvar ReactNodeTypes = __webpack_require__(68);\nvar ReactReconciler = __webpack_require__(15);\n\nif (false) {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = __webpack_require__(19);\nvar invariant = __webpack_require__(0);\nvar shallowEqual = __webpack_require__(30);\nvar shouldUpdateReactComponent = __webpack_require__(45);\nvar warning = __webpack_require__(1);\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function construct(element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (false) {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function mountComponent(transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? false ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (false) {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (false) {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !((typeof initialState === 'undefined' ? 'undefined' : _typeof(initialState)) === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (false) {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function _constructComponent(doConstruct, publicProps, publicContext, updateQueue) {\n if (false) {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function _constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (false) {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (false) {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (false) {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (false) {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function getHostNode() {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function unmountComponent(safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function _maskContext(context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function _processContext(context) {\n var maskedContext = this._maskContext(context);\n if (false) {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function _processChildContext(currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (false) {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(_typeof(Component.childContextTypes) === 'object') ? false ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (false) {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? false ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function _checkContextTypes(typeSpecs, values, location) {\n if (false) {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function receiveComponent(nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function performUpdateIfNecessary(transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function updateComponent(transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? false ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (false) {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function _processPendingState(props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function _performComponentUpdate(nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (false) {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function _updateRenderedComponent(transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (false) {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (false) {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function _replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function _renderValidatedComponentWithoutOwnerOrContext() {\n var inst = this._instance;\n var renderedElement;\n\n if (false) {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function _renderValidatedComponent() {\n var renderedElement;\n if (\"production\" !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? false ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function attachRef(ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? false ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (false) {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function detachRef(ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function getName() {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function getPublicInstance() {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDefaultInjection = __webpack_require__(136);\nvar ReactMount = __webpack_require__(67);\nvar ReactReconciler = __webpack_require__(15);\nvar ReactUpdates = __webpack_require__(9);\nvar ReactVersion = __webpack_require__(149);\n\nvar findDOMNode = __webpack_require__(165);\nvar getHostComponentFromComposite = __webpack_require__(72);\nvar renderSubtreeIntoContainer = __webpack_require__(172);\nvar warning = __webpack_require__(1);\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function getNodeFromInstance(inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (false) {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.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;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (false) {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar AutoFocusUtils = __webpack_require__(111);\nvar CSSPropertyOperations = __webpack_require__(113);\nvar DOMLazyTree = __webpack_require__(13);\nvar DOMNamespaces = __webpack_require__(32);\nvar DOMProperty = __webpack_require__(14);\nvar DOMPropertyOperations = __webpack_require__(60);\nvar EventPluginHub = __webpack_require__(20);\nvar EventPluginRegistry = __webpack_require__(33);\nvar ReactBrowserEventEmitter = __webpack_require__(25);\nvar ReactDOMComponentFlags = __webpack_require__(61);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMInput = __webpack_require__(129);\nvar ReactDOMOption = __webpack_require__(130);\nvar ReactDOMSelect = __webpack_require__(62);\nvar ReactDOMTextarea = __webpack_require__(133);\nvar ReactInstrumentation = __webpack_require__(7);\nvar ReactMultiChild = __webpack_require__(142);\nvar ReactServerRenderingTransaction = __webpack_require__(147);\n\nvar emptyFunction = __webpack_require__(6);\nvar escapeTextContentForBrowser = __webpack_require__(28);\nvar invariant = __webpack_require__(0);\nvar isEventSupported = __webpack_require__(44);\nvar shallowEqual = __webpack_require__(30);\nvar validateDOMNesting = __webpack_require__(46);\nvar warning = __webpack_require__(1);\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { 'string': true, 'number': true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n false ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? false ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(_typeof(props.dangerouslySetInnerHTML) === 'object' && HTML in props.dangerouslySetInnerHTML) ? false ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || _typeof(props.style) === 'object') ? false ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (false) {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (false) {\n setAndValidateContentChildDev = function setAndValidateContentChildDev(content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? false ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? false ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n};\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? false ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (false) {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function mountComponent(transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (false) {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function _createOpenTagMarkupAndPutListeners(transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (false) {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function _createContentMarkup(transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[_typeof(props.children)] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (false) {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function _createInitialChildren(transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[_typeof(props.children)] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (false) {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function receiveComponent(nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function updateComponent(transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function _updateDOMProperties(lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (false) {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function _updateDOMChildren(lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[_typeof(lastProps.children)] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[_typeof(nextProps.children)] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (false) {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (false) {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (false) {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (false) {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function getHostNode() {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function unmountComponent(safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n true ? false ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (false) {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function getPublicInstance() {\n return getNode(this);\n }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar validateDOMNesting = __webpack_require__(46);\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (false) {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar DOMLazyTree = __webpack_require__(13);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar ReactDOMEmptyComponent = function ReactDOMEmptyComponent(instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function mountComponent(transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function receiveComponent() {},\n getHostNode: function getHostNode() {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function unmountComponent() {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMChildrenOperations = __webpack_require__(31);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function dangerouslyProcessChildrenUpdates(parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar DOMPropertyOperations = __webpack_require__(60);\nvar LinkedValueUtils = __webpack_require__(36);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function getHostProps(inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function mountWrapper(inst, props) {\n if (false) {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function updateWrapper(inst) {\n var props = inst._currentElement.props;\n\n if (false) {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n // eslint-disable-next-line\n if (value != valueAsNumber) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n // eslint-disable-next-line\n } else if (value != node.value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function postMountWrapper(inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? false ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar React = __webpack_require__(16);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMSelect = __webpack_require__(62);\n\nvar warning = __webpack_require__(1);\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n false ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function mountWrapper(inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function postMountWrapper(inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function getHostProps(inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar getNodeForCharacterOffset = __webpack_require__(169);\nvar getTextContentAccessor = __webpack_require__(73);\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar DOMChildrenOperations = __webpack_require__(31);\nvar DOMLazyTree = __webpack_require__(13);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar escapeTextContentForBrowser = __webpack_require__(28);\nvar invariant = __webpack_require__(0);\nvar validateDOMNesting = __webpack_require__(46);\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function ReactDOMTextComponent(text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function mountComponent(transaction, hostParent, hostContainerInfo, context) {\n if (false) {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function receiveComponent(nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function getHostNode() {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? false ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function unmountComponent() {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar LinkedValueUtils = __webpack_require__(36);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function getHostProps(inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function mountWrapper(inst, props) {\n if (false) {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? false ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? false ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function updateWrapper(inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function postMountWrapper(inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? false ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactUpdates = __webpack_require__(9);\nvar Transaction = __webpack_require__(27);\n\nvar emptyFunction = __webpack_require__(6);\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function close() {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function batchedUpdates(callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ARIADOMPropertyConfig = __webpack_require__(110);\nvar BeforeInputEventPlugin = __webpack_require__(112);\nvar ChangeEventPlugin = __webpack_require__(114);\nvar DefaultEventPluginOrder = __webpack_require__(116);\nvar EnterLeaveEventPlugin = __webpack_require__(117);\nvar HTMLDOMPropertyConfig = __webpack_require__(119);\nvar ReactComponentBrowserEnvironment = __webpack_require__(121);\nvar ReactDOMComponent = __webpack_require__(124);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMEmptyComponent = __webpack_require__(126);\nvar ReactDOMTreeTraversal = __webpack_require__(134);\nvar ReactDOMTextComponent = __webpack_require__(132);\nvar ReactDefaultBatchingStrategy = __webpack_require__(135);\nvar ReactEventListener = __webpack_require__(139);\nvar ReactInjection = __webpack_require__(140);\nvar ReactReconcileTransaction = __webpack_require__(145);\nvar SVGDOMPropertyConfig = __webpack_require__(150);\nvar SelectEventPlugin = __webpack_require__(151);\nvar SimpleEventPlugin = __webpack_require__(152);\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(20);\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function handleTopLevel(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar EventListener = __webpack_require__(53);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar PooledClass = __webpack_require__(12);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar getEventTarget = __webpack_require__(43);\nvar getUnboundedScrollPosition = __webpack_require__(101);\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function destructor() {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function setHandleTopLevel(handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function setEnabled(enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function isEnabled() {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function trapBubbledEvent(topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function trapCapturedEvent(topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function monitorScrollValue(refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function dispatchEvent(topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(14);\nvar EventPluginHub = __webpack_require__(20);\nvar EventPluginUtils = __webpack_require__(34);\nvar ReactComponentEnvironment = __webpack_require__(37);\nvar ReactEmptyComponent = __webpack_require__(63);\nvar ReactBrowserEventEmitter = __webpack_require__(25);\nvar ReactHostComponent = __webpack_require__(65);\nvar ReactUpdates = __webpack_require__(9);\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar adler32 = __webpack_require__(163);\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function addChecksumToMarkup(markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function canReuseMarkup(markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactComponentEnvironment = __webpack_require__(37);\nvar ReactInstanceMap = __webpack_require__(22);\nvar ReactInstrumentation = __webpack_require__(7);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactReconciler = __webpack_require__(15);\nvar ReactChildReconciler = __webpack_require__(120);\n\nvar emptyFunction = __webpack_require__(6);\nvar flattenChildren = __webpack_require__(166);\nvar invariant = __webpack_require__(0);\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (false) {\n var getDebugID = function getDebugID(inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function setChildrenForInstrumentation(children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n _reconcilerInstantiateChildren: function _reconcilerInstantiateChildren(nestedChildren, transaction, context) {\n if (false) {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function _reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (false) {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function mountChildren(nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (false) {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (false) {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function updateTextContent(nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function updateMarkup(nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function updateChildren(nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function _updateChildren(nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (false) {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function unmountChildren(safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function moveChild(child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function createChild(child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function removeChild(child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function _mountChildAtIndex(child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function _unmountChild(child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function addComponentAsRefTo(component, ref, owner) {\n !isValidOwner(owner) ? false ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function removeComponentAsRefFrom(component, ref, owner) {\n !isValidOwner(owner) ? false ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar CallbackQueue = __webpack_require__(59);\nvar PooledClass = __webpack_require__(12);\nvar ReactBrowserEventEmitter = __webpack_require__(25);\nvar ReactInputSelection = __webpack_require__(66);\nvar ReactInstrumentation = __webpack_require__(7);\nvar Transaction = __webpack_require__(27);\nvar ReactUpdateQueue = __webpack_require__(39);\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function initialize() {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function close(previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function initialize() {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function close() {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (false) {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function getReactMountReady() {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function getUpdateQueue() {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function checkpoint() {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function rollback(checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function destructor() {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar ReactOwner = __webpack_require__(143);\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || (typeof element === 'undefined' ? 'undefined' : _typeof(element)) !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && (typeof prevElement === 'undefined' ? 'undefined' : _typeof(prevElement)) === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && (typeof nextElement === 'undefined' ? 'undefined' : _typeof(nextElement)) === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || (typeof element === 'undefined' ? 'undefined' : _typeof(element)) !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(12);\nvar Transaction = __webpack_require__(27);\nvar ReactInstrumentation = __webpack_require__(7);\nvar ReactServerUpdateQueue = __webpack_require__(148);\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (false) {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function enqueue() {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function getReactMountReady() {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function getUpdateQueue() {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function destructor() {},\n\n checkpoint: function checkpoint() {},\n\n rollback: function rollback() {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar ReactUpdateQueue = __webpack_require__(39);\n\nvar warning = __webpack_require__(1);\n\nfunction warnNoop(publicInstance, callerName) {\n if (false) {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nmodule.exports = '15.5.4';\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(21);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInputSelection = __webpack_require__(66);\nvar SyntheticEvent = __webpack_require__(10);\n\nvar getActiveElement = __webpack_require__(55);\nvar isTextInputElement = __webpack_require__(75);\nvar shallowEqual = __webpack_require__(30);\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function didPutListener(inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar EventListener = __webpack_require__(53);\nvar EventPropagators = __webpack_require__(21);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar SyntheticAnimationEvent = __webpack_require__(153);\nvar SyntheticClipboardEvent = __webpack_require__(154);\nvar SyntheticEvent = __webpack_require__(10);\nvar SyntheticFocusEvent = __webpack_require__(157);\nvar SyntheticKeyboardEvent = __webpack_require__(159);\nvar SyntheticMouseEvent = __webpack_require__(26);\nvar SyntheticDragEvent = __webpack_require__(156);\nvar SyntheticTouchEvent = __webpack_require__(160);\nvar SyntheticTransitionEvent = __webpack_require__(161);\nvar SyntheticUIEvent = __webpack_require__(23);\nvar SyntheticWheelEvent = __webpack_require__(162);\n\nvar emptyFunction = __webpack_require__(6);\nvar getEventCharCode = __webpack_require__(41);\nvar invariant = __webpack_require__(0);\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? false ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function didPutListener(inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function willDeleteListener(inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function clipboardData(event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticMouseEvent = __webpack_require__(26);\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(23);\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(23);\n\nvar getEventCharCode = __webpack_require__(41);\nvar getEventKey = __webpack_require__(167);\nvar getEventModifierState = __webpack_require__(42);\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function charCode(event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function keyCode(event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function which(event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(23);\n\nvar getEventModifierState = __webpack_require__(42);\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticMouseEvent = __webpack_require__(26);\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function deltaX(event) {\n return 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function deltaY(event) {\n return 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar CSSProperty = __webpack_require__(58);\nvar warning = __webpack_require__(1);\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (false) {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstanceMap = __webpack_require__(22);\n\nvar getHostComponentFromComposite = __webpack_require__(72);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + '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.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n true ? false ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n true ? false ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar KeyEscapeUtils = __webpack_require__(35);\nvar traverseAllChildren = __webpack_require__(77);\nvar warning = __webpack_require__(1);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && \"production\" === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = __webpack_require__(78);\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && (typeof traverseContext === 'undefined' ? 'undefined' : _typeof(traverseContext)) === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (false) {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (false) {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(56)))\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar getEventCharCode = __webpack_require__(41);\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar escapeTextContentForBrowser = __webpack_require__(28);\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactMount = __webpack_require__(67);\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function oneArgumentPooler(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function twoArgumentPooler(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function threeArgumentPooler(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function fourArgumentPooler(a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function standardReleaser(instance) {\n var Klass = this;\n !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function addPoolingTo(CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar PooledClass = __webpack_require__(174);\nvar ReactElement = __webpack_require__(17);\n\nvar emptyFunction = __webpack_require__(6);\nvar traverseAllChildren = __webpack_require__(185);\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(18),\n _assign = __webpack_require__(3);\n\nvar ReactComponent = __webpack_require__(47);\nvar ReactElement = __webpack_require__(17);\nvar ReactPropTypeLocationNames = __webpack_require__(178);\nvar ReactNoopUpdateQueue = __webpack_require__(48);\n\nvar emptyObject = __webpack_require__(19);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function displayName(Constructor, _displayName) {\n Constructor.displayName = _displayName;\n },\n mixins: function mixins(Constructor, _mixins) {\n if (_mixins) {\n for (var i = 0; i < _mixins.length; i++) {\n mixSpecIntoComponent(Constructor, _mixins[i]);\n }\n }\n },\n childContextTypes: function childContextTypes(Constructor, _childContextTypes) {\n if (false) {\n validateTypeDef(Constructor, _childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, _childContextTypes);\n },\n contextTypes: function contextTypes(Constructor, _contextTypes) {\n if (false) {\n validateTypeDef(Constructor, _contextTypes, 'context');\n }\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, _contextTypes);\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function getDefaultProps(Constructor, _getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, _getDefaultProps);\n } else {\n Constructor.getDefaultProps = _getDefaultProps;\n }\n },\n propTypes: function propTypes(Constructor, _propTypes) {\n if (false) {\n validateTypeDef(Constructor, _propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, _propTypes);\n },\n statics: function statics(Constructor, _statics) {\n mixStaticSpecIntoComponent(Constructor, _statics);\n },\n autobind: function autobind() {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n false ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === 'OVERRIDE_BASE') ? false ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? false ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (false) {\n var typeofSpec = typeof spec === 'undefined' ? 'undefined' : _typeof(spec);\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n }\n\n return;\n }\n\n !(typeof spec !== 'function') ? false ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n !!ReactElement.isValidElement(spec) ? false ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? false ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (false) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n !!isReserved ? false ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;\n\n var isInherited = name in Constructor;\n !!isInherited ? false ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && (typeof one === 'undefined' ? 'undefined' : _typeof(one)) === 'object' && (typeof two === 'undefined' ? 'undefined' : _typeof(two)) === 'object') ? false ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? false ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (false) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function replaceState(newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted() {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function ReactClassComponent() {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\nvar didWarnDeprecated = false;\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function createClass(spec) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0;\n didWarnDeprecated = true;\n }\n\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function (props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n !((typeof initialState === 'undefined' ? 'undefined' : _typeof(initialState)) === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (false) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? false ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function injectMixin(mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactElement = __webpack_require__(17);\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (false) {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactPropTypeLocationNames = {};\n\nif (false) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _require = __webpack_require__(17),\n isValidElement = _require.isValidElement;\n\nvar factory = __webpack_require__(57);\n\nmodule.exports = factory(isValidElement);\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactComponent = __webpack_require__(47);\nvar ReactNoopUpdateQueue = __webpack_require__(48);\n\nvar emptyObject = __webpack_require__(19);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nmodule.exports = '15.5.4';\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar ReactElement = __webpack_require__(17);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? false ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar REACT_ELEMENT_TYPE = __webpack_require__(79);\n\nvar getIteratorFn = __webpack_require__(182);\nvar invariant = __webpack_require__(0);\nvar KeyEscapeUtils = __webpack_require__(173);\nvar warning = __webpack_require__(1);\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && (typeof component === 'undefined' ? 'undefined' : _typeof(component)) === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children === 'undefined' ? 'undefined' : _typeof(children);\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (false) {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (false) {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar AboutResultView = function (_React$Component) {\n _inherits(AboutResultView, _React$Component);\n\n function AboutResultView() {\n _classCallCheck(this, AboutResultView);\n\n return _possibleConstructorReturn(this, (AboutResultView.__proto__ || Object.getPrototypeOf(AboutResultView)).apply(this, arguments));\n }\n\n _createClass(AboutResultView, [{\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { className: \"aboutTpl\" },\n _react2.default.createElement(\n \"p\",\n null,\n \" Created by \",\n _react2.default.createElement(\n \"a\",\n { href: \"http://boryslevytskyi.github.io/\" },\n \"Borys Levytskyi\"\n ),\n \". Please give it a like if BitwiseCmd has helped you in your work.\"\n ),\n _react2.default.createElement(\n \"p\",\n null,\n \"If you have an idea, suggestion or you've spotted a bug here, please send it to \",\n _react2.default.createElement(\n \"a\",\n { href: \"mailto:bitwisecmd@gmail.com?subject=Feedback\" },\n \"bitwisecmd@gmail.com\"\n ),\n \" or tweet on \",\n _react2.default.createElement(\n \"a\",\n { href: \"http://twitter.com/BitwiseCmd\" },\n \"@BitwiseCmd\"\n ),\n \". Your feedback is greatly appreciated.\"\n ),\n _react2.default.createElement(\n \"p\",\n null,\n _react2.default.createElement(\n \"a\",\n { href: \"https://github.com/BorisLevitskiy/BitwiseCmd\" },\n \"Project on \",\n _react2.default.createElement(\n \"strong\",\n null,\n \"GitHub\"\n )\n )\n )\n );\n }\n }]);\n\n return AboutResultView;\n}(_react2.default.Component);\n\nexports.default = AboutResultView;\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _expression = __webpack_require__(49);\n\nvar expression = _interopRequireWildcard(_expression);\n\nvar _formatter = __webpack_require__(83);\n\nvar _formatter2 = _interopRequireDefault(_formatter);\n\nvar _BinaryStringView = __webpack_require__(81);\n\nvar _BinaryStringView2 = _interopRequireDefault(_BinaryStringView);\n\nvar _BitwiseExpressionViewModel = __webpack_require__(82);\n\nvar _BitwiseExpressionViewModel2 = _interopRequireDefault(_BitwiseExpressionViewModel);\n\nvar _loglevel = __webpack_require__(50);\n\nvar _loglevel2 = _interopRequireDefault(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BitwiseOperationEpxressionView = function (_React$Component) {\n _inherits(BitwiseOperationEpxressionView, _React$Component);\n\n function BitwiseOperationEpxressionView() {\n _classCallCheck(this, BitwiseOperationEpxressionView);\n\n return _possibleConstructorReturn(this, (BitwiseOperationEpxressionView.__proto__ || Object.getPrototypeOf(BitwiseOperationEpxressionView)).apply(this, arguments));\n }\n\n _createClass(BitwiseOperationEpxressionView, [{\n key: 'render',\n value: function render() {\n var rows = this.getRows();\n if (!rows) {\n return null;\n }\n\n return _react2.default.createElement(\n 'table',\n { className: 'expression' },\n _react2.default.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n }, {\n key: 'getRows',\n value: function getRows() {\n var _this2 = this;\n\n var expr = this.props.expression;\n\n if (expr instanceof expression.SingleOperandExpression) {\n var m = _BitwiseExpressionViewModel2.default.buildNot(expr, { emphasizeBytes: this.props.emphasizeBytes });\n _loglevel2.default.info('Render model', m);\n return m.items.map(function (itm, i) {\n return _react2.default.createElement(ExpressionRow, _extends({ key: i }, itm, { emphasizeBytes: _this2.props.emphasizeBytes, maxNumberOfBits: m.maxNumberOfBits }));\n });\n }\n\n if (expr instanceof expression.MultipleOperandsExpression) {\n var _m = _BitwiseExpressionViewModel2.default.buildMultiple(expr, { emphasizeBytes: this.props.emphasizeBytes });\n _loglevel2.default.info('Render model', _m);\n return _m.items.map(function (itm, i) {\n return _react2.default.createElement(ExpressionRow, _extends({ key: i }, itm, { emphasizeBytes: _this2.props.emphasizeBytes, maxNumberOfBits: _m.maxNumberOfBits }));\n });\n }\n\n return null;\n }\n }]);\n\n return BitwiseOperationEpxressionView;\n}(_react2.default.Component);\n\nexports.default = BitwiseOperationEpxressionView;\n\nvar ExpressionRow = function (_React$Component2) {\n _inherits(ExpressionRow, _React$Component2);\n\n function ExpressionRow() {\n _classCallCheck(this, ExpressionRow);\n\n return _possibleConstructorReturn(this, (ExpressionRow.__proto__ || Object.getPrototypeOf(ExpressionRow)).apply(this, arguments));\n }\n\n _createClass(ExpressionRow, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n sign = _props.sign,\n label = _props.label,\n bin = _props.bin,\n other = _props.other,\n css = _props.css,\n maxNumberOfBits = _props.maxNumberOfBits,\n emphasizeBytes = _props.emphasizeBytes;\n\n\n return _react2.default.createElement(\n 'tr',\n { className: css },\n _react2.default.createElement(\n 'td',\n { className: 'sign' },\n sign\n ),\n _react2.default.createElement(\n 'td',\n { className: 'label' },\n label\n ),\n _react2.default.createElement(\n 'td',\n { className: 'bin' },\n _react2.default.createElement(_BinaryStringView2.default, { emphasizeBytes: emphasizeBytes, binaryString: _formatter2.default.padLeft(bin, maxNumberOfBits, '0'), allowFlipBits: false })\n ),\n _react2.default.createElement(\n 'td',\n { className: 'other' },\n other\n )\n );\n }\n }]);\n\n return ExpressionRow;\n}(_react2.default.Component);\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _HelpResult = __webpack_require__(87);\n\nvar _HelpResult2 = _interopRequireDefault(_HelpResult);\n\nvar _AboutResult = __webpack_require__(84);\n\nvar _AboutResult2 = _interopRequireDefault(_AboutResult);\n\nvar _UnknownCommandResult = __webpack_require__(88);\n\nvar _UnknownCommandResult2 = _interopRequireDefault(_UnknownCommandResult);\n\nvar _HelpResultView = __webpack_require__(190);\n\nvar _HelpResultView2 = _interopRequireDefault(_HelpResultView);\n\nvar _AboutResultView = __webpack_require__(186);\n\nvar _AboutResultView2 = _interopRequireDefault(_AboutResultView);\n\nvar _ExpressionResult = __webpack_require__(86);\n\nvar _ExpressionResult2 = _interopRequireDefault(_ExpressionResult);\n\nvar _ExpressionResultView = __webpack_require__(189);\n\nvar _ExpressionResultView2 = _interopRequireDefault(_ExpressionResultView);\n\nvar _ErrorResult = __webpack_require__(85);\n\nvar _ErrorResult2 = _interopRequireDefault(_ErrorResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DisplayResult = function (_React$Component) {\n _inherits(DisplayResult, _React$Component);\n\n function DisplayResult() {\n _classCallCheck(this, DisplayResult);\n\n return _possibleConstructorReturn(this, (DisplayResult.__proto__ || Object.getPrototypeOf(DisplayResult)).apply(this, arguments));\n }\n\n _createClass(DisplayResult, [{\n key: 'render',\n value: function render() {\n\n if (this.props.content instanceof _UnknownCommandResult2.default) {\n return this.renderUnknown();\n }\n\n if (this.props.content instanceof _ErrorResult2.default) {\n return this.renderError(this.props.content.error.message);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'result' },\n _react2.default.createElement(\n 'div',\n { className: 'input mono' },\n _react2.default.createElement(\n 'span',\n { className: 'cur' },\n '>'\n ),\n this.props.content.input,\n _react2.default.createElement(\n 'a',\n { className: 'hashLink', title: 'Link for this expression', href: window.location.pathname + '#' + this.props.inputHash },\n '#'\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'content' },\n this.findResultComponent(this.props.content)\n )\n );\n }\n }, {\n key: 'renderUnknown',\n value: function renderUnknown() {\n return _react2.default.createElement(\n 'div',\n { className: 'result' },\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n '\\xAF\\\\_(\\u30C4)_/\\xAF Sorry, i don\\'t know what ',\n _react2.default.createElement(\n 'strong',\n null,\n this.props.input\n ),\n ' is'\n )\n );\n }\n }, {\n key: 'renderError',\n value: function renderError(message) {\n return _react2.default.createElement(\n 'div',\n { className: 'result' },\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n '(X_X) Error occurred: ',\n _react2.default.createElement(\n 'strong',\n null,\n message\n )\n )\n );\n }\n }, {\n key: 'findResultComponent',\n value: function findResultComponent(result) {\n if (result instanceof _HelpResult2.default) {\n return _react2.default.createElement(_HelpResultView2.default, { content: result });\n }\n\n if (result instanceof _AboutResult2.default) {\n return _react2.default.createElement(_AboutResultView2.default, null);\n }\n\n if (result instanceof _ExpressionResult2.default) {\n return _react2.default.createElement(_ExpressionResultView2.default, { result: result, emphasizeBytes: this.props.appState.emphasizeBytes });\n }\n\n console.warn('Unknown result:', result);\n return _react2.default.createElement(\n 'span',\n null,\n 'Unknown result: ',\n typeof result === 'undefined' ? 'undefined' : _typeof(result)\n );\n }\n }]);\n\n return DisplayResult;\n}(_react2.default.Component);\n\nexports.default = DisplayResult;\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ListOfNumbersExpressionView = __webpack_require__(191);\n\nvar _ListOfNumbersExpressionView2 = _interopRequireDefault(_ListOfNumbersExpressionView);\n\nvar _BitwiseOperationExpressionView = __webpack_require__(187);\n\nvar _BitwiseOperationExpressionView2 = _interopRequireDefault(_BitwiseOperationExpressionView);\n\nvar _expression = __webpack_require__(49);\n\nvar expression = _interopRequireWildcard(_expression);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ExpressionResultView = function (_React$Component) {\n _inherits(ExpressionResultView, _React$Component);\n\n function ExpressionResultView() {\n _classCallCheck(this, ExpressionResultView);\n\n return _possibleConstructorReturn(this, (ExpressionResultView.__proto__ || Object.getPrototypeOf(ExpressionResultView)).apply(this, arguments));\n }\n\n _createClass(ExpressionResultView, [{\n key: 'render',\n value: function render() {\n var expr = this.props.result.expression;\n\n if (expr instanceof expression.ListOfNumbersExpression) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(_ListOfNumbersExpressionView2.default, { expression: expr, emphasizeBytes: this.props.emphasizeBytes })\n );\n }\n if (expr instanceof expression.SingleOperandExpression || expr instanceof expression.MultipleOperandsExpression) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(_BitwiseOperationExpressionView2.default, { expression: expr, emphasizeBytes: this.props.emphasizeBytes })\n );\n }\n\n console.log('[BitwiseOperationExpressionView] render()', expr);\n\n return _react2.default.createElement(\n 'b',\n null,\n 'Expression: ',\n expr.expressionString\n );\n }\n }]);\n\n return ExpressionResultView;\n}(_react2.default.Component);\n\nexports.default = ExpressionResultView;\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar HelpResultView = function (_React$Component) {\n _inherits(HelpResultView, _React$Component);\n\n function HelpResultView() {\n _classCallCheck(this, HelpResultView);\n\n return _possibleConstructorReturn(this, (HelpResultView.__proto__ || Object.getPrototypeOf(HelpResultView)).apply(this, arguments));\n }\n\n _createClass(HelpResultView, [{\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { className: \"help helpResultTpl\" },\n _react2.default.createElement(\n \"div\",\n { style: { overflow: \"hidden\" } },\n _react2.default.createElement(\n \"div\",\n { style: { float: \"left\", \"marginRight\": \"20px\" } },\n _react2.default.createElement(\n \"div\",\n { className: \"section\" },\n _react2.default.createElement(\n \"strong\",\n null,\n \"Supported Commands\"\n ),\n _react2.default.createElement(\n \"ul\",\n null,\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"23 ^ 34\"\n ),\n \" \\u2014 type bitwise expression to see result in binary (only positive integers are supported now)\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"23 34\"\n ),\n \" \\u2014 type one or more numbers to see their binary representations\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"clear\"\n ),\n \" \\u2014 clear output pane\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"help\"\n ),\n \" \\u2014 display this help\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"em\"\n ),\n \" \\u2014 turn On/Off Emphasize Bytes\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"dark\"\n ),\n \" \\u2014 set Dark theme\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"light\"\n ),\n \" \\u2014 set Light theme\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"about\"\n ),\n \" \\u2014 about the app\"\n )\n )\n )\n ),\n _react2.default.createElement(\n \"div\",\n { style: { \"float\": \"left\" } },\n _react2.default.createElement(\n \"div\",\n { className: \"section\" },\n _react2.default.createElement(\n \"strong\",\n null,\n \"Supported Bitwise Operations\"\n ),\n _react2.default.createElement(\"br\", null),\n _react2.default.createElement(\n \"small\",\n null,\n _react2.default.createElement(\n \"a\",\n { href: \"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators\" },\n \"as implemented in JavaScript engine\"\n )\n ),\n _react2.default.createElement(\n \"ul\",\n null,\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"&\"\n ),\n \" \\u2014 bitwise AND\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"|\"\n ),\n \" \\u2014 bitwise inclusive OR\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"^\"\n ),\n \" \\u2014 bitwise exclusive XOR\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"~\"\n ),\n \" \\u2014 bitwise NOT\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"<<\"\n ),\n \" \\u2014 left shift\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \">>\"\n ),\n \" \\u2014 sign propagating right shift\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \">>>\"\n ),\n \" \\u2014 zero-fill right shift\"\n )\n )\n )\n )\n )\n );\n }\n }]);\n\n return HelpResultView;\n}(_react2.default.Component);\n\nexports.default = HelpResultView;\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _formatter = __webpack_require__(83);\n\nvar _formatter2 = _interopRequireDefault(_formatter);\n\nvar _BinaryStringView = __webpack_require__(81);\n\nvar _BinaryStringView2 = _interopRequireDefault(_BinaryStringView);\n\nvar _BitwiseExpressionViewModel = __webpack_require__(82);\n\nvar _BitwiseExpressionViewModel2 = _interopRequireDefault(_BitwiseExpressionViewModel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListOfNumersExpressionView = function (_React$Component) {\n _inherits(ListOfNumersExpressionView, _React$Component);\n\n function ListOfNumersExpressionView() {\n _classCallCheck(this, ListOfNumersExpressionView);\n\n return _possibleConstructorReturn(this, (ListOfNumersExpressionView.__proto__ || Object.getPrototypeOf(ListOfNumersExpressionView)).apply(this, arguments));\n }\n\n _createClass(ListOfNumersExpressionView, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var expr = this.props.expression;\n var maxBitsLegnth = _BitwiseExpressionViewModel2.default.getNumberOfBits(expr.maxBitsLegnth, this.props.emphasizeBytes);\n var numberRows = expr.numbers.map(function (n, i) {\n return _react2.default.createElement(OperandView, { key: i, operand: n, maxBitsLegnth: maxBitsLegnth, emphasizeBytes: _this2.props.emphasizeBytes });\n });\n return _react2.default.createElement(\n 'table',\n { className: 'expression' },\n _react2.default.createElement(\n 'tbody',\n null,\n numberRows\n )\n );\n }\n }]);\n\n return ListOfNumersExpressionView;\n}(_react2.default.Component);\n\nexports.default = ListOfNumersExpressionView;\n\nvar OperandView = function (_React$Component2) {\n _inherits(OperandView, _React$Component2);\n\n function OperandView() {\n _classCallCheck(this, OperandView);\n\n var _this3 = _possibleConstructorReturn(this, (OperandView.__proto__ || Object.getPrototypeOf(OperandView)).call(this));\n\n _this3.state = { operand: null };\n return _this3;\n }\n\n _createClass(OperandView, [{\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var op = this.props.operand;\n var binaryString = _formatter2.default.padLeft(op.bin, this.props.maxBitsLegnth, '0');\n\n return _react2.default.createElement(\n 'tr',\n { 'data-kind': op.kind },\n _react2.default.createElement(\n 'td',\n { className: 'label' },\n op.input\n ),\n _react2.default.createElement(\n 'td',\n { className: 'bin' },\n _react2.default.createElement(_BinaryStringView2.default, { emphasizeBytes: this.props.emphasizeBytes, binaryString: binaryString, allowFlipBits: true, onFlipBit: function onFlipBit(e) {\n return _this4.flipBit(e);\n } })\n ),\n _react2.default.createElement(\n 'td',\n { className: 'other' },\n op.other\n )\n );\n }\n }, {\n key: 'flipBit',\n value: function flipBit(index) {\n var op = this.props.operand;\n var binaryString = _formatter2.default.padLeft(op.bin, this.props.maxBitsLegnth, '0');\n var arr = binaryString.split('');\n // TODO: this code looks ugly\n arr[index] = arr[index] == '0' ? '1' : '0';\n var bin = arr.join('');\n op.setValue(parseInt(bin, 2));\n\n this.setState({ operand: op });\n }\n }]);\n\n return OperandView;\n}(_react2.default.Component);\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(89);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _InputBox = __webpack_require__(52);\n\nvar _InputBox2 = _interopRequireDefault(_InputBox);\n\nvar _AppState = __webpack_require__(90);\n\nvar _AppState2 = _interopRequireDefault(_AppState);\n\nvar _appStateStore = __webpack_require__(91);\n\nvar _appStateStore2 = _interopRequireDefault(_appStateStore);\n\nvar _cmd = __webpack_require__(51);\n\nvar _cmd2 = _interopRequireDefault(_cmd);\n\nvar _commands = __webpack_require__(92);\n\nvar _commands2 = _interopRequireDefault(_commands);\n\nvar _AppRoot = __webpack_require__(93);\n\nvar _AppRoot2 = _interopRequireDefault(_AppRoot);\n\nvar _hash = __webpack_require__(94);\n\nvar _hash2 = _interopRequireDefault(_hash);\n\nvar _loglevel = __webpack_require__(50);\n\nvar _loglevel2 = _interopRequireDefault(_loglevel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nsetupLogger();\n\nvar appState = createAppState();\n\n_commands2.default.initialize(_cmd2.default, appState);\n\nexecuteStartupCommands();\n\nvar root = _react2.default.createElement(_AppRoot2.default, { appState: appState });\n_reactDom2.default.render(root, document.getElementById('root'));\n\n_loglevel2.default.debug(\"started\");\n\nfunction createAppState() {\n var stateData = _appStateStore2.default.getPersistedData();\n var appState = new _AppState2.default(stateData);\n _appStateStore2.default.watch(appState);\n _loglevel2.default.debug(\"appState\", appState);\n return appState;\n}\n\nfunction setupLogger() {\n if (window.location.host != 'bitwisecmd.com' || window.location.hash.indexOf('-debug') > -1) {\n _loglevel2.default.setLevel(\"trace\");\n } else {\n _loglevel2.default.setLevel(\"warn\");\n }\n}\n\nfunction executeStartupCommands() {\n var hashArgs = _hash2.default.getArgs(window.location.hash);\n\n var startupCommands = ['help', '1|2&6', '1<<0x2a', '2 4 8 16 32'];\n\n if (hashArgs.commands.length > 0) {\n startupCommands = hashArgs.commands;\n }\n\n startupCommands.forEach(_cmd2.default.execute.bind(_cmd2.default));\n}\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = {\n plainObject: function plainObject(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj)) == \"object\" && obj instanceof Object;\n },\n\n aFunction: function aFunction(obj) {\n return typeof obj == \"function\";\n },\n\n string: function string(obj) {\n return typeof obj == \"string\";\n },\n\n regex: function regex(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj)) == \"object\" && this.constructedFrom(RegExp);\n },\n\n constructedFrom: function constructedFrom(obj, ctor) {\n return obj instanceof ctor;\n },\n\n htmlElement: function htmlElement(obj) {\n return obj instanceof HtmlElement;\n },\n\n array: function array(obj) {\n return obj instanceof Array;\n },\n\n number: function number(num) {\n return typeof num == \"number\" && !isNaN(num);\n }\n};\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// bundle.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"http://localhost:8080/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 192);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 43d8e49d1fec2897c144","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/invariant.js","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n })();\n}\n\nmodule.exports = warning;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/warning.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/reactProdInvariant.js","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/object-assign/index.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMComponentTree.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/ExecutionEnvironment.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/emptyFunction.js","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactInstrumentation.js","'use strict';\n\nmodule.exports = require('./lib/React');\n\n\n\n// WEBPACK FOOTER //\n// ./~/react/react.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactUpdates.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactCurrentOwner.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/PooledClass.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = require('./DOMNamespaces');\nvar setInnerHTML = require('./setInnerHTML');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setTextContent = require('./setTextContent');\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some <object> plugins (like Flash Player) will read\n // <param> nodes immediately upon insertion into the DOM, so <object>\n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMLazyTree.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':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';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMProperty.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactRef = require('./ReactRef');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n ) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactReconciler.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactChildren = require('./ReactChildren');\nvar ReactComponent = require('./ReactComponent');\nvar ReactPureComponent = require('./ReactPureComponent');\nvar ReactClass = require('./ReactClass');\nvar ReactDOMFactories = require('./ReactDOMFactories');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypes = require('./ReactPropTypes');\nvar ReactVersion = require('./ReactVersion');\n\nvar onlyChild = require('./onlyChild');\nvar warning = require('fbjs/lib/warning');\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== 'production') {\n var canDefineProperty = require('./canDefineProperty');\n var ReactElementValidator = require('./ReactElementValidator');\n var didWarnPropTypesDeprecated = false;\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (process.env.NODE_ENV !== 'production') {\n var warned = false;\n __spread = function () {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactComponent,\n PureComponent: ReactPureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function (mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\n// TODO: Fix tests so that this deprecation warning doesn't cause failures.\nif (process.env.NODE_ENV !== 'production') {\n if (canDefineProperty) {\n Object.defineProperty(React, 'PropTypes', {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated. Use ' + 'the prop-types package from npm instead.') : void 0;\n didWarnPropTypesDeprecated = true;\n return ReactPropTypes;\n }\n });\n }\n}\n\nmodule.exports = React;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/React.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar warning = require('fbjs/lib/warning');\nvar canDefineProperty = require('./canDefineProperty');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactElement.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/reactProdInvariant.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/emptyObject.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EventPluginHub.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar warning = require('fbjs/lib/warning');\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EventPropagators.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactInstanceMap.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticUIEvent.js","export default class CommandResult {\n constructor(input) {\n this.input = input;\n this.inputHash = this.encodeHash(input);\n }\n\n encodeHash (string) {\n return encodeURI(string.trim().replace(/\\s/g,','));\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/CommandResult.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactEventEmitterMixin = require('./ReactEventEmitterMixin');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getVendorPrefixedEventName = require('./getVendorPrefixedEventName');\nvar isEventSupported = require('./isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactBrowserEventEmitter.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticMouseEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/Transaction.js","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n'use strict';\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/escapeTextContentForBrowser.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar DOMNamespaces = require('./DOMNamespaces');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/setInnerHTML.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/shallowEqual.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: { toIndex: update.toIndex, content: update.content.toString() }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMChildrenOperations.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMNamespaces.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EventPluginRegistry.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EventPluginUtils.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/KeyEscapeUtils.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\nvar propTypesFactory = require('prop-types/factory');\n\nvar React = require('react/lib/React');\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/LinkedValueUtils.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactComponentEnvironment.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = func.bind(null, a);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactErrorUtils.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%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.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%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`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._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.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactUpdateQueue.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getEventCharCode.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getEventModifierState.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG <use> element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getEventTarget.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/isEventSupported.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/shouldUpdateReactComponent.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['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'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/validateDOMNesting.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactComponent.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%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.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactNoopUpdateQueue.js","var expression = {\n factories:[],\n canParse: function(string) {\n var trimmed = string.replace(/^\\s+|\\s+$/, '');\n var i = this.factories.length-1;\n for(;i>=0;i--) {\n if(this.factories[i].canCreate(trimmed) === true){\n return true;\n }\n }\n return false;\n },\n parse: function(string) {\n var trimmed = string.replace(/^\\s+|\\s+$/, '');\n var i = 0, l = this.factories.length, factory;\n\n for(;i<l;i++) {\n factory = this.factories[i];\n\n if(factory.canCreate(trimmed) == true){\n return factory.create(trimmed);\n }\n }\n\n return null;\n },\n parseOperand: function(input) {\n return new Operand(input);\n },\n createOperand: function(number, kind) {\n return Operand.create(number, kind);\n },\n addFactory: function(factory) {\n this.factories.push(factory);\n }\n };\n\n // List of numbers\n expression.addFactory({\n regex: /^(-?(?:\\d+|0x[\\d,a-f]+)\\s?)+$/,\n canCreate: function(string) {\n return this.regex.test(string);\n },\n create: function (string) {\n var matches = this.regex.exec(string),\n numbers = [],\n input = matches.input;\n\n input.split(' ').forEach(function(n){\n if(n.trim().length > 0) {\n numbers.push(new Operand(n.trim()));\n }\n });\n\n return new ListOfNumbersExpression(input, numbers);\n }\n });\n\n // Not Expression\n expression.addFactory({\n regex: /^(~)(-?(?:\\d+|0x[\\d,a-f]+))$/,\n canCreate: function(string) {\n return this.regex.test(string);\n },\n create: function (string) {\n var matches = this.regex.exec(string),\n operand = new Operand(matches[2]);\n\n return new SingleOperandExpression(matches.input, operand, matches[1]);\n }\n });\n\n // Multiple operands expression\n expression.addFactory({\n fullRegex: /^((<<|>>|>>>|\\||\\&|\\^)?(-?((?:\\d+(?!x))|(?:0x[\\d,a-f]+))))+$/,\n regex: /(<<|>>|>>>|\\||\\&|\\^)?(-?((?:\\d+(?!x))|(?:0x[\\d,a-f]+)))/g,\n canCreate: function(string) {\n this.fullRegex.lastIndex = 0;\n return this.fullRegex.test(this.normalizeString(string));\n },\n create: function (string) {\n var m, operands = [],\n normalizedString = this.normalizeString(string);\n\n while ((m = this.regex.exec(normalizedString)) != null) {\n operands.push(this.parseMatch(m));\n }\n\n return new MultipleOperandsExpression(normalizedString, operands)\n },\n parseMatch: function (m) {\n var input = m[0],\n sign = m[1],\n num = m[2];\n\n if(sign == null) {\n return new Operand(num);\n } else {\n return new SingleOperandExpression(input, new Operand(num), sign);\n }\n },\n normalizeString: function (string) {\n return string.replace(/\\s+/g,'');\n }\n });\n\n\n// Represents numeric value\nexport class Operand {\n constructor(input) {\n this.input = input;\n this.value = parseInt(input);\n this.hex = Operand.toHexString(this.value.toString(16));\n this.dec = this.value.toString(10);\n // >>> 0 makes negative numbers like -1 to be displayed as '11111111111111111111111111111111' in binary instead of -1\n this.bin = this.value < 0 ? (this.value >>> 0).toString(2) : this.value.toString(2);\n this.kind = this.input.indexOf('0x') > -1 ? 'hex' : 'dec';\n this.other = this.kind == 'dec' ? this.hex : this.dec;\n this.lengthInBits = Operand.getBitLength(this.value);\n }\n \n getLengthInBits() {\n if(this.value < 0) {\n return 32;\n }\n return Math.floor(Math.log(this.value) / Math.log(2)) + 1;\n };\n\n getOtherKind(kind) {\n switch(kind || this.kind) {\n case 'dec': return 'hex';\n case 'hex': return 'dec';\n default : throw new Error(kind + \" kind doesn't have opposite kind\")\n }\n };\n\n toString() {\n return this.input;\n }\n\n setValue(value) {\n console.log('Before ' + value, this);\n this.value = value;\n this.bin = Operand.toKindString(this.value, 'bin');\n this.dec = Operand.toKindString(this.value, 'dec');\n this.hex = Operand.toKindString(this.value, 'hex');\n this.other = Operand.toKindString(this.value, this.getOtherKind());\n this.input = Operand.toKindString(this.value, this.kind);\n console.log('After ' + value, this);\n }\n \n static getBitLength(num) {\n return Math.floor(Math.log(num) / Math.log(2)) + 1\n } \n \n static getBase(kind){\n switch (kind){\n case 'bin': return 2;\n case 'hex': return 16;\n case 'dec': return 10;\n }\n };\n\n static create(number, kind) {\n var str = number.toString(Operand.getBase(kind));\n if(kind == 'hex') {\n str = Operand.toHexString(str);\n }\n\n return new Operand(str);\n };\n\n static toKindString(value, kind) {\n switch(kind) {\n case 'hex':\n var hexVal = Math.abs(value).toString(16);\n return value >= 0 ? '0x' + hexVal : '-0x' + hexVal;\n case 'bin':\n return (value>>>0).toString(2);\n case 'dec':\n return value.toString(10);\n default:\n throw new Error(\"Unexpected kind: \" + kind)\n }\n };\n\n static toHexString (hex) {\n return hex.indexOf('-') == 0 ? '-0x' + hex.substr(1) : '0x' + hex;\n };\n}\n\n// Expressions like ~1\nexport class SingleOperandExpression {\n constructor(expressionString, operand, sign) {\n this.expressionString = expressionString;\n this.operand1 = operand;\n this.sign = sign;\n }\n \n apply(value) {\n var str = '';\n if(this.sign == '~'){\n str = '~' + this.operand1.value;\n } else {\n str = value + this.sign + this.operand1.value\n }\n\n return Operand.create(eval(str), this.operand1.kind);\n };\n\n isShiftExpression() {\n return this.sign.indexOf('<') >= 0 || this.sign.indexOf('>')>= 0;\n };\n\n toString() {\n return this.sign + this.operand1.toString();\n }\n}\n\n// Expression like 1|2 or 4^5\nexport class TwoOperandExpression {\n constructor(expressionString, operand1, operand2, sign) {\n this.expressionString = expressionString;\n this.operand1 = operand1;\n this.operand2 = operand2;\n this.sign = sign;\n }\n}\n\nexport class MultipleOperandsExpression {\n constructor(expressionString, expressions) {\n this.expressionString = expressionString;\n this.expressions = expressions;\n }\n}\n\nexport class ListOfNumbersExpression {\n constructor(expressionString, numbers) {\n this.expressionString = expressionString;\n this.numbers = numbers;\n this.maxBitsLegnth = numbers.map(n => n.lengthInBits).reduce((n , c) => n >= c ? n : c, 0);\n }\n\n toString() {\n return this.numbers.map(n => n.value.toString()).join(' ');\n }\n}\n\nexport class Expression {\n toString() {\n return this.expressionString ? \"Expression: \" + this.expressionString : this.toString();\n };\n}\n \nexport var parser = expression;\n\n\nexport class Parser {\n constructor(input, pos) {\n this.input = input;\n this.pos = pos || 0;\n this.buffer = [];\n }\n\n parse() {\n console.log(this.input.length);\n while(this.pos<this.input.length) {\n this.buffer.push(this.input[this.pos]);\n this.pos++;\n }\n console.log('exit');\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/expression.js","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n function realMethod(methodName) {\n if (typeof console === undefinedType) {\n return false; // We can't build a real method without a console to log to\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // these private functions always need `this` to be set properly\n\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n }\n\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public API\n *\n */\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Package-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n return defaultLogger;\n}));\n\n\n\n// WEBPACK FOOTER //\n// ./~/loglevel/lib/loglevel.js","import is from './is';\n \n var handlers = [];\n\nvar config = {\n errorHandler: (input, err) => logError(err)\n}\n\nvar cmd = {\n debugMode: false,\n execute: function(rawInput) {\n var input = rawInput.trim().toLowerCase();\n var handler = findHandler(input);\n\n if(handler != null) {\n if(this.debugMode) {\n invokeHandler(input, handler);\n } else {\n try {\n invokeHandler(input, handler);\n } catch (e) {\n config.errorHandler(input, e);\n }\n }\n }\n else {\n logError(input, new Error(\"Unsupported expression: \" + input.trim()));\n }\n },\n commands: function(catalog) {\n for(var key in catalog) {\n if(catalog.hasOwnProperty(key)) {\n this.command(key, catalog[key]);\n }\n }\n },\n command: function(cmd, handler) {\n var h = createHandler(cmd, handler);\n if(h == null){\n console.warn('unexpected set of arguments: ', Array.prototype.splice.call(arguments));\n return;\n }\n\n if(!is.aFunction(h.canHandle)) {\n console.warn('handler is missing \"canHandle\" function. registration denied.');\n return;\n }\n\n if(!is.aFunction(h.handle)) {\n console.warn('handler is missing \"handle\" function. registration denied.');\n return;\n }\n\n handlers.push(h);\n },\n clear: function() {\n console.log('clear');\n },\n onError: function(handler) {\n config.errorHandler = handler;\n }\n };\n\n function logError(err) {\n console.error(err)\n }\n\n function invokeHandler (input, handler) {\n var cmdResult = handler.handle({ input: input});\n if(cmdResult != null) {\n console.log(cmdResult);\n }\n }\n\n function createHandler (cmd, handler) {\n if(is.plainObject(cmd)) {\n return cmd;\n }\n\n if(is.string(cmd)) {\n return { canHandle: function (input) { return input === cmd; }, handle: handler };\n }\n\n return null;\n }\n\n function findHandler (input) {\n var i= 0;\n for(i;i<handlers.length; i++) {\n if(handlers[i].canHandle(input)) {\n return handlers[i];\n }\n }\n };\n\nexport default cmd;\n\n\n// WEBPACK FOOTER //\n// ./src/app/cmd.js","import React from 'react';\nimport cmd from '../cmd';\n\nexport default class InputBox extends React.Component {\n constructor() {\n super();\n this.history = [];\n this.historyIndex = -1;\n }\n\n componentDidMount(){\n this.nameInput.focus();\n }\n\n render() {\n return <input id=\"in\" type=\"text\"\n ref={(input) => { this.nameInput = input; }} \n onKeyUp={e => this.onKeyUp(e)}\n onKeyDown={e => this.onKeyDown(e)}\n className=\"expressionInput mono\"\n placeholder=\"type expression like '1>>2' or 'help' \"/>;\n }\n\n onKeyUp(e) {\n var input = e.target;\n if (e.keyCode != 13 || input.value.trim().length == 0) {\n return;\n }\n\n var value = input.value;\n this.history.unshift(value);\n this.historyIndex = -1;\n\n input.value = ''; \n cmd.execute(value);\n console.log(this.history);\n }\n\n onKeyDown(args) {\n\n if(args.keyCode == 38) {\n var newIndex = this.historyIndex+1;\n\n if (this.history.length > newIndex) { // up\n args.target.value = this.history[newIndex];\n this.historyIndex = newIndex;\n }\n\n args.preventDefault();\n return;\n }\n\n if(args.keyCode == 40) {\n if(this.historyIndex > 0) { // down\n args.target.value = this.history[--this.historyIndex];\n }\n\n args.preventDefault();\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/InputBox.jsx","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/EventListener.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/focusNode.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/getActiveElement.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n// WEBPACK FOOTER //\n// ./~/process/browser.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = require('./factoryWithTypeCheckers');\nmodule.exports = function(isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/prop-types/factory.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/CSSProperty.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/CallbackQueue.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMPropertyOperations.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMComponentFlags.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMSelect.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactEmptyComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactFeatureFlags.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactHostComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactInputSelection.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactMount.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactNodeTypes.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ViewportMetrics.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/accumulateInto.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/forEachAccumulated.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getHostComponentFromComposite.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getTextContentAccessor.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('react/lib/getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (process.env.NODE_ENV !== 'production') {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + 'it\\'s defined in.';\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/instantiateReactComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/isTextInputElement.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/setTextContent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/traverseAllChildren.js","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty)\n // Strip regex characters so we can use it for regex\n .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n // Remove hasOwnProperty from the template to make it generic\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactComponentTreeHook.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactElementSymbol.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/canDefineProperty.js","import React from 'react';\n\nexport default class BinaryStringView extends React.Component {\n render() {\n return <span>{this.getChildren()}</span>\n }\n\n onBitClick(index, e) {\n if(!this.props.allowFlipBits) {\n return;\n }\n\n if(this.props.onFlipBit) {\n this.props.onFlipBit(index);\n }\n }\n\n getChildren() {\n var bits = this.createBits(this.props.binaryString.split(''));\n \n if(this.props.emphasizeBytes) {\n return this.splitIntoBytes(bits);\n }\n\n return bits;\n }\n\n createBits(bitChars) {\n const allowFlipBits = this.props.allowFlipBits || false;\n const css = allowFlipBits ? ' flipable' : ''\n const classNames = { '0': `zero${css}`, '1' : `one ${css}` };\n \n return bitChars.map((c, i) => <span className={classNames[c]} key={i} onClick={e => this.onBitClick(i, e)}>{c}</span>);\n }\n\n splitIntoBytes(bits) {\n const bytes = [];\n\n var key = 0;\n while(bits.length > 0) {\n bytes.push(<span key={key++} className=\"byte\">{bits.splice(0, 8)}</span>);\n }\n \n return bytes;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/BinaryStringView.jsx","export default class BitwiseExpressionViewModel {\n\n constructor({ emphasizeBytes = false } = {}) {\n this.emphasizeBytes = emphasizeBytes;\n this.items = [];\n this.maxNumberOfBits = 0;\n }\n\n static buildMultiple (expr, config) {\n\n var op = expr.expressions[0],\n i = 1, l = expr.expressions.length,\n ex, m = new BitwiseExpressionViewModel(config);\n\n m.addOperand(op);\n\n for (;i<l;i++) {\n ex = expr.expressions[i];\n op = ex.apply(op.value);\n\n if(ex.isShiftExpression()){\n m.addShiftExpressionResult(ex, op);\n } else {\n m.addExpression(ex);\n m.addExpressionResult(op);\n }\n }\n\n m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);\n return m;\n };\n\n static buildNot (expression, config) {\n \n var m = new BitwiseExpressionViewModel(config);\n m.addExpression(expression);\n m.addExpressionResult(expression.apply());\n m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);\n return m;\n };\n\n addOperand(operand) {\n this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign:'', label: operand.toString(), bin: operand.bin, other: operand.other, css: ''});\n };\n\n addExpression(expression) {\n this.maxNumberOfBits = Math.max(expression.operand1.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign: expression.sign, label: expression.operand1.toString(), bin: expression.operand1.bin, other: expression.operand1.other, css: ''});\n };\n\n addShiftExpressionResult(expression, resultOperand) {\n this.maxNumberOfBits = Math.max(resultOperand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({\n sign: expression.sign + expression.operand1.input,\n label: resultOperand.toString(),\n bin: resultOperand.bin,\n other: resultOperand.other,\n css: 'expression-result'});\n };\n\n addExpressionResult(operand) {\n this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign:'=', label: operand.toString(), bin: operand.bin, other: operand.other, css: 'expression-result'});\n };\n\n // TODO: move this method elsewhere. It is also used in LisOfNumbersExpressionView.js\n static getNumberOfBits = function (bits, emphasizeBytes) {\n if(emphasizeBytes && bits % 8 != 0) {\n if(bits < 8) {\n return 8;\n }\n\n var n = bits - (bits % 8);\n return n + 8;\n }\n\n return bits;\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/models/BitwiseExpressionViewModel.js","export default {\n formatString: function(num, kind) {\n return num.toString(getBase(kind || \"bin\"));\n },\n padLeft: function (str, length, symbol) {\n var sb = Array.prototype.slice.call(str), symbol = symbol || \"0\";\n\n if(length == null) {\n return str;\n }\n\n while(length > sb.length) {\n sb.unshift(symbol);\n }\n\n return sb.join('');\n }\n };\n\n function getBase(kind) {\n switch (kind){\n case 'bin': return 2;\n case 'hex': return 16;\n case 'dec': return 10;\n }\n }\n\n\n// WEBPACK FOOTER //\n// ./src/app/formatter.js","import CommandResult from './CommandResult';\n\nexport default class AboutResult extends CommandResult {\n constructor(input) {\n super(input);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/AboutResult.js","import CommandResult from './CommandResult';\n\nexport default class ErrorResult extends CommandResult {\n constructor(input, error) {\n super(input);\n this.error = error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/ErrorResult.js","import CommandResult from './CommandResult';\r\n\r\nexport default class ExpressionResult extends CommandResult {\r\n constructor(input, expression) {\r\n super(input);\r\n this.expression = expression;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/ExpressionResult.js","import CommandResult from './CommandResult';\n\nexport default class HelpResult extends CommandResult {\n constructor(input) {\n super(input);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/HelpResult.js","import CommandResult from './CommandResult';\n\nexport default class UnknownCommandResult extends CommandResult {\n constructor(input) {\n super(input);\n this.message = `Sorry, i don''t know what ${input} is :(`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/UnknownCommandResult.js","'use strict';\n\nmodule.exports = require('./lib/ReactDOM');\n\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/index.js","export default class AppState {\n constructor(persistData) {\n this.emphasizeBytes = persistData.emphasizeBytes || true;\n this.commandResults = [];\n this.handlers = [];\n this.uiTheme = persistData.uiTheme || 'dark';\n this.debugMode = false;\n }\n\n addCommandResult(result) {\n this.commandResults.unshift(result);\n this.triggerChanged();\n }\n\n clearCommmandResults() {\n this.commandResults = [];\n this.triggerChanged();\n }\n\n toggleEmphasizeBytes() {\n this.emphasizeBytes = !this.emphasizeBytes;\n this.triggerChanged();\n }\n\n onChange(handler) {\n this.handlers.push(handler);\n }\n\n triggerChanged() {\n for(var h of this.handlers) {\n h();\n }\n }\n\n setUiTheme(theme) {\n this.uiTheme = theme;\n this.triggerChanged(); \n }\n\n getPersistData() {\n return {\n emphasizeBytes: this.emphasizeBytes,\n uiTheme: this.uiTheme \n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/AppState.js","const storeKey = 'AppState';\n\nexport default {\n getPersistedData() {\n var json = window.localStorage.getItem(storeKey);\n if(!json) {\n return {};\n }\n\n try {\n return JSON.parse(json);\n }\n catch(ex) {\n console.error('Failed to parse AppState json. Json Value: \\n' + json, ex);\n return {};\n }\n },\n\n watch (appState) {\n appState.onChange(() => this.persistData(appState));\n },\n\n persistData(appState) {\n localStorage.setItem(storeKey, JSON.stringify(appState.getPersistData()));\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/appStateStore.js","import HelpResult from './models/HelpResult';\nimport AboutResult from './models/AboutResult';\nimport UnknownCommandResult from './models/UnknownCommandResult';\nimport ExpressionResult from './models/ExpressionResult';\nimport ErrorResult from './models/ErrorResult';\nimport * as expression from './expression';\n\nvar cmdConfig = {};\n\nexport default {\n initialize (cmd, appState) {\n\n cmd.command({\n canHandle: (input) => expression.parser.canParse(input),\n handle: function(c) {\n var expr = expression.parser.parse(c.input);\n appState.addCommandResult(new ExpressionResult(c.input, expr));\n } \n })\n\n cmd.commands({\n 'help': function(c) {\n appState.addCommandResult(new HelpResult(c.input)); \n },\n 'clear': function() {\n appState.clearCommmandResults();\n },\n 'em': function() {\n appState.toggleEmphasizeBytes();\n },\n 'dark': function() {\n appState.setUiTheme('dark');\n },\n 'light': function () {\n appState.setUiTheme('light');\n },\n 'about': function(c) {\n appState.addCommandResult(new AboutResult(c.input));\n },\n '-notrack': function () {}\n });\n\n // Last command handler reports that input is unknown\n cmd.command({\n canHandle: () => true,\n handle: (c) => appState.addCommandResult(new UnknownCommandResult(c.input))\n });\n\n cmd.onError((input, err) => appState.addCommandResult(new ErrorResult(input, err)));\n }\n }\n\n\n// WEBPACK FOOTER //\n// ./src/app/commands.js","import React from 'react';\nimport InputBox from './InputBox';\nimport DisplayResultView from './results/DisplayResultView';\n\nexport default class AppRoot extends React.Component {\n componentWillMount() {\n this.refresh();\n this.props.appState.onChange(() => this.refresh());\n }\n refresh() {\n this.setState(this.props.appState);\n }\n \n getIndicator(value) {\n return value === true ? 'on' : 'off';\n }\n\n getResultViews() {\n var results = this.state.commandResults.map((r, i) => <DisplayResultView key={i} content={r} input={r.input} inputHash={r.inputHash} appState={this.props.appState} />);\n return results;\n }\n\n toggleEmphasizeBytes() {\n console.log(this.props.appState);\n this.props.appState.toggleEmphasizeBytes();\n }\n\n render() {\n return <div className={`app-root ${this.state.uiTheme}`}>\n <div className=\"header\">\n <h1>Bitwise<span style={{color: \"#c5c5c5\"}}>Cmd</span></h1>\n <ul className=\"top-links\">\n <li>\n <a href=\"https://github.com/BorisLevitskiy/BitwiseCmd\"><i className=\"icon github\"> </i><span className=\"link-text\">Project on GitHub</span></a>\n </li>\n <li>\n <a href=\"https://twitter.com/BitwiseCmd\"><i className=\"icon twitter\"> </i><span className=\"link-text\">Twitter</span></a>\n </li>\n <li>\n <a href=\"mailto:bitwisecmd@gmail.com?subject=Feedback\"><i className=\"icon feedback\"> </i><span className=\"link-text\">Send Feedback</span></a>\n </li>\n </ul>\n </div>\n\n <div className=\"expressionInput-container\">\n <InputBox />\n\n <span className=\"configPnl\">\n <span id=\"emphasizeBytes\" data-cmd=\"em\" className={\"indicator \" + this.getIndicator(this.state.emphasizeBytes)} title=\"Toggle Emphasize Bytes\" onClick={e => this.toggleEmphasizeBytes()}>[em]</span>\n </span>\n </div>\n\n <div id=\"output\">\n {this.getResultViews()}\n </div>\n </div>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/AppRoot.jsx","export default {\n encodeHash: function(string) {\n return encodeURI(string.trim().replace(/\\s/g,','));\n },\n decodeHash: function(hashValue) {\n return decodeURI(hashValue).replace(/^\\#/, '').replace(/,/g,' ');\n },\n getArgs: function (hashValue) {\n\n var decodedHash = this.decodeHash(hashValue),\n args = { commands: [] };\n\n splitHashList(decodedHash).forEach(function(value) {\n // Support for -debur or -notrack properties\n if(/^\\-[a-zA-Z]+$/.test(value)) {\n args[value.substr(1)] = true;\n return;\n }\n\n args.commands.push(value);\n });\n\n return Object.freeze(args);\n }\n };\n\nfunction splitHashList(str) {\n var values = [];\n\n if(str.indexOf('||')) {\n str.split('||').forEach(function (v) {\n if (v.length > 0) {\n values.push(v);\n }\n });\n } else {\n values.push(str);\n }\n\n return values;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/hash.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/camelize.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/camelizeStyleName.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/containsNode.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/createArrayFromMixed.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/createNodesFromMarkup.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/getMarkupWrap.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/getUnboundedScrollPosition.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/hyphenate.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/hyphenateStyleName.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/isNode.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/isTextNode.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/memoizeStringOnly.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n// WEBPACK FOOTER //\n// ./~/prop-types/checkPropTypes.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/prop-types/factoryWithTypeCheckers.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n// WEBPACK FOOTER //\n// ./~/prop-types/lib/ReactPropTypesSecret.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ARIADOMPropertyConfig.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/AutoFocusUtils.js","/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/BeforeInputEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styleValue, component);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styles[styleName], component);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/CSSPropertyOperations.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n}\n\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function () {\n return activeElementValueProp.get.call(this);\n },\n set: function (val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\n // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n Object.defineProperty(activeElement, 'value', newValueProp);\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === 'topInput') {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === 'topClick') {\n return targetInst;\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ChangeEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n\n};\n\nmodule.exports = Danger;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/Danger.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DefaultEventPluginOrder.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EnterLeaveEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/FallbackCompositionState.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/HTMLDOMPropertyConfig.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n ) {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n ) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactChildReconciler.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactComponentBrowserEnvironment.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production') {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactCompositeComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.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;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOM.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { 'string': true, 'number': true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n};\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMContainerInfo.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMEmptyComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMFeatureFlags.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMIDOperations.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n // eslint-disable-next-line\n if (value != valueAsNumber) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n // eslint-disable-next-line\n } else if (value != node.value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMInput.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMOption.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMSelection.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMTextComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMTextarea.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMTreeTraversal.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDefaultBatchingStrategy.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDefaultInjection.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactElementSymbol.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactEventEmitterMixin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactEventListener.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactInjection.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactMarkupChecksum.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactMultiChild.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactOwner.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactPropTypesSecret.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactReconcileTransaction.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactRef.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactServerRenderingTransaction.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactServerUpdateQueue.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.5.4';\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactVersion.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SVGDOMPropertyConfig.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SelectEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SimpleEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticAnimationEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticClipboardEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticCompositionEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticDragEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticFocusEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticInputEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticKeyboardEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticTouchEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticTransitionEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticWheelEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/adler32.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/dangerousStyleValue.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + '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.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/findDOMNode.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/flattenChildren.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getEventKey.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getIteratorFn.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getNodeForCharacterOffset.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getVendorPrefixedEventName.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/quoteAttributeValueForBrowser.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/renderSubtreeIntoContainer.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/KeyEscapeUtils.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/PooledClass.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactChildren.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function (Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function (Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function (Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);\n },\n contextTypes: function (Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function (Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function (Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function (Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function () {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n process.env.NODE_ENV !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === 'OVERRIDE_BASE') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n }\n\n return;\n }\n\n !(typeof spec !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n !!isReserved ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;\n\n var isInherited = name in Constructor;\n !!isInherited ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function (newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function () {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function () {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\nvar didWarnDeprecated = false;\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function (spec) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0;\n didWarnDeprecated = true;\n }\n\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function (props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function (mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactClass.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactDOMFactories.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactPropTypeLocationNames.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactElement'),\n isValidElement = _require.isValidElement;\n\nvar factory = require('prop-types/factory');\n\nmodule.exports = factory(isValidElement);\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactPropTypes.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactPureComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.5.4';\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactVersion.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/getIteratorFn.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/getNextDebugID.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/onlyChild.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/traverseAllChildren.js","import React from 'react'\n\nexport default class AboutResultView extends React.Component {\n render() {\n return <div className=\"aboutTpl\">\n <p> Created by <a href=\"http://boryslevytskyi.github.io/\">Borys Levytskyi</a>. Please give it a like if BitwiseCmd has helped you in your work.</p>\n <p>If you have an idea, suggestion or you've spotted a bug here, please send it to <a href=\"mailto:bitwisecmd@gmail.com?subject=Feedback\">bitwisecmd@gmail.com</a> or tweet on <a href=\"http://twitter.com/BitwiseCmd\">@BitwiseCmd</a>. Your feedback is greatly appreciated.</p>\n <p><a href=\"https://github.com/BorisLevitskiy/BitwiseCmd\">Project on <strong>GitHub</strong></a></p>\n </div>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/AboutResultView.jsx","import React from 'react';\nimport * as expression from '../../expression';\nimport formatter from '../../formatter';\nimport BinaryStringView from './BinaryStringView';\nimport BitwiseExpressionViewModel from './models/BitwiseExpressionViewModel';\nimport log from 'loglevel';\n\nexport default class BitwiseOperationEpxressionView extends React.Component {\n render() {\n var rows = this.getRows();\n if(!rows) {\n return null;\n }\n\n return <table className=\"expression\">\n <tbody>\n {rows}\n </tbody>\n </table>\n }\n\n getRows() {\n const expr = this.props.expression;\n\n if(expr instanceof expression.SingleOperandExpression) {\n const m = BitwiseExpressionViewModel.buildNot(expr, { emphasizeBytes: this.props.emphasizeBytes });\n log.info('Render model', m);\n return m.items.map((itm, i) => <ExpressionRow key={i} {...itm} emphasizeBytes={this.props.emphasizeBytes} maxNumberOfBits={m.maxNumberOfBits} />);\n }\n\n if(expr instanceof expression.MultipleOperandsExpression) {\n const m = BitwiseExpressionViewModel.buildMultiple(expr, { emphasizeBytes: this.props.emphasizeBytes });\n log.info('Render model', m);\n return m.items.map((itm, i) => <ExpressionRow key={i} {...itm} emphasizeBytes={this.props.emphasizeBytes} maxNumberOfBits={m.maxNumberOfBits} />);\n }\n\n return null;\n }\n}\n\nclass ExpressionRow extends React.Component {\n render() {\n const { sign, label, bin, other, css, maxNumberOfBits, emphasizeBytes } = this.props;\n \n return <tr className={css}>\n <td className=\"sign\">{sign}</td>\n <td className=\"label\">{label}</td>\n <td className=\"bin\">\n <BinaryStringView emphasizeBytes={emphasizeBytes} binaryString={formatter.padLeft(bin, maxNumberOfBits, '0')} allowFlipBits={false}/>\n </td>\n <td className=\"other\">{other}</td>\n </tr>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/BitwiseOperationExpressionView.jsx","import React from 'react';\nimport HelpResult from '../../models/HelpResult';\nimport AboutResult from '../../models/AboutResult';\nimport UnknownCommandResult from '../../models/UnknownCommandResult';\nimport HelpResultView from './HelpResultView';\nimport AboutResultView from './AboutResultView';\nimport ExpressionResult from '../../models/ExpressionResult';\nimport ExpressionResultView from './ExpressionResultView';\nimport ErrorResult from '../../models/ErrorResult';\n\nexport default class DisplayResult extends React.Component {\n render() {\n\n if(this.props.content instanceof UnknownCommandResult) {\n return this.renderUnknown(); \n }\n\n if(this.props.content instanceof ErrorResult) {\n return this.renderError(this.props.content.error.message);\n }\n\n return <div className=\"result\">\n <div className=\"input mono\"><span className=\"cur\">></span>{this.props.content.input}<a className=\"hashLink\" title=\"Link for this expression\" href={window.location.pathname + '#' + this.props.inputHash}>#</a></div>\n <div className=\"content\">\n {this.findResultComponent(this.props.content)}\n </div>\n </div>;\n }\n\n renderUnknown() {\n return <div className=\"result\">\n <div className=\"error\">¯\\_(ツ)_/¯ Sorry, i don't know what <strong>{this.props.input}</strong> is</div>\n </div>\n }\n\n renderError(message) {\n return <div className=\"result\">\n <div className=\"error\">(X_X) Error occurred: <strong>{message}</strong></div>\n </div>\n }\n\n findResultComponent(result) {\n if(result instanceof HelpResult) {\n return <HelpResultView content={result} />\n }\n\n if(result instanceof AboutResult) {\n return <AboutResultView />\n }\n\n if(result instanceof ExpressionResult) {\n return <ExpressionResultView result={result} emphasizeBytes={this.props.appState.emphasizeBytes} /> \n }\n\n console.warn('Unknown result:', result);\n return <span>Unknown result: {typeof result}</span>\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/DisplayResultView.jsx","import React from 'react'\r\nimport ListOfNumbersExpressionView from './ListOfNumbersExpressionView';\r\nimport BitwiseOperationExpressionView from './BitwiseOperationExpressionView';\r\n\r\nimport * as expression from '../../expression'; \r\n\r\nexport default class ExpressionResultView extends React.Component {\r\n render() {\r\n var expr = this.props.result.expression;\r\n\r\n if(expr instanceof expression.ListOfNumbersExpression) {\r\n return <div>\r\n <ListOfNumbersExpressionView expression={expr} emphasizeBytes={this.props.emphasizeBytes} />\r\n </div>\r\n }\r\n if(expr instanceof expression.SingleOperandExpression || expr instanceof expression.MultipleOperandsExpression) {\r\n return <div>\r\n <BitwiseOperationExpressionView expression={expr} emphasizeBytes={this.props.emphasizeBytes} />\r\n </div>\r\n }\r\n\r\n console.log('[BitwiseOperationExpressionView] render()', expr);\r\n\r\n return <b>Expression: {expr.expressionString}</b>;\r\n } \r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/ExpressionResultView.jsx","import React from 'react'\n\nexport default class HelpResultView extends React.Component {\n render() {\n return <div className=\"help helpResultTpl\">\n <div style={{overflow: \"hidden\"}}>\n <div style={{float: \"left\", \"marginRight\": \"20px\"}}>\n <div className=\"section\">\n <strong>Supported Commands</strong>\n <ul>\n <li><code>23 ^ 34</code> — type bitwise expression to see result in binary (only positive integers are supported now)</li>\n <li><code>23 34</code> — type one or more numbers to see their binary representations</li>\n <li><code>clear</code> — clear output pane</li>\n <li><code>help</code> — display this help</li>\n <li><code>em</code> — turn On/Off Emphasize Bytes</li>\n <li><code>dark</code> — set Dark theme</li>\n <li><code>light</code> — set Light theme</li>\n <li><code>about</code> — about the app</li>\n </ul>\n </div>\n </div>\n <div style={{\"float\":\"left\"}}>\n <div className=\"section\">\n <strong>Supported Bitwise Operations</strong><br/>\n <small>\n <a href=\"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators\">\n as implemented in JavaScript engine\n </a>\n </small>\n <ul>\n <li><code>&</code> — bitwise AND</li>\n <li><code>|</code> — bitwise inclusive OR</li>\n <li><code>^</code> — bitwise exclusive XOR</li>\n <li><code>~</code> — bitwise NOT</li>\n <li><code><<</code> — left shift</li>\n <li><code>>></code> — sign propagating right shift</li>\n <li><code>>>></code> — zero-fill right shift</li>\n </ul>\n </div>\n </div>\n </div>\n </div>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/HelpResultView.jsx","import React from 'react';\r\nimport formatter from '../../formatter';\r\nimport BinaryStringView from './BinaryStringView';\r\nimport BitwiseExpressionViewModel from './models/BitwiseExpressionViewModel'\r\n\r\n\r\nexport default class ListOfNumersExpressionView extends React.Component {\r\n render() {\r\n const expr = this.props.expression;\r\n const maxBitsLegnth = BitwiseExpressionViewModel.getNumberOfBits(expr.maxBitsLegnth, this.props.emphasizeBytes);\r\n const numberRows = expr.numbers.map((n, i) => <OperandView key={i} operand={n} maxBitsLegnth={maxBitsLegnth} emphasizeBytes={this.props.emphasizeBytes} />);\r\n return <table className=\"expression\">\r\n <tbody>\r\n {numberRows}\r\n </tbody> \r\n </table>\r\n }\r\n}\r\n\r\nclass OperandView extends React.Component {\r\n constructor() {\r\n super();\r\n this.state = { operand: null };\r\n }\r\n render() {\r\n const op = this.props.operand;\r\n const binaryString = formatter.padLeft(op.bin, this.props.maxBitsLegnth, '0');\r\n\r\n return <tr data-kind={op.kind}>\r\n <td className=\"label\">{op.input}</td>\r\n <td className=\"bin\"><BinaryStringView emphasizeBytes={this.props.emphasizeBytes} binaryString={binaryString} allowFlipBits={true} onFlipBit={e => this.flipBit(e)} /></td>\r\n <td className=\"other\">{op.other}</td>\r\n </tr>;\r\n };\r\n\r\n flipBit(index) { \r\n var op = this.props.operand;\r\n const binaryString = formatter.padLeft(op.bin, this.props.maxBitsLegnth, '0');\r\n var arr = binaryString.split('');\r\n // TODO: this code looks ugly\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n var bin = arr.join('');\r\n op.setValue(parseInt(bin, 2));\r\n\r\n this.setState({ operand: op });\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/ListOfNumbersExpressionView.jsx","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport InputBox from './components/InputBox.jsx';\nimport AppState from './AppState';\nimport appStateStore from './appStateStore';\nimport cmd from './cmd';\nimport commands from './commands';\nimport AppRoot from './components/AppRoot';\nimport hash from './hash';\nimport log from 'loglevel';\n\nsetupLogger();\n\nconst appState = createAppState();\n\ncommands.initialize(cmd, appState);\n\nexecuteStartupCommands();\n\nvar root = <AppRoot appState={appState} />;\nReactDOM.render(root, document.getElementById('root'));\n\nlog.debug(\"started\");\n\nfunction createAppState() {\n var stateData = appStateStore.getPersistedData();\n const appState = new AppState(stateData);\n appStateStore.watch(appState);\n log.debug(\"appState\", appState);\n return appState;\n}\n\nfunction setupLogger() {\n if(window.location.host != 'bitwisecmd.com' || window.location.hash.indexOf('-debug') > -1) {\n log.setLevel(\"trace\");\n } else {\n log.setLevel(\"warn\");\n }\n}\n\nfunction executeStartupCommands() {\n var hashArgs = hash.getArgs(window.location.hash);\n\n var startupCommands = ['help', '1|2&6','1<<0x2a','2 4 8 16 32'];\n\n if(hashArgs.commands.length > 0) {\n startupCommands = hashArgs.commands;\n }\n\n startupCommands.forEach(cmd.execute.bind(cmd));\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/index.jsx","export default {\n plainObject: function(obj) {\n return typeof obj == \"object\" && obj instanceof Object;\n },\n\n aFunction: function (obj) {\n return typeof obj == \"function\";\n },\n\n string: function (obj) {\n return typeof obj == \"string\";\n },\n\n regex: function (obj) {\n return typeof obj == \"object\" && this.constructedFrom(RegExp);\n },\n\n constructedFrom: function (obj, ctor) {\n return obj instanceof ctor;\n },\n\n htmlElement: function(obj) {\n return obj instanceof HtmlElement;\n },\n\n array: function(obj) {\n return obj instanceof Array;\n },\n\n number: function(num) {\n return typeof num == \"number\" && !isNaN(num)\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/is.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///bundle.js","webpack:///webpack/bootstrap a163340ecff7d28934d3","webpack:///./~/fbjs/lib/invariant.js","webpack:///./~/fbjs/lib/warning.js","webpack:///./~/react-dom/lib/reactProdInvariant.js","webpack:///./~/object-assign/index.js","webpack:///./~/react-dom/lib/ReactDOMComponentTree.js","webpack:///./~/fbjs/lib/ExecutionEnvironment.js","webpack:///./~/react/react.js","webpack:///./~/fbjs/lib/emptyFunction.js","webpack:///./~/react-dom/lib/ReactInstrumentation.js","webpack:///./~/react-dom/lib/ReactUpdates.js","webpack:///./~/react-dom/lib/SyntheticEvent.js","webpack:///./~/react/lib/ReactCurrentOwner.js","webpack:///./~/react-dom/lib/PooledClass.js","webpack:///./~/react-dom/lib/DOMLazyTree.js","webpack:///./~/react-dom/lib/DOMProperty.js","webpack:///./~/react-dom/lib/ReactReconciler.js","webpack:///./~/react/lib/React.js","webpack:///./~/react/lib/ReactElement.js","webpack:///./~/react/lib/reactProdInvariant.js","webpack:///./src/app/models/CommandResult.js","webpack:///./~/fbjs/lib/emptyObject.js","webpack:///./~/react-dom/lib/EventPluginHub.js","webpack:///./~/react-dom/lib/EventPropagators.js","webpack:///./~/react-dom/lib/ReactInstanceMap.js","webpack:///./~/react-dom/lib/SyntheticUIEvent.js","webpack:///./~/react-dom/lib/ReactBrowserEventEmitter.js","webpack:///./~/react-dom/lib/SyntheticMouseEvent.js","webpack:///./~/react-dom/lib/Transaction.js","webpack:///./~/react-dom/lib/escapeTextContentForBrowser.js","webpack:///./~/react-dom/lib/setInnerHTML.js","webpack:///./~/fbjs/lib/shallowEqual.js","webpack:///./~/react-dom/lib/DOMChildrenOperations.js","webpack:///./~/react-dom/lib/DOMNamespaces.js","webpack:///./~/react-dom/lib/EventPluginRegistry.js","webpack:///./~/react-dom/lib/EventPluginUtils.js","webpack:///./~/react-dom/lib/KeyEscapeUtils.js","webpack:///./~/react-dom/lib/LinkedValueUtils.js","webpack:///./~/react-dom/lib/ReactComponentEnvironment.js","webpack:///./~/react-dom/lib/ReactErrorUtils.js","webpack:///./~/react-dom/lib/ReactUpdateQueue.js","webpack:///./~/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","webpack:///./~/react-dom/lib/getEventCharCode.js","webpack:///./~/react-dom/lib/getEventModifierState.js","webpack:///./~/react-dom/lib/getEventTarget.js","webpack:///./~/react-dom/lib/isEventSupported.js","webpack:///./~/react-dom/lib/shouldUpdateReactComponent.js","webpack:///./~/react-dom/lib/validateDOMNesting.js","webpack:///./~/react/lib/ReactComponent.js","webpack:///./~/react/lib/ReactNoopUpdateQueue.js","webpack:///./src/app/expression.js","webpack:///./~/loglevel/lib/loglevel.js","webpack:///./src/app/cmd.js","webpack:///./src/app/components/InputBox.jsx","webpack:///./~/fbjs/lib/EventListener.js","webpack:///./~/fbjs/lib/focusNode.js","webpack:///./~/fbjs/lib/getActiveElement.js","webpack:///./~/process/browser.js","webpack:///./~/prop-types/factory.js","webpack:///./~/react-dom/lib/CSSProperty.js","webpack:///./~/react-dom/lib/CallbackQueue.js","webpack:///./~/react-dom/lib/DOMPropertyOperations.js","webpack:///./~/react-dom/lib/ReactDOMComponentFlags.js","webpack:///./~/react-dom/lib/ReactDOMSelect.js","webpack:///./~/react-dom/lib/ReactEmptyComponent.js","webpack:///./~/react-dom/lib/ReactFeatureFlags.js","webpack:///./~/react-dom/lib/ReactHostComponent.js","webpack:///./~/react-dom/lib/ReactInputSelection.js","webpack:///./~/react-dom/lib/ReactMount.js","webpack:///./~/react-dom/lib/ReactNodeTypes.js","webpack:///./~/react-dom/lib/ViewportMetrics.js","webpack:///./~/react-dom/lib/accumulateInto.js","webpack:///./~/react-dom/lib/forEachAccumulated.js","webpack:///./~/react-dom/lib/getHostComponentFromComposite.js","webpack:///./~/react-dom/lib/getTextContentAccessor.js","webpack:///./~/react-dom/lib/instantiateReactComponent.js","webpack:///./~/react-dom/lib/isTextInputElement.js","webpack:///./~/react-dom/lib/setTextContent.js","webpack:///./~/react-dom/lib/traverseAllChildren.js","webpack:///./~/react/lib/ReactComponentTreeHook.js","webpack:///./~/react/lib/ReactElementSymbol.js","webpack:///./~/react/lib/canDefineProperty.js","webpack:///./src/app/components/results/BinaryStringView.jsx","webpack:///./src/app/components/results/models/BitwiseExpressionViewModel.js","webpack:///./src/app/formatter.js","webpack:///./src/app/models/AboutResult.js","webpack:///./src/app/models/ErrorResult.js","webpack:///./src/app/models/ExpressionResult.js","webpack:///./src/app/models/HelpResult.js","webpack:///./src/app/models/UnknownCommandResult.js","webpack:///./src/app/models/WhatsnewResult.js","webpack:///./~/react-dom/index.js","webpack:///./src/app/AppState.js","webpack:///./src/app/appStateStore.js","webpack:///./src/app/commands.js","webpack:///./src/app/components/AppRoot.jsx","webpack:///./src/app/hash.js","webpack:///./~/fbjs/lib/camelize.js","webpack:///./~/fbjs/lib/camelizeStyleName.js","webpack:///./~/fbjs/lib/containsNode.js","webpack:///./~/fbjs/lib/createArrayFromMixed.js","webpack:///./~/fbjs/lib/createNodesFromMarkup.js","webpack:///./~/fbjs/lib/getMarkupWrap.js","webpack:///./~/fbjs/lib/getUnboundedScrollPosition.js","webpack:///./~/fbjs/lib/hyphenate.js","webpack:///./~/fbjs/lib/hyphenateStyleName.js","webpack:///./~/fbjs/lib/isNode.js","webpack:///./~/fbjs/lib/isTextNode.js","webpack:///./~/fbjs/lib/memoizeStringOnly.js","webpack:///./~/prop-types/checkPropTypes.js","webpack:///./~/prop-types/factoryWithTypeCheckers.js","webpack:///./~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/react-dom/lib/ARIADOMPropertyConfig.js","webpack:///./~/react-dom/lib/AutoFocusUtils.js","webpack:///./~/react-dom/lib/BeforeInputEventPlugin.js","webpack:///./~/react-dom/lib/CSSPropertyOperations.js","webpack:///./~/react-dom/lib/ChangeEventPlugin.js","webpack:///./~/react-dom/lib/Danger.js","webpack:///./~/react-dom/lib/DefaultEventPluginOrder.js","webpack:///./~/react-dom/lib/EnterLeaveEventPlugin.js","webpack:///./~/react-dom/lib/FallbackCompositionState.js","webpack:///./~/react-dom/lib/HTMLDOMPropertyConfig.js","webpack:///./~/react-dom/lib/ReactChildReconciler.js","webpack:///./~/react-dom/lib/ReactComponentBrowserEnvironment.js","webpack:///./~/react-dom/lib/ReactCompositeComponent.js","webpack:///./~/react-dom/lib/ReactDOM.js","webpack:///./~/react-dom/lib/ReactDOMComponent.js","webpack:///./~/react-dom/lib/ReactDOMContainerInfo.js","webpack:///./~/react-dom/lib/ReactDOMEmptyComponent.js","webpack:///./~/react-dom/lib/ReactDOMFeatureFlags.js","webpack:///./~/react-dom/lib/ReactDOMIDOperations.js","webpack:///./~/react-dom/lib/ReactDOMInput.js","webpack:///./~/react-dom/lib/ReactDOMOption.js","webpack:///./~/react-dom/lib/ReactDOMSelection.js","webpack:///./~/react-dom/lib/ReactDOMTextComponent.js","webpack:///./~/react-dom/lib/ReactDOMTextarea.js","webpack:///./~/react-dom/lib/ReactDOMTreeTraversal.js","webpack:///./~/react-dom/lib/ReactDefaultBatchingStrategy.js","webpack:///./~/react-dom/lib/ReactDefaultInjection.js","webpack:///./~/react-dom/lib/ReactElementSymbol.js","webpack:///./~/react-dom/lib/ReactEventEmitterMixin.js","webpack:///./~/react-dom/lib/ReactEventListener.js","webpack:///./~/react-dom/lib/ReactInjection.js","webpack:///./~/react-dom/lib/ReactMarkupChecksum.js","webpack:///./~/react-dom/lib/ReactMultiChild.js","webpack:///./~/react-dom/lib/ReactOwner.js","webpack:///./~/react-dom/lib/ReactPropTypesSecret.js","webpack:///./~/react-dom/lib/ReactReconcileTransaction.js","webpack:///./~/react-dom/lib/ReactRef.js","webpack:///./~/react-dom/lib/ReactServerRenderingTransaction.js","webpack:///./~/react-dom/lib/ReactServerUpdateQueue.js","webpack:///./~/react-dom/lib/ReactVersion.js","webpack:///./~/react-dom/lib/SVGDOMPropertyConfig.js","webpack:///./~/react-dom/lib/SelectEventPlugin.js","webpack:///./~/react-dom/lib/SimpleEventPlugin.js","webpack:///./~/react-dom/lib/SyntheticAnimationEvent.js","webpack:///./~/react-dom/lib/SyntheticClipboardEvent.js","webpack:///./~/react-dom/lib/SyntheticCompositionEvent.js","webpack:///./~/react-dom/lib/SyntheticDragEvent.js","webpack:///./~/react-dom/lib/SyntheticFocusEvent.js","webpack:///./~/react-dom/lib/SyntheticInputEvent.js","webpack:///./~/react-dom/lib/SyntheticKeyboardEvent.js","webpack:///./~/react-dom/lib/SyntheticTouchEvent.js","webpack:///./~/react-dom/lib/SyntheticTransitionEvent.js","webpack:///./~/react-dom/lib/SyntheticWheelEvent.js","webpack:///./~/react-dom/lib/adler32.js","webpack:///./~/react-dom/lib/dangerousStyleValue.js","webpack:///./~/react-dom/lib/findDOMNode.js","webpack:///./~/react-dom/lib/flattenChildren.js","webpack:///./~/react-dom/lib/getEventKey.js","webpack:///./~/react-dom/lib/getIteratorFn.js","webpack:///./~/react-dom/lib/getNodeForCharacterOffset.js","webpack:///./~/react-dom/lib/getVendorPrefixedEventName.js","webpack:///./~/react-dom/lib/quoteAttributeValueForBrowser.js","webpack:///./~/react-dom/lib/renderSubtreeIntoContainer.js","webpack:///./~/react/lib/KeyEscapeUtils.js","webpack:///./~/react/lib/PooledClass.js","webpack:///./~/react/lib/ReactChildren.js","webpack:///./~/react/lib/ReactClass.js","webpack:///./~/react/lib/ReactDOMFactories.js","webpack:///./~/react/lib/ReactPropTypeLocationNames.js","webpack:///./~/react/lib/ReactPropTypes.js","webpack:///./~/react/lib/ReactPureComponent.js","webpack:///./~/react/lib/ReactVersion.js","webpack:///./~/react/lib/getIteratorFn.js","webpack:///./~/react/lib/getNextDebugID.js","webpack:///./~/react/lib/onlyChild.js","webpack:///./~/react/lib/traverseAllChildren.js","webpack:///./src/app/components/DisplayResultView.jsx","webpack:///./src/app/components/results/AboutResultView.jsx","webpack:///./src/app/components/results/BitwiseOperationExpressionView.jsx","webpack:///./src/app/components/results/ExpressionResultView.jsx","webpack:///./src/app/components/results/HelpResultView.jsx","webpack:///./src/app/components/results/ListOfNumbersExpressionView.jsx","webpack:///./src/app/components/results/WhatsnewResultView.jsx","webpack:///./src/app/index.jsx","webpack:///./src/app/is.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","invariant","condition","format","a","b","e","f","validateFormat","error","undefined","Error","args","argIndex","replace","framesToPop","emptyFunction","warning","reactProdInvariant","code","argCount","arguments","length","message","argIdx","encodeURIComponent","toObject","val","TypeError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","map","join","test3","split","forEach","letter","keys","err","target","source","from","symbols","to","key","shouldPrecacheNode","node","nodeID","nodeType","getAttribute","ATTR_NAME","nodeValue","getRenderedHostOrTextFromComponent","component","rendered","_renderedComponent","precacheNode","inst","hostInst","_hostNode","internalInstanceKey","uncacheNode","precacheChildNodes","_flags","Flags","hasCachedChildNodes","children","_renderedChildren","childNode","firstChild","outer","childInst","childID","_domID","nextSibling","_prodInvariant","getClosestInstanceFromNode","parents","push","parentNode","closest","pop","getInstanceFromNode","getNodeFromInstance","_hostParent","DOMProperty","ReactDOMComponentFlags","ID_ATTRIBUTE_NAME","Math","random","toString","slice","ReactDOMComponentTree","canUseDOM","window","document","createElement","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","isInWorker","makeEmptyFunction","arg","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","this","thatReturnsArgument","debugTool","ensureInjected","ReactUpdates","ReactReconcileTransaction","batchingStrategy","ReactUpdatesFlushTransaction","reinitializeTransaction","dirtyComponentsLength","callbackQueue","CallbackQueue","getPooled","reconcileTransaction","batchedUpdates","callback","mountOrderComparator","c1","c2","_mountOrder","runBatchedUpdates","transaction","len","dirtyComponents","sort","updateBatchNumber","callbacks","_pendingCallbacks","markerName","ReactFeatureFlags","logTopLevelRenders","namedComponent","_currentElement","type","isReactTopLevelWrapper","getName","console","time","ReactReconciler","performUpdateIfNecessary","timeEnd","j","enqueue","getPublicInstance","enqueueUpdate","isBatchingUpdates","_updateBatchNumber","asap","context","asapCallbackQueue","asapEnqueued","_assign","PooledClass","Transaction","NESTED_UPDATES","initialize","close","splice","flushBatchedUpdates","UPDATE_QUEUEING","reset","notifyAll","TRANSACTION_WRAPPERS","getTransactionWrappers","destructor","release","perform","method","scope","addPoolingTo","queue","ReactUpdatesInjection","injectReconcileTransaction","ReconcileTransaction","injectBatchingStrategy","_batchingStrategy","injection","SyntheticEvent","dispatchConfig","targetInst","nativeEvent","nativeEventTarget","_targetInst","Interface","constructor","propName","normalize","defaultPrevented","returnValue","isDefaultPrevented","isPropagationStopped","shouldBeReleasedProperties","EventInterface","currentTarget","eventPhase","bubbles","cancelable","timeStamp","event","Date","now","isTrusted","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","augmentClass","Class","Super","E","fourArgumentPooler","ReactCurrentOwner","current","oneArgumentPooler","copyFieldsFrom","Klass","instancePool","instance","twoArgumentPooler","a1","a2","threeArgumentPooler","a3","a4","standardReleaser","poolSize","DEFAULT_POOLER","CopyConstructor","pooler","NewKlass","insertTreeChildren","tree","enableLazy","insertTreeBefore","html","setInnerHTML","text","setTextContent","replaceChildWithTree","oldNode","newTree","replaceChild","queueChild","parentTree","childTree","appendChild","queueHTML","queueText","nodeName","DOMLazyTree","DOMNamespaces","createMicrosoftUnsafeLocalFunction","documentMode","navigator","userAgent","test","referenceNode","toLowerCase","namespaceURI","insertBefore","checkMask","bitmask","DOMPropertyInjection","MUST_USE_PROPERTY","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Injection","Properties","DOMAttributeNamespaces","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","isCustomAttribute","_isCustomAttributeFunctions","properties","lowerCased","propConfig","propertyInfo","attributeName","attributeNamespace","propertyName","mutationMethod","mustUseProperty","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","ATTRIBUTE_NAME_START_CHAR","ROOT_ATTRIBUTE_NAME","ATTRIBUTE_NAME_CHAR","getPossibleStandardName","isCustomAttributeFn","attachRefs","ReactRef","mountComponent","internalInstance","hostParent","hostContainerInfo","parentDebugID","markup","ref","getReactMountReady","getHostNode","unmountComponent","safely","detachRefs","receiveComponent","nextElement","prevElement","_context","refsChanged","shouldUpdateRefs","ReactChildren","ReactComponent","ReactPureComponent","ReactClass","ReactDOMFactories","ReactElement","ReactPropTypes","ReactVersion","onlyChild","createFactory","cloneElement","__spread","React","Children","count","toArray","only","Component","PureComponent","isValidElement","PropTypes","createClass","createMixin","mixin","DOM","version","hasValidRef","config","hasValidKey","_typeof","Symbol","iterator","obj","REACT_ELEMENT_TYPE","RESERVED_PROPS","__self","__source","self","owner","props","element","$$typeof","_owner","childrenLength","childArray","Array","defaultProps","factory","bind","cloneAndReplaceKey","oldElement","newKey","_self","_source","_classCallCheck","Constructor","_createClass","defineProperties","descriptor","writable","protoProps","staticProps","CommandResult","input","inputHash","encodeHash","string","encodeURI","trim","default","emptyObject","isInteractive","tag","shouldPreventMouseEvent","disabled","EventPluginRegistry","EventPluginUtils","ReactErrorUtils","accumulateInto","forEachAccumulated","listenerBank","eventQueue","executeDispatchesAndRelease","simulated","executeDispatchesInOrder","executeDispatchesAndReleaseSimulated","executeDispatchesAndReleaseTopLevel","getDictionaryKey","_rootNodeID","EventPluginHub","injectEventPluginOrder","injectEventPluginsByName","putListener","registrationName","listener","PluginModule","registrationNameModules","didPutListener","getListener","bankForRegistrationName","deleteListener","willDeleteListener","deleteAllListeners","extractEvents","topLevelType","events","plugins","possiblePlugin","extractedEvents","enqueueEvents","processEventQueue","processingEventQueue","rethrowCaughtError","__purge","__getListenerBank","listenerAtPhase","propagationPhase","phasedRegistrationNames","accumulateDirectionalDispatches","phase","_dispatchListeners","_dispatchInstances","accumulateTwoPhaseDispatchesSingle","traverseTwoPhase","accumulateTwoPhaseDispatchesSingleSkipTarget","parentInst","getParentInstance","accumulateDispatches","ignoredDirection","accumulateDirectDispatchesSingle","accumulateTwoPhaseDispatches","accumulateTwoPhaseDispatchesSkipTarget","accumulateEnterLeaveDispatches","leave","enter","traverseEnterLeave","accumulateDirectDispatches","EventPropagators","ReactInstanceMap","remove","_reactInternalInstance","has","set","SyntheticUIEvent","dispatchMarker","getEventTarget","UIEventInterface","view","doc","ownerDocument","defaultView","parentWindow","detail","getListeningForDocument","mountAt","topListenersIDKey","reactTopListenersCounter","alreadyListeningTo","hasEventPageXY","ReactEventEmitterMixin","ViewportMetrics","getVendorPrefixedEventName","isEventSupported","isMonitoringScrollValue","topEventMapping","topAbort","topAnimationEnd","topAnimationIteration","topAnimationStart","topBlur","topCanPlay","topCanPlayThrough","topChange","topClick","topCompositionEnd","topCompositionStart","topCompositionUpdate","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topDurationChange","topEmptied","topEncrypted","topEnded","topError","topFocus","topInput","topKeyDown","topKeyPress","topKeyUp","topLoadedData","topLoadedMetadata","topLoadStart","topMouseDown","topMouseMove","topMouseOut","topMouseOver","topMouseUp","topPaste","topPause","topPlay","topPlaying","topProgress","topRateChange","topScroll","topSeeked","topSeeking","topSelectionChange","topStalled","topSuspend","topTextInput","topTimeUpdate","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topTransitionEnd","topVolumeChange","topWaiting","topWheel","ReactBrowserEventEmitter","ReactEventListener","injectReactEventListener","setHandleTopLevel","handleTopLevel","setEnabled","enabled","isEnabled","listenTo","contentDocumentHandle","isListening","dependencies","registrationNameDependencies","dependency","trapBubbledEvent","trapCapturedEvent","WINDOW_HANDLE","handlerBaseName","handle","supportsEventPageXY","createEvent","ev","ensureScrollValueMonitoring","refresh","refreshScrollValues","monitorScrollValue","SyntheticMouseEvent","getEventModifierState","MouseEventInterface","screenX","screenY","clientX","clientY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","button","buttons","relatedTarget","fromElement","srcElement","toElement","pageX","currentScrollLeft","pageY","currentScrollTop","OBSERVED_ERROR","TransactionImpl","transactionWrappers","wrapperInitData","_isInTransaction","isInTransaction","errorThrown","ret","initializeAll","closeAll","startIndex","wrapper","initData","escapeHtml","str","match","matchHtmlRegExp","exec","escape","index","lastIndex","charCodeAt","substring","escapeTextContentForBrowser","reusableSVGContainer","WHITESPACE_TEST","NONVISIBLE_TEST","svg","innerHTML","svgNode","testElement","textNode","data","removeChild","deleteData","is","x","y","shallowEqual","objA","objB","keysA","keysB","getNodeAfter","isArray","insertLazyTreeChildAt","moveChild","moveDelimitedText","insertChildAt","closingComment","removeDelimitedText","openingComment","nextNode","startNode","replaceDelimitedText","stringText","nodeAfterComment","createTextNode","Danger","dangerouslyReplaceNodeWithMarkup","DOMChildrenOperations","processUpdates","updates","k","update","content","afterNode","fromNode","mathml","recomputePluginOrdering","eventPluginOrder","pluginName","namesToPlugins","pluginModule","pluginIndex","indexOf","publishedEvents","eventTypes","eventName","publishEventForPlugin","eventNameDispatchConfigs","phaseName","phasedRegistrationName","publishRegistrationName","possibleRegistrationNames","injectedEventPluginOrder","injectedNamesToPlugins","isOrderingDirty","getPluginModuleForEvent","_resetEventPlugins","isEndish","isMoveish","isStartish","executeDispatch","invokeGuardedCallbackWithCatch","invokeGuardedCallback","dispatchListeners","dispatchInstances","executeDispatchesInOrderStopAtTrueImpl","executeDispatchesInOrderStopAtTrue","executeDirectDispatch","dispatchListener","dispatchInstance","res","hasDispatches","ComponentTree","TreeTraversal","injectComponentTree","Injected","injectTreeTraversal","isAncestor","getLowestCommonAncestor","fn","argFrom","argTo","escaperLookup","=",":","unescape","unescaperLookup","=0","=2","KeyEscapeUtils","_assertSingleLink","inputProps","checkedLink","valueLink","_assertValueLink","onChange","_assertCheckedLink","checked","getDeclarationErrorAddendum","ReactPropTypesSecret","propTypesFactory","hasReadOnlyValue","checkbox","image","hidden","radio","submit","propTypes","componentName","readOnly","func","loggedTypeFailures","LinkedValueUtils","checkPropTypes","tagName","getValue","getChecked","executeOnChange","requestChange","injected","ReactComponentEnvironment","replaceNodeWithMarkup","processChildrenUpdates","injectEnvironment","environment","caughtError","formatUnexpectedArgument","displayName","getInternalInstanceReadyForUpdate","publicInstance","callerName","ReactUpdateQueue","isMounted","enqueueCallback","validateCallback","enqueueCallbackInternal","enqueueForceUpdate","_pendingForceUpdate","enqueueReplaceState","completeState","_pendingStateQueue","_pendingReplaceState","enqueueSetState","partialState","enqueueElementInternal","nextContext","_pendingElement","MSApp","execUnsafeLocalFunction","arg0","arg1","arg2","arg3","getEventCharCode","charCode","keyCode","modifierStateGetter","keyArg","syntheticEvent","keyProp","modifierKeyToProp","Alt","Control","Meta","Shift","correspondingUseElement","eventNameSuffix","capture","isSupported","setAttribute","useHasFeature","implementation","hasFeature","shouldUpdateReactComponent","prevEmpty","nextEmpty","prevType","nextType","validateDOMNesting","updater","refs","ReactNoopUpdateQueue","isReactComponent","setState","forceUpdate","expression","factories","canParse","trimmed","canCreate","parse","create","parseOperand","Operand","createOperand","number","kind","addFactory","regex","matches","numbers","ListOfNumbersExpression","operand","SingleOperandExpression","fullRegex","normalizeString","operands","normalizedString","parseMatch","MultipleOperandsExpression","sign","num","parseInt","hex","toHexString","dec","bin","other","lengthInBits","getBitLength","floor","log","toKindString","getOtherKind","getBase","hexVal","abs","substr","expressionString","operand1","apply","eval","TwoOperandExpression","operand2","expressions","maxBitsLegnth","reduce","Expression","parser","Parser","pos","buffer","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","root","definition","realMethod","methodName","undefinedType","bindMethod","noop","Function","enableLoggingWhenConsoleArrives","level","loggerName","replaceLoggingMethods","logMethods","methodFactory","defaultMethodFactory","Logger","defaultLevel","persistLevelIfPossible","levelNum","levelName","toUpperCase","localStorage","storageKey","ignore","cookie","getPersistedLevel","storedLevel","location","levels","currentLevel","TRACE","DEBUG","INFO","WARN","ERROR","SILENT","getLevel","setLevel","setDefaultLevel","enableAll","disableAll","initialLevel","defaultLogger","_loggersByName","getLogger","logger","_log","noConflict","logError","invokeHandler","handler","cmdResult","createHandler","cmd","_is2","plainObject","canHandle","findHandler","handlers","_is","errorHandler","debugMode","execute","rawInput","commands","catalog","command","h","warn","aFunction","clear","onError","_interopRequireDefault","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","setPrototypeOf","__proto__","_react","_react2","_cmd","_cmd2","InputBox","_React$Component","_this","getPrototypeOf","history","historyIndex","nameInput","focus","_this2","id","onKeyUp","onKeyDown","className","placeholder","unshift","newIndex","EventListener","listen","eventType","removeEventListener","detachEvent","registerDefault","focusNode","getActiveElement","activeElement","body","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","setTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","concat","queueIndex","drainQueue","timeout","run","Item","array","process","nextTick","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","prefixKey","prefix","charAt","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","prop","shorthandPropertyExpansions","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPositionX","backgroundPositionY","backgroundRepeat","backgroundPosition","border","borderWidth","borderStyle","borderColor","borderBottom","borderBottomWidth","borderBottomStyle","borderBottomColor","borderLeft","borderLeftWidth","borderLeftStyle","borderLeftColor","borderRight","borderRightWidth","borderRightStyle","borderRightColor","borderTop","borderTopWidth","borderTopStyle","borderTopColor","font","fontStyle","fontVariant","fontSize","fontFamily","outline","outlineWidth","outlineStyle","outlineColor","CSSProperty","_callbacks","_contexts","_arg","contexts","checkpoint","rollback","isAttributeNameSafe","validatedAttributeNameCache","illegalAttributeNameCache","VALID_ATTRIBUTE_NAME_REGEX","shouldIgnoreValue","isNaN","quoteAttributeValueForBrowser","RegExp","DOMPropertyOperations","createMarkupForID","setAttributeForID","createMarkupForRoot","setAttributeForRoot","createMarkupForProperty","createMarkupForCustomAttribute","setValueForProperty","deleteValueForProperty","namespace","setAttributeNS","setValueForAttribute","removeAttribute","deleteValueForAttribute","updateOptionsIfPendingUpdateAndMounted","_wrapperState","pendingUpdate","updateOptions","Boolean","multiple","propValue","selectedValue","options","selected","_handleChange","didWarnValueDefaultValue","ReactDOMSelect","getHostProps","mountWrapper","initialValue","defaultValue","wasMultiple","getSelectValueContext","postUpdateWrapper","emptyComponentFactory","ReactEmptyComponentInjection","injectEmptyComponentFactory","ReactEmptyComponent","instantiate","createInternalComponent","genericComponentClass","createInstanceForText","textComponentClass","isTextComponent","ReactHostComponentInjection","injectGenericComponentClass","componentClass","injectTextComponentClass","ReactHostComponent","isInDocument","containsNode","documentElement","ReactDOMSelection","ReactInputSelection","hasSelectionCapabilities","elem","contentEditable","getSelectionInformation","focusedElem","selectionRange","getSelection","restoreSelection","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","setSelection","selection","start","selectionStart","end","selectionEnd","range","createRange","parentElement","moveStart","moveEnd","getOffsets","offsets","min","createTextRange","collapse","select","setOffsets","firstDifferenceIndex","string1","string2","minLen","getReactRootElementInContainer","container","DOC_NODE_TYPE","internalGetID","mountComponentIntoNode","wrapperInstance","shouldReuseMarkup","wrappedElement","child","ReactDOMContainerInfo","_topLevelWrapper","ReactMount","_mountImageIntoNode","batchedMountComponentIntoNode","componentInstance","ReactDOMFeatureFlags","useCreateElement","unmountComponentFromNode","lastChild","hasNonRootReactChild","rootEl","isValidContainer","ELEMENT_NODE_TYPE","DOCUMENT_FRAGMENT_NODE_TYPE","getHostRootInstanceInContainer","prevHostInstance","getTopLevelWrapperInContainer","_hostContainerInfo","ReactMarkupChecksum","instantiateReactComponent","ROOT_ATTR_NAME","instancesByReactRootID","topLevelRootCounter","TopLevelWrapper","rootID","render","_instancesByReactRootID","scrollMonitor","renderCallback","_updateRootComponent","prevComponent","_renderNewRootComponent","wrapperID","_instance","renderSubtreeIntoContainer","parentComponent","_renderSubtreeIntoContainer","nextWrappedElement","_processChildContext","prevWrappedElement","publicInst","updatedCallback","unmountComponentAtNode","reactRootElement","containerHasReactMarkup","containerHasNonRootReactChild","hasAttribute","rootElement","canReuseMarkup","checksum","CHECKSUM_ATTR_NAME","rootMarkup","outerHTML","normalizedMarkup","diffIndex","difference","ReactNodeTypes","HOST","COMPOSITE","EMPTY","getType","scrollPosition","next","arr","cb","getHostComponentFromComposite","_renderedNodeType","getTextContentAccessor","contentKey","isInternalComponentType","shouldHaveDebugID","info","getNativeNode","ReactCompositeComponentWrapper","_mountIndex","_mountImage","ReactCompositeComponent","construct","_instantiateReactComponent","isTextInputElement","supportedInputTypes","color","date","datetime","datetime-local","email","month","password","search","tel","url","week","textContent","getComponentKey","traverseAllChildrenImpl","nameSoFar","traverseContext","SEPARATOR","nextName","subtreeCount","nextNamePrefix","SUBSEPARATOR","iteratorFn","getIteratorFn","step","entries","ii","done","entry","addendum","childrenString","traverseAllChildren","isNative","funcToString","reIsNative","purgeDeep","item","getItem","childIDs","removeItem","describeComponentFrame","ownerName","fileName","lineNumber","getDisplayName","describeID","ReactComponentTreeHook","getElement","ownerID","getOwnerID","setItem","getItemIDs","addRoot","removeRoot","getRootIDs","canUseCollections","Map","Set","itemMap","rootIDSet","add","itemByKey","rootByKey","getKeyFromID","getIDFromKey","unmountedIDs","onSetChildren","nextChildIDs","nextChildID","nextChild","parentID","onBeforeMountComponent","updateCount","onBeforeUpdateComponent","onMountComponent","onUpdateComponent","onUnmountComponent","purgeUnmountedComponents","_preventPurging","getCurrentStackAddendum","topElement","currentOwner","_debugID","getStackAddendumByID","getParentID","getChildIDs","getSource","getText","getUpdateCount","getRegisteredIDs","canDefineProperty","BinaryStringView","getChildren","allowFlipBits","onFlipBit","bits","createBits","binaryString","emphasizeBytes","splitIntoBytes","bitChars","css","classNames","0","1","onClick","onBitClick","bytes","BitwiseExpressionViewModel","_ref","_ref$emphasizeBytes","items","maxNumberOfBits","max","getLengthInBits","label","resultOperand","expr","ex","op","addOperand","isShiftExpression","addShiftExpressionResult","addExpression","addExpressionResult","getNumberOfBits","formatString","padLeft","symbol","sb","_CommandResult2","_CommandResult3","AboutResult","_CommandResult","ErrorResult","ExpressionResult","HelpResult","UnknownCommandResult","WhatsnewResult","AppState","persistData","commandResults","uiTheme","persistedVersion","wasOldVersion","result","triggerChanged","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","return","theme","getPersistedData","json","JSON","watch","appState","stringify","getPersistData","_HelpResult","_HelpResult2","_AboutResult","_AboutResult2","_UnknownCommandResult","_UnknownCommandResult2","_ExpressionResult","_ExpressionResult2","_ErrorResult","_ErrorResult2","_WhatsnewResult","_WhatsnewResult2","_expression","newObj","addCommandResult","help","clearCommmandResults","em","toggleEmphasizeBytes","dark","setUiTheme","light","about","whatsnew","-notrack","_InputBox","_InputBox2","_DisplayResultView","_DisplayResultView2","AppRoot","_this3","state","r","_this4","style","href","data-cmd","getIndicator","getResultViews","splitHashList","values","v","decodeHash","hashValue","decodeURI","getArgs","decodedHash","freeze","camelize","_hyphenPattern","_","character","camelizeStyleName","msPattern","outerNode","innerNode","isTextNode","contains","compareDocumentPosition","callee","hasArrayNature","createArrayFromMixed","getNodeName","nodeNameMatch","nodeNamePattern","createNodesFromMarkup","handleScript","dummyNode","wrap","getMarkupWrap","wrapDepth","scripts","getElementsByTagName","nodes","childNodes","markupWrap","shouldWrap","selectWrap","tableWrap","trWrap","svgWrap","*","area","col","legend","param","tr","optgroup","option","caption","colgroup","tbody","tfoot","thead","td","th","getUnboundedScrollPosition","scrollable","Window","pageXOffset","scrollLeft","pageYOffset","scrollTop","hyphenate","_uppercasePattern","hyphenateStyleName","isNode","Node","memoizeStringOnly","cache","typeSpecs","getStack","throwOnDirectAccess","maybeIterable","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","PropTypeError","stack","createChainableTypeChecker","validate","checkType","isRequired","propFullName","secret","ANONYMOUS","chainedCheckType","createPrimitiveTypeChecker","expectedType","getPropType","getPreciseType","createArrayOfTypeChecker","typeChecker","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","createEnumTypeChecker","expectedValues","createObjectOfTypeChecker","propType","createUnionTypeChecker","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","createShapeTypeChecker","shapeTypes","every","isSymbol","bool","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","ARIADOMPropertyConfig","aria-current","aria-details","aria-disabled","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-roledescription","aria-autocomplete","aria-checked","aria-expanded","aria-haspopup","aria-level","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-placeholder","aria-pressed","aria-readonly","aria-required","aria-selected","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","aria-atomic","aria-busy","aria-live","aria-relevant","aria-dropeffect","aria-grabbed","aria-activedescendant","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-describedby","aria-errormessage","aria-flowto","aria-labelledby","aria-owns","aria-posinset","aria-rowcount","aria-rowindex","aria-rowspan","aria-setsize","AutoFocusUtils","focusDOMComponent","isKeypressCommand","getCompositionEventType","compositionStart","compositionEnd","compositionUpdate","isFallbackCompositionStart","START_KEYCODE","isFallbackCompositionEnd","END_KEYCODES","getDataFromCustomEvent","extractCompositionEvent","fallbackData","canUseCompositionEvent","currentComposition","useFallbackCompositionData","getData","FallbackCompositionState","SyntheticCompositionEvent","customData","getNativeBeforeInputChars","which","SPACEBAR_CODE","hasSpaceKeypress","SPACEBAR_CHAR","chars","getFallbackBeforeInputChars","extractBeforeInputEvent","canUseTextInputEvent","SyntheticInputEvent","beforeInput","opera","bubbled","captured","BeforeInputEventPlugin","dangerousStyleValue","processStyleName","styleName","hasShorthandPropertyBug","styleFloatAccessor","tempStyle","cssFloat","CSSPropertyOperations","createMarkupForStyles","styles","serialized","styleValue","setValueForStyles","expansion","individualStyleName","shouldUseChangeEvent","manualDispatchChangeEvent","change","activeElementInst","runEventInBatch","startWatchingForChangeEventIE8","stopWatchingForChangeEventIE8","getTargetInstForChangeEvent","handleEventsForChangeEventIE8","startWatchingForValueChange","activeElementValue","activeElementValueProp","getOwnPropertyDescriptor","newValueProp","handlePropertyChange","stopWatchingForValueChange","getTargetInstForInputEvent","handleEventsForInputEventIE","getTargetInstForInputEventIE","shouldUseClickEvent","getTargetInstForClickEvent","handleControlledInputBlur","controlled","doesChangeEventBubble","isInputEventSupported","ChangeEventPlugin","getTargetInstFunc","handleEventFunc","targetNode","oldChild","newChild","DefaultEventPluginOrder","mouseEnter","mouseLeave","EnterLeaveEventPlugin","win","related","toNode","_root","_startText","_fallbackText","startValue","startLength","endValue","endLength","minEnd","sliceTail","HTMLDOMPropertyConfig","accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","as","async","autoComplete","autoPlay","cellPadding","cellSpacing","charSet","challenge","cite","classID","cols","colSpan","contextMenu","controls","coords","crossOrigin","dateTime","defer","download","draggable","encType","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","headers","height","high","hrefLang","htmlFor","httpEquiv","icon","inputMode","integrity","keyParams","keyType","lang","list","loop","low","manifest","marginHeight","marginWidth","maxLength","media","mediaGroup","minLength","muted","nonce","noValidate","open","optimum","pattern","playsInline","poster","preload","profile","radioGroup","referrerPolicy","rel","required","reversed","role","rows","rowSpan","sandbox","scoped","scrolling","seamless","size","sizes","span","spellCheck","src","srcDoc","srcLang","srcSet","summary","tabIndex","useMap","width","wmode","datatype","inlist","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","validity","badInput","instantiateChild","childInstances","selfDebugID","keyUnique","ReactChildReconciler","instantiateChildren","nestedChildNodes","updateChildren","prevChildren","nextChildren","mountImages","removedNodes","prevChild","nextChildInstance","nextChildMountImage","unmountChildren","renderedChildren","renderedChild","ReactDOMIDOperations","ReactComponentBrowserEnvironment","dangerouslyProcessChildrenUpdates","StatelessComponent","shouldConstruct","isPureComponent","isPureReactComponent","CompositeTypes","ImpureClass","PureClass","StatelessFunctional","nextMountID","_compositeType","_calledComponentWillUnmount","renderedElement","publicProps","publicContext","_processContext","updateQueue","getUpdateQueue","doConstruct","_constructComponent","initialState","unstable_handleError","performInitialMountWithErrorHandling","performInitialMount","componentDidMount","_constructComponentWithoutOwner","_processPendingState","debugID","componentWillMount","_renderValidatedComponent","componentWillUnmount","_maskContext","contextTypes","maskedContext","contextName","currentContext","childContext","getChildContext","childContextTypes","_checkContextTypes","prevContext","updateComponent","prevParentElement","nextParentElement","prevUnmaskedContext","nextUnmaskedContext","willReceive","prevProps","nextProps","componentWillReceiveProps","nextState","shouldUpdate","shouldComponentUpdate","_performComponentUpdate","partial","unmaskedContext","prevState","hasComponentDidUpdate","componentDidUpdate","componentWillUpdate","_updateRenderedComponent","prevComponentInstance","prevRenderedElement","nextRenderedElement","oldHostNode","nextMarkup","_replaceNodeWithMarkup","prevInstance","_renderValidatedComponentWithoutOwnerOrContext","attachRef","publicComponentInstance","detachRef","ReactDefaultInjection","findDOMNode","inject","ReactDOM","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","__REACT_DEVTOOLS_GLOBAL_HOOK__","Mount","Reconciler","assertValidProps","voidElementTags","_tag","dangerouslySetInnerHTML","HTML","enqueuePutListener","ReactServerRenderingTransaction","containerInfo","isDocumentFragment","_node","DOC_FRAGMENT_TYPE","_ownerDocument","listenerToPut","inputPostMount","ReactDOMInput","postMountWrapper","textareaPostMount","ReactDOMTextarea","optionPostMount","ReactDOMOption","trapBubbledEventsLocal","getNode","mediaEvents","postUpdateSelectWrapper","validateDangerousTag","validatedTagCache","VALID_TAG_REGEX","isCustomComponent","ReactDOMComponent","_namespaceURI","_previousStyle","_previousStyleCopy","ReactMultiChild","CONTENT_TYPES","suppressContentEditableWarning","omittedCloseTags","base","br","embed","hr","img","keygen","link","meta","track","wbr","newlineEatingTags","listing","pre","textarea","menuitem","globalIdCounter","Mixin","_idCounter","parentTag","mountImage","el","div","createElementNS","_updateDOMProperties","lazyTree","_createInitialChildren","tagOpen","_createOpenTagMarkupAndPutListeners","tagContent","_createContentMarkup","autoFocus","propKey","renderToStaticMarkup","__html","contentToUse","childrenToUse","mountChildren","lastProps","_updateDOMChildren","updateWrapper","styleUpdates","lastStyle","nextProp","lastProp","lastContent","nextContent","lastHtml","nextHtml","lastChildren","lastHasContentOrHtml","nextHasContentOrHtml","updateTextContent","updateMarkup","topLevelWrapper","ReactDOMEmptyComponent","domID","createComment","useFiber","forceUpdateIfMounted","isControlled","rootNode","queryRoot","group","querySelectorAll","otherNode","otherInstance","defaultChecked","initialChecked","valueAsNumber","parseFloat","flattenChildren","didWarnInvalidOptionChildren","selectValue","selectParent","hostProps","isCollapsed","anchorNode","anchorOffset","focusOffset","getIEOffsets","selectedRange","selectedLength","fromStart","duplicate","moveToElementText","setEndPoint","startOffset","getModernOffsets","rangeCount","currentRange","getRangeAt","startContainer","endContainer","isSelectionCollapsed","rangeLength","tempRange","cloneRange","selectNodeContents","setEnd","isTempRangeCollapsed","endOffset","detectionRange","setStart","isBackward","collapsed","setIEOffsets","setModernOffsets","extend","temp","startMarker","getNodeForCharacterOffset","endMarker","offset","removeAllRanges","addRange","useIEOffsets","ReactDOMTextComponent","_stringText","_closingComment","_commentNodes","openingValue","createDocumentFragment","escapedText","nextText","nextStringText","commentNodes","hostNode","newValue","instA","instB","depthA","tempA","depthB","tempB","depth","path","common","pathFrom","pathTo","ReactDefaultBatchingStrategyTransaction","RESET_BATCHED_UPDATES","ReactDefaultBatchingStrategy","FLUSH_BATCHED_UPDATES","alreadyBatchingUpdates","alreadyInjected","ReactInjection","EventEmitter","ReactDOMTreeTraversal","SimpleEventPlugin","SelectEventPlugin","HostComponent","SVGDOMPropertyConfig","EmptyComponent","Updates","runEventQueueInBatch","findParent","TopLevelCallbackBookKeeping","ancestors","handleTopLevelImpl","bookKeeping","ancestor","_handleTopLevel","scrollValueMonitor","_enabled","dispatchEvent","adler32","COMMENT_START","addChecksumToMarkup","existingChecksum","makeInsertMarkup","toIndex","fromIndex","makeMove","makeRemove","makeSetMarkup","makeTextContent","processQueue","_reconcilerInstantiateChildren","nestedChildren","_reconcilerUpdateChildren","nextNestedChildrenElements","_updateChildren","nextIndex","nextMountIndex","lastPlacedNode","_mountChildAtIndex","_unmountChild","createChild","isValidOwner","ReactOwner","addComponentAsRefTo","removeComponentAsRefFrom","ownerPublicInstance","reactMountReady","SELECTION_RESTORATION","EVENT_SUPPRESSION","currentlyEnabled","previouslyEnabled","ON_DOM_READY_QUEUEING","prevRef","prevOwner","nextRef","nextOwner","ReactServerUpdateQueue","noopCallbackQueue","NS","xlink","xml","ATTRS","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baseProfile","baselineShift","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipRule","clipPathUnits","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","exponent","externalResourcesRequired","fill","fillRule","filter","filterRes","filterUnits","floodColor","focusable","fontSizeAdjust","fontStretch","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerMid","markerStart","markerHeight","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mode","numOctaves","operator","orient","orientation","origin","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","rotate","rx","ry","scale","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","stdDeviation","stemh","stemv","stitchTiles","stopColor","strikethroughPosition","strikethroughThickness","stroke","strokeLinecap","strokeLinejoin","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textRendering","textLength","transform","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","visibility","widths","wordSpacing","writingMode","xHeight","x1","x2","xChannelSelector","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlns","xmlnsXlink","xmlLang","xmlSpace","y1","y2","yChannelSelector","z","zoomAndPan","top","boundingTop","left","boundingLeft","constructSelectEvent","mouseDown","currentSelection","lastSelection","skipSelectionChangeEvent","hasListener","SyntheticAnimationEvent","SyntheticClipboardEvent","SyntheticFocusEvent","SyntheticKeyboardEvent","SyntheticDragEvent","SyntheticTouchEvent","SyntheticTransitionEvent","SyntheticWheelEvent","topLevelEventsToDispatchConfig","capitalizedEvent","onEvent","topEvent","onClickListeners","EventConstructor","AnimationEventInterface","animationName","elapsedTime","pseudoElement","ClipboardEventInterface","clipboardData","CompositionEventInterface","DragEventInterface","dataTransfer","FocusEventInterface","InputEventInterface","getEventKey","KeyboardEventInterface","repeat","locale","TouchEventInterface","touches","targetTouches","changedTouches","TransitionEventInterface","WheelEventInterface","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","MOD","componentOrElement","flattenSingleChildIntoContext","normalizeKey","translateToKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","getLeafNode","getSiblingNode","nodeStart","nodeEnd","makePrefixMap","styleProp","prefixedEventNames","vendorPrefixes","prefixMap","animationend","animationiteration","animationstart","transitionend","animation","transition","escapeUserProvidedKey","userProvidedKeyEscapeRegex","ForEachBookKeeping","forEachFunction","forEachContext","forEachSingleChild","forEachChildren","forEachFunc","MapBookKeeping","mapResult","keyPrefix","mapFunction","mapContext","mapSingleChildIntoContext","childKey","mappedChild","mapIntoWithKeyPrefixInternal","escapedPrefix","mapChildren","forEachSingleChildDummy","countChildren","identity","validateMethodOverride","isAlreadyDefined","specPolicy","ReactClassInterface","ReactClassMixin","mixSpecIntoComponent","spec","proto","autoBindPairs","__reactAutoBindPairs","MIXINS_KEY","RESERVED_SPEC_KEYS","mixins","isReactClassMethod","isFunction","shouldAutoBind","autobind","createMergedResultFunction","createChainedFunction","mixStaticSpecIntoComponent","statics","isReserved","isInherited","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","boundMethod","bindAutoBindMethods","pairs","autoBindKey","injectedMixins","getDefaultProps","getInitialState","replaceState","newState","ReactClassComponent","injectMixin","createDOMFactory","abbr","address","article","aside","audio","bdi","bdo","big","blockquote","canvas","datalist","dd","del","details","dfn","dialog","dl","dt","fieldset","figcaption","figure","footer","h1","h2","h3","h4","h5","h6","head","header","hgroup","iframe","ins","kbd","li","main","mark","menu","meter","nav","noscript","ol","output","picture","progress","q","rp","rt","ruby","samp","script","section","small","strong","sub","sup","table","u","ul","var","video","circle","defs","ellipse","g","line","linearGradient","polygon","polyline","radialGradient","rect","stop","tspan","ReactPropTypeLocationNames","_require","ComponentDummy","getNextDebugID","nextDebugID","_HelpResultView","_HelpResultView2","_AboutResultView","_AboutResultView2","_ExpressionResultView","_ExpressionResultView2","_WhatsnewResultView","_WhatsnewResultView2","DisplayResult","renderUnknown","renderError","pathname","findResultComponent","AboutResultView","_extends","_formatter","_formatter2","_BinaryStringView","_BinaryStringView2","_BitwiseExpressionViewModel","_BitwiseExpressionViewModel2","_loglevel","_loglevel2","BitwiseOperationEpxressionView","getRows","buildNot","itm","ExpressionRow","buildMultiple","_React$Component2","_props","_ListOfNumbersExpressionView","_ListOfNumbersExpressionView2","_BitwiseOperationExpressionView","_BitwiseOperationExpressionView2","ExpressionResultView","HelpResultView","float","marginRight","ListOfNumersExpressionView","numberRows","OperandView","data-kind","flipBit","setValue","WhatsnewResultView","class","_reactDom","_reactDom2","_AppState","_AppState2","_appStateStore","_appStateStore2","_commands","_commands2","_AppRoot","_AppRoot2","_hash","_hash2","host","hash","stateData","debug","hashArgs","startupCommands","getElementById","constructedFrom","ctor","htmlElement","HtmlElement"],"mappings":"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","file":"bundle.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"http://localhost:8080/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 194);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(7);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (false) {\n (function () {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n })();\n}\n\nmodule.exports = warning;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMProperty = __webpack_require__(14);\nvar ReactDOMComponentFlags = __webpack_require__(61);\n\nvar invariant = __webpack_require__(0);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n true ? false ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? false ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(16);\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (false) {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar CallbackQueue = __webpack_require__(59);\nvar PooledClass = __webpack_require__(12);\nvar ReactFeatureFlags = __webpack_require__(64);\nvar ReactReconciler = __webpack_require__(15);\nvar Transaction = __webpack_require__(27);\n\nvar invariant = __webpack_require__(0);\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? false ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function initialize() {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function close() {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function initialize() {\n this.callbackQueue.reset();\n },\n close: function close() {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function destructor() {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function perform(method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? false ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function flushBatchedUpdates() {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? false ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function injectReconcileTransaction(ReconcileTransaction) {\n !ReconcileTransaction ? false ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function injectBatchingStrategy(_batchingStrategy) {\n !_batchingStrategy ? false ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? false ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? false ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(12);\n\nvar emptyFunction = __webpack_require__(7);\nvar warning = __webpack_require__(1);\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function timeStamp(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (false) {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (false) {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function preventDefault() {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function stopPropagation() {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function persist() {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function destructor() {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (false) {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (false) {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (false) {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function construct(target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function apply(constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function set(target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function E() {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n false ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\n\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function oneArgumentPooler(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function twoArgumentPooler(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function threeArgumentPooler(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function fourArgumentPooler(a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function standardReleaser(instance) {\n var Klass = this;\n !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function addPoolingTo(CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMNamespaces = __webpack_require__(32);\nvar setInnerHTML = __webpack_require__(29);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(40);\nvar setTextContent = __webpack_require__(76);\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some <object> plugins (like Flash Player) will read\n // <param> nodes immediately upon insertion into the DOM, so <object>\n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function injectDOMPropertyConfig(domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? false ? invariant(false, '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.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? false ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (false) {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (false) {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':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';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: false ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function isCustomAttribute(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactRef = __webpack_require__(147);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar warning = __webpack_require__(1);\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function mountComponent(internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n ) {\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function getHostNode(internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function unmountComponent(internalInstance, safely) {\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function receiveComponent(internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function performUpdateIfNecessary(internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n false ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (false) {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactChildren = __webpack_require__(176);\nvar ReactComponent = __webpack_require__(47);\nvar ReactPureComponent = __webpack_require__(181);\nvar ReactClass = __webpack_require__(177);\nvar ReactDOMFactories = __webpack_require__(178);\nvar ReactElement = __webpack_require__(17);\nvar ReactPropTypes = __webpack_require__(180);\nvar ReactVersion = __webpack_require__(182);\n\nvar onlyChild = __webpack_require__(185);\nvar warning = __webpack_require__(1);\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (false) {\n var canDefineProperty = require('./canDefineProperty');\n var ReactElementValidator = require('./ReactElementValidator');\n var didWarnPropTypesDeprecated = false;\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (false) {\n var warned = false;\n __spread = function __spread() {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactComponent,\n PureComponent: ReactPureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function createMixin(mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\n// TODO: Fix tests so that this deprecation warning doesn't cause failures.\nif (false) {\n if (canDefineProperty) {\n Object.defineProperty(React, 'PropTypes', {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? warning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated. Use ' + 'the prop-types package from npm instead.') : void 0;\n didWarnPropTypesDeprecated = true;\n return ReactPropTypes;\n }\n });\n }\n}\n\nmodule.exports = React;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _assign = __webpack_require__(3);\n\nvar ReactCurrentOwner = __webpack_require__(11);\n\nvar warning = __webpack_require__(1);\nvar canDefineProperty = __webpack_require__(80);\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = __webpack_require__(79);\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (false) {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (false) {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function warnAboutAccessingKey() {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n false ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function warnAboutAccessingRef() {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n false ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function ReactElement(type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (false) {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (false) {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (false) {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CommandResult = function () {\n function CommandResult(input) {\n _classCallCheck(this, CommandResult);\n\n this.input = input;\n this.inputHash = this.encodeHash(input);\n }\n\n _createClass(CommandResult, [{\n key: 'encodeHash',\n value: function encodeHash(string) {\n return encodeURI(string.trim().replace(/\\s/g, ','));\n }\n }]);\n\n return CommandResult;\n}();\n\nexports.default = CommandResult;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyObject = {};\n\nif (false) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar EventPluginRegistry = __webpack_require__(33);\nvar EventPluginUtils = __webpack_require__(34);\nvar ReactErrorUtils = __webpack_require__(38);\n\nvar accumulateInto = __webpack_require__(70);\nvar forEachAccumulated = __webpack_require__(71);\nvar invariant = __webpack_require__(0);\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function executeDispatchesAndRelease(event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function executeDispatchesAndReleaseSimulated(e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function executeDispatchesAndReleaseTopLevel(e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function putListener(inst, registrationName, listener) {\n !(typeof listener === 'function') ? false ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener === 'undefined' ? 'undefined' : _typeof(listener)) : _prodInvariant('94', registrationName, typeof listener === 'undefined' ? 'undefined' : _typeof(listener)) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function getListener(inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function deleteListener(inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function deleteAllListeners(inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function enqueueEvents(events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function processEventQueue(simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? false ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function __purge() {\n listenerBank = {};\n },\n\n __getListenerBank: function __getListenerBank() {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(21);\nvar EventPluginUtils = __webpack_require__(34);\n\nvar accumulateInto = __webpack_require__(70);\nvar forEachAccumulated = __webpack_require__(71);\nvar warning = __webpack_require__(1);\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function remove(key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function get(key) {\n return key._reactInternalInstance;\n },\n\n has: function has(key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function set(key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\nvar getEventTarget = __webpack_require__(43);\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function view(event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function detail(event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar EventPluginRegistry = __webpack_require__(33);\nvar ReactEventEmitterMixin = __webpack_require__(139);\nvar ViewportMetrics = __webpack_require__(69);\n\nvar getVendorPrefixedEventName = __webpack_require__(171);\nvar isEventSupported = __webpack_require__(44);\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function injectReactEventListener(ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function setEnabled(enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function isEnabled() {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function listenTo(registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function trapBubbledEvent(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function trapCapturedEvent(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function supportsEventPageXY() {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function ensureScrollValueMonitoring() {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(24);\nvar ViewportMetrics = __webpack_require__(69);\n\nvar getEventModifierState = __webpack_require__(42);\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function button(event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function relatedTarget(event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function pageX(event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function pageY(event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function reinitializeTransaction() {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function isInTransaction() {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function perform(method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? false ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function initializeAll(startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function closeAll(startIndex) {\n !this.isInTransaction() ? false ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\nvar DOMNamespaces = __webpack_require__(32);\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(40);\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function setInnerHTML(node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if ((typeof objA === 'undefined' ? 'undefined' : _typeof(objA)) !== 'object' || objA === null || (typeof objB === 'undefined' ? 'undefined' : _typeof(objB)) !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMLazyTree = __webpack_require__(13);\nvar Danger = __webpack_require__(116);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(40);\nvar setInnerHTML = __webpack_require__(29);\nvar setTextContent = __webpack_require__(76);\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (false) {\n dangerouslyReplaceNodeWithMarkup = function dangerouslyReplaceNodeWithMarkup(oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n processUpdates: function processUpdates(parentNode, updates) {\n if (false) {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: { toIndex: update.toIndex, content: update.content.toString() }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? false ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? false ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (false) {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: false ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function injectEventPluginOrder(injectedEventPluginOrder) {\n !!eventPluginOrder ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function injectEventPluginsByName(injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? false ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function getPluginModuleForEvent(event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function _resetEventPlugins() {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (false) {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactErrorUtils = __webpack_require__(38);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function injectComponentTree(Injected) {\n ComponentTree = Injected;\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function injectTreeTraversal(Injected) {\n TreeTraversal = Injected;\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (false) {\n validateEventDispatches = function validateEventDispatches(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (false) {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? false ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function getInstanceFromNode(node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function getNodeFromInstance(node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function isAncestor(a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function getLowestCommonAncestor(a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function getParentInstance(inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function traverseTwoPhase(target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function traverseEnterLeave(from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactPropTypesSecret = __webpack_require__(145);\nvar propTypesFactory = __webpack_require__(57);\n\nvar React = __webpack_require__(16);\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function value(props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function checked(props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function checkPropTypes(tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n false ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function getValue(inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function getChecked(inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function executeOnChange(inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function injectEnvironment(environment) {\n !!injected ? false ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function rethrowCaughtError() {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (false) {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = func.bind(null, a);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactInstanceMap = __webpack_require__(23);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg === 'undefined' ? 'undefined' : _typeof(arg);\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (false) {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%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.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%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`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted(publicInstance) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._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.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function enqueueCallback(publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function enqueueCallbackInternal(internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function enqueueForceUpdate(publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function enqueueReplaceState(publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function enqueueSetState(publicInstance, partialState) {\n if (false) {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function enqueueElementInternal(internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function validateCallback(callback, callerName) {\n !(!callback || typeof callback === 'function') ? false ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function createMicrosoftUnsafeLocalFunction(func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG <use> element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement === 'undefined' ? 'undefined' : _typeof(prevElement);\n var nextType = typeof nextElement === 'undefined' ? 'undefined' : _typeof(nextElement);\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar emptyFunction = __webpack_require__(7);\nvar warning = __webpack_require__(1);\n\nvar validateDOMNesting = emptyFunction;\n\nif (false) {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['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'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function updatedAncestorInfo(oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function isTagValidWithParent(tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function findInvalidAncestorForTag(tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function findOwnerStack(instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function validateDOMNesting(childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar ReactNoopUpdateQueue = __webpack_require__(48);\n\nvar canDefineProperty = __webpack_require__(80);\nvar emptyObject = __webpack_require__(20);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !((typeof partialState === 'undefined' ? 'undefined' : _typeof(partialState)) === 'object' || typeof partialState === 'function' || partialState == null) ? false ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (false) {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function defineDeprecationWarning(methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function get() {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar warning = __webpack_require__(1);\n\nfunction warnNoop(publicInstance, callerName) {\n if (false) {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%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.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted(publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function enqueueCallback(publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function enqueueForceUpdate(publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function enqueueReplaceState(publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function enqueueSetState(publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar expression = {\n factories: [],\n canParse: function canParse(string) {\n var trimmed = string.replace(/^\\s+|\\s+$/, '');\n var i = this.factories.length - 1;\n for (; i >= 0; i--) {\n if (this.factories[i].canCreate(trimmed) === true) {\n return true;\n }\n }\n return false;\n },\n parse: function parse(string) {\n var trimmed = string.replace(/^\\s+|\\s+$/, '');\n var i = 0,\n l = this.factories.length,\n factory;\n\n for (; i < l; i++) {\n factory = this.factories[i];\n\n if (factory.canCreate(trimmed) == true) {\n return factory.create(trimmed);\n }\n }\n\n return null;\n },\n parseOperand: function parseOperand(input) {\n return new Operand(input);\n },\n createOperand: function createOperand(number, kind) {\n return Operand.create(number, kind);\n },\n addFactory: function addFactory(factory) {\n this.factories.push(factory);\n }\n};\n\n// List of numbers\nexpression.addFactory({\n regex: /^(-?(?:\\d+|0x[\\d,a-f]+)\\s?)+$/,\n canCreate: function canCreate(string) {\n return this.regex.test(string);\n },\n create: function create(string) {\n var matches = this.regex.exec(string),\n numbers = [],\n input = matches.input;\n\n input.split(' ').forEach(function (n) {\n if (n.trim().length > 0) {\n numbers.push(new Operand(n.trim()));\n }\n });\n\n return new ListOfNumbersExpression(input, numbers);\n }\n});\n\n// Not Expression\nexpression.addFactory({\n regex: /^(~)(-?(?:\\d+|0x[\\d,a-f]+))$/,\n canCreate: function canCreate(string) {\n return this.regex.test(string);\n },\n create: function create(string) {\n var matches = this.regex.exec(string),\n operand = new Operand(matches[2]);\n\n return new SingleOperandExpression(matches.input, operand, matches[1]);\n }\n});\n\n// Multiple operands expression\nexpression.addFactory({\n fullRegex: /^((<<|>>|>>>|\\||\\&|\\^)?(-?((?:\\d+(?!x))|(?:0x[\\d,a-f]+))))+$/,\n regex: /(<<|>>|>>>|\\||\\&|\\^)?(-?((?:\\d+(?!x))|(?:0x[\\d,a-f]+)))/g,\n canCreate: function canCreate(string) {\n this.fullRegex.lastIndex = 0;\n return this.fullRegex.test(this.normalizeString(string));\n },\n create: function create(string) {\n var m,\n operands = [],\n normalizedString = this.normalizeString(string);\n\n while ((m = this.regex.exec(normalizedString)) != null) {\n operands.push(this.parseMatch(m));\n }\n\n return new MultipleOperandsExpression(normalizedString, operands);\n },\n parseMatch: function parseMatch(m) {\n var input = m[0],\n sign = m[1],\n num = m[2];\n\n if (sign == null) {\n return new Operand(num);\n } else {\n return new SingleOperandExpression(input, new Operand(num), sign);\n }\n },\n normalizeString: function normalizeString(string) {\n return string.replace(/\\s+/g, '');\n }\n});\n\n// Represents numeric value\n\nvar Operand = exports.Operand = function () {\n function Operand(input) {\n _classCallCheck(this, Operand);\n\n this.input = input;\n this.value = parseInt(input);\n this.hex = Operand.toHexString(this.value.toString(16));\n this.dec = this.value.toString(10);\n // >>> 0 makes negative numbers like -1 to be displayed as '11111111111111111111111111111111' in binary instead of -1\n this.bin = this.value < 0 ? (this.value >>> 0).toString(2) : this.value.toString(2);\n this.kind = this.input.indexOf('0x') > -1 ? 'hex' : 'dec';\n this.other = this.kind == 'dec' ? this.hex : this.dec;\n this.lengthInBits = Operand.getBitLength(this.value);\n }\n\n _createClass(Operand, [{\n key: 'getLengthInBits',\n value: function getLengthInBits() {\n if (this.value < 0) {\n return 32;\n }\n return Math.floor(Math.log(this.value) / Math.log(2)) + 1;\n }\n }, {\n key: 'getOtherKind',\n value: function getOtherKind(kind) {\n switch (kind || this.kind) {\n case 'dec':\n return 'hex';\n case 'hex':\n return 'dec';\n default:\n throw new Error(kind + \" kind doesn't have opposite kind\");\n }\n }\n }, {\n key: 'toString',\n value: function toString() {\n return this.input;\n }\n }, {\n key: 'setValue',\n value: function setValue(value) {\n console.log('Before ' + value, this);\n this.value = value;\n this.bin = Operand.toKindString(this.value, 'bin');\n this.dec = Operand.toKindString(this.value, 'dec');\n this.hex = Operand.toKindString(this.value, 'hex');\n this.other = Operand.toKindString(this.value, this.getOtherKind());\n this.input = Operand.toKindString(this.value, this.kind);\n console.log('After ' + value, this);\n }\n }], [{\n key: 'getBitLength',\n value: function getBitLength(num) {\n return Math.floor(Math.log(num) / Math.log(2)) + 1;\n }\n }, {\n key: 'getBase',\n value: function getBase(kind) {\n switch (kind) {\n case 'bin':\n return 2;\n case 'hex':\n return 16;\n case 'dec':\n return 10;\n }\n }\n }, {\n key: 'create',\n value: function create(number, kind) {\n var str = number.toString(Operand.getBase(kind));\n if (kind == 'hex') {\n str = Operand.toHexString(str);\n }\n\n return new Operand(str);\n }\n }, {\n key: 'toKindString',\n value: function toKindString(value, kind) {\n switch (kind) {\n case 'hex':\n var hexVal = Math.abs(value).toString(16);\n return value >= 0 ? '0x' + hexVal : '-0x' + hexVal;\n case 'bin':\n return (value >>> 0).toString(2);\n case 'dec':\n return value.toString(10);\n default:\n throw new Error(\"Unexpected kind: \" + kind);\n }\n }\n }, {\n key: 'toHexString',\n value: function toHexString(hex) {\n return hex.indexOf('-') == 0 ? '-0x' + hex.substr(1) : '0x' + hex;\n }\n }]);\n\n return Operand;\n}();\n\n// Expressions like ~1\n\n\nvar SingleOperandExpression = exports.SingleOperandExpression = function () {\n function SingleOperandExpression(expressionString, operand, sign) {\n _classCallCheck(this, SingleOperandExpression);\n\n this.expressionString = expressionString;\n this.operand1 = operand;\n this.sign = sign;\n }\n\n _createClass(SingleOperandExpression, [{\n key: 'apply',\n value: function apply(value) {\n var str = '';\n if (this.sign == '~') {\n str = '~' + this.operand1.value;\n } else {\n str = value + this.sign + this.operand1.value;\n }\n\n return Operand.create(eval(str), this.operand1.kind);\n }\n }, {\n key: 'isShiftExpression',\n value: function isShiftExpression() {\n return this.sign.indexOf('<') >= 0 || this.sign.indexOf('>') >= 0;\n }\n }, {\n key: 'toString',\n value: function toString() {\n return this.sign + this.operand1.toString();\n }\n }]);\n\n return SingleOperandExpression;\n}();\n\n// Expression like 1|2 or 4^5\n\n\nvar TwoOperandExpression = exports.TwoOperandExpression = function TwoOperandExpression(expressionString, operand1, operand2, sign) {\n _classCallCheck(this, TwoOperandExpression);\n\n this.expressionString = expressionString;\n this.operand1 = operand1;\n this.operand2 = operand2;\n this.sign = sign;\n};\n\nvar MultipleOperandsExpression = exports.MultipleOperandsExpression = function MultipleOperandsExpression(expressionString, expressions) {\n _classCallCheck(this, MultipleOperandsExpression);\n\n this.expressionString = expressionString;\n this.expressions = expressions;\n};\n\nvar ListOfNumbersExpression = exports.ListOfNumbersExpression = function () {\n function ListOfNumbersExpression(expressionString, numbers) {\n _classCallCheck(this, ListOfNumbersExpression);\n\n this.expressionString = expressionString;\n this.numbers = numbers;\n this.maxBitsLegnth = numbers.map(function (n) {\n return n.lengthInBits;\n }).reduce(function (n, c) {\n return n >= c ? n : c;\n }, 0);\n }\n\n _createClass(ListOfNumbersExpression, [{\n key: 'toString',\n value: function toString() {\n return this.numbers.map(function (n) {\n return n.value.toString();\n }).join(' ');\n }\n }]);\n\n return ListOfNumbersExpression;\n}();\n\nvar Expression = exports.Expression = function () {\n function Expression() {\n _classCallCheck(this, Expression);\n }\n\n _createClass(Expression, [{\n key: 'toString',\n value: function toString() {\n return this.expressionString ? \"Expression: \" + this.expressionString : this.toString();\n }\n }]);\n\n return Expression;\n}();\n\nvar parser = exports.parser = expression;\n\nvar Parser = exports.Parser = function () {\n function Parser(input, pos) {\n _classCallCheck(this, Parser);\n\n this.input = input;\n this.pos = pos || 0;\n this.buffer = [];\n }\n\n _createClass(Parser, [{\n key: 'parse',\n value: function parse() {\n console.log(this.input.length);\n while (this.pos < this.input.length) {\n this.buffer.push(this.input[this.pos]);\n this.pos++;\n }\n console.log('exit');\n }\n }]);\n\n return Parser;\n}();\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n\n if (true) {\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n})(undefined, function () {\n \"use strict\";\n\n var noop = function noop() {};\n var undefinedType = \"undefined\";\n\n function realMethod(methodName) {\n if ((typeof console === 'undefined' ? 'undefined' : _typeof(console)) === undefinedType) {\n return false; // We can't build a real method without a console to log to\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function () {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // these private functions always need `this` to be set properly\n\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if ((typeof console === 'undefined' ? 'undefined' : _typeof(console)) !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = i < level ? noop : this.methodFactory(methodName, level, loggerName);\n }\n }\n\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n var logMethods = [\"trace\", \"debug\", \"info\", \"warn\", \"error\"];\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie = encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n if ((typeof storedLevel === 'undefined' ? 'undefined' : _typeof(storedLevel)) === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(encodeURIComponent(storageKey) + \"=\");\n if (location) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public API\n *\n */\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5 };\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) {\n // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if ((typeof console === 'undefined' ? 'undefined' : _typeof(console)) === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function (persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function (persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Package-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== undefinedType ? window.log : undefined;\n defaultLogger.noConflict = function () {\n if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== undefinedType && window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n return defaultLogger;\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _is = __webpack_require__(195);\n\nvar _is2 = _interopRequireDefault(_is);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar handlers = [];\n\nvar config = {\n errorHandler: function errorHandler(input, err) {\n return logError(err);\n }\n};\n\nvar cmd = {\n debugMode: false,\n execute: function execute(rawInput) {\n var input = rawInput.trim().toLowerCase();\n var handler = findHandler(input);\n\n if (handler != null) {\n if (this.debugMode) {\n invokeHandler(input, handler);\n } else {\n try {\n invokeHandler(input, handler);\n } catch (e) {\n config.errorHandler(input, e);\n }\n }\n } else {\n logError(input, new Error(\"Unsupported expression: \" + input.trim()));\n }\n },\n commands: function commands(catalog) {\n for (var key in catalog) {\n if (catalog.hasOwnProperty(key)) {\n this.command(key, catalog[key]);\n }\n }\n },\n command: function command(cmd, handler) {\n var h = createHandler(cmd, handler);\n if (h == null) {\n console.warn('unexpected set of arguments: ', Array.prototype.splice.call(arguments));\n return;\n }\n\n if (!_is2.default.aFunction(h.canHandle)) {\n console.warn('handler is missing \"canHandle\" function. registration denied.');\n return;\n }\n\n if (!_is2.default.aFunction(h.handle)) {\n console.warn('handler is missing \"handle\" function. registration denied.');\n return;\n }\n\n handlers.push(h);\n },\n clear: function clear() {\n console.log('clear');\n },\n onError: function onError(handler) {\n config.errorHandler = handler;\n }\n};\n\nfunction logError(err) {\n console.error(err);\n}\n\nfunction invokeHandler(input, handler) {\n var cmdResult = handler.handle({ input: input });\n if (cmdResult != null) {\n console.log(cmdResult);\n }\n}\n\nfunction createHandler(cmd, handler) {\n if (_is2.default.plainObject(cmd)) {\n return cmd;\n }\n\n if (_is2.default.string(cmd)) {\n return { canHandle: function canHandle(input) {\n return input === cmd;\n }, handle: handler };\n }\n\n return null;\n}\n\nfunction findHandler(input) {\n var i = 0;\n for (i; i < handlers.length; i++) {\n if (handlers[i].canHandle(input)) {\n return handlers[i];\n }\n }\n};\n\nexports.default = cmd;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _cmd = __webpack_require__(51);\n\nvar _cmd2 = _interopRequireDefault(_cmd);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InputBox = function (_React$Component) {\n _inherits(InputBox, _React$Component);\n\n function InputBox() {\n _classCallCheck(this, InputBox);\n\n var _this = _possibleConstructorReturn(this, (InputBox.__proto__ || Object.getPrototypeOf(InputBox)).call(this));\n\n _this.history = [];\n _this.historyIndex = -1;\n return _this;\n }\n\n _createClass(InputBox, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.nameInput.focus();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return _react2.default.createElement('input', { id: 'in', type: 'text',\n ref: function ref(input) {\n _this2.nameInput = input;\n },\n onKeyUp: function onKeyUp(e) {\n return _this2.onKeyUp(e);\n },\n onKeyDown: function onKeyDown(e) {\n return _this2.onKeyDown(e);\n },\n className: 'expressionInput mono',\n placeholder: 'type expression like \\'1>>2\\' or \\'help\\' ' });\n }\n }, {\n key: 'onKeyUp',\n value: function onKeyUp(e) {\n var input = e.target;\n if (e.keyCode != 13 || input.value.trim().length == 0) {\n return;\n }\n\n var value = input.value;\n this.history.unshift(value);\n this.historyIndex = -1;\n\n input.value = '';\n _cmd2.default.execute(value);\n console.log(this.history);\n }\n }, {\n key: 'onKeyDown',\n value: function onKeyDown(args) {\n\n if (args.keyCode == 38) {\n var newIndex = this.historyIndex + 1;\n\n if (this.history.length > newIndex) {\n // up\n args.target.value = this.history[newIndex];\n this.historyIndex = newIndex;\n }\n\n args.preventDefault();\n return;\n }\n\n if (args.keyCode == 40) {\n if (this.historyIndex > 0) {\n // down\n args.target.value = this.history[--this.historyIndex];\n }\n\n args.preventDefault();\n }\n }\n }]);\n\n return InputBox;\n}(_react2.default.Component);\n\nexports.default = InputBox;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @typechecks\n */\n\nvar emptyFunction = __webpack_require__(7);\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (false) {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\n};\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\n\nvar factory = __webpack_require__(109);\nmodule.exports = function (isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar PooledClass = __webpack_require__(12);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? false ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(14);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar quoteAttributeValueForBrowser = __webpack_require__(172);\nvar warning = __webpack_require__(1);\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n false ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function createMarkupForID(id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function setAttributeForID(node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function createMarkupForRoot() {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function setAttributeForRoot(node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function createMarkupForProperty(name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function createMarkupForCustomAttribute(name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function setValueForProperty(node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (false) {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function setValueForAttribute(node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (false) {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function deleteValueForAttribute(node, name) {\n node.removeAttribute(name);\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function deleteValueForProperty(node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar LinkedValueUtils = __webpack_require__(36);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n false ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n false ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n false ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function getHostProps(inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function mountWrapper(inst, props) {\n if (false) {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n false ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function getSelectValueContext(inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function postUpdateWrapper(inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function injectEmptyComponentFactory(factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function create(instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function injectGenericComponentClass(componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function injectTextComponentClass(componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? false ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMSelection = __webpack_require__(132);\n\nvar containsNode = __webpack_require__(98);\nvar focusNode = __webpack_require__(54);\nvar getActiveElement = __webpack_require__(55);\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function getSelectionInformation() {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function restoreSelection(priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function getSelection(input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function setSelection(input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMLazyTree = __webpack_require__(13);\nvar DOMProperty = __webpack_require__(14);\nvar React = __webpack_require__(16);\nvar ReactBrowserEventEmitter = __webpack_require__(25);\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMContainerInfo = __webpack_require__(126);\nvar ReactDOMFeatureFlags = __webpack_require__(128);\nvar ReactFeatureFlags = __webpack_require__(64);\nvar ReactInstanceMap = __webpack_require__(23);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactMarkupChecksum = __webpack_require__(142);\nvar ReactReconciler = __webpack_require__(15);\nvar ReactUpdateQueue = __webpack_require__(39);\nvar ReactUpdates = __webpack_require__(9);\n\nvar emptyObject = __webpack_require__(20);\nvar instantiateReactComponent = __webpack_require__(74);\nvar invariant = __webpack_require__(0);\nvar setInnerHTML = __webpack_require__(29);\nvar shouldUpdateReactComponent = __webpack_require__(45);\nvar warning = __webpack_require__(1);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (false) {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (false) {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function TopLevelWrapper() {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (false) {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function scrollMonitor(container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function _updateRootComponent(prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function _renderNewRootComponent(nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n false ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? false ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function renderSubtreeIntoContainer(parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? false ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function _renderSubtreeIntoContainer(parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? false ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n false ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function render(nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function unmountComponentAtNode(container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n false ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? false ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function _mountImageIntoNode(markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? false ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (false) {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (false) {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar React = __webpack_require__(16);\n\nvar invariant = __webpack_require__(0);\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function getType(node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n true ? false ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function refreshScrollValues(scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? false ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactNodeTypes = __webpack_require__(68);\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar ReactCompositeComponent = __webpack_require__(123);\nvar ReactEmptyComponent = __webpack_require__(63);\nvar ReactHostComponent = __webpack_require__(65);\n\nvar getNextDebugID = __webpack_require__(184);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function ReactCompositeComponentWrapper(element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if ((typeof node === 'undefined' ? 'undefined' : _typeof(node)) === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (false) {\n if (type === undefined || (typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + 'it\\'s defined in.';\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n true ? false ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type === 'undefined' ? 'undefined' : _typeof(type), info) : _prodInvariant('130', type == null ? type : typeof type === 'undefined' ? 'undefined' : _typeof(type), info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n true ? false ? invariant(false, 'Encountered invalid React node of type %s', typeof node === 'undefined' ? 'undefined' : _typeof(node)) : _prodInvariant('131', typeof node === 'undefined' ? 'undefined' : _typeof(node)) : void 0;\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (false) {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (false) {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\nvar escapeTextContentForBrowser = __webpack_require__(28);\nvar setInnerHTML = __webpack_require__(29);\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function setTextContent(node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar REACT_ELEMENT_TYPE = __webpack_require__(138);\n\nvar getIteratorFn = __webpack_require__(169);\nvar invariant = __webpack_require__(0);\nvar KeyEscapeUtils = __webpack_require__(35);\nvar warning = __webpack_require__(1);\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && (typeof component === 'undefined' ? 'undefined' : _typeof(component)) === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children === 'undefined' ? 'undefined' : _typeof(children);\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (false) {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (false) {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar ReactCurrentOwner = __webpack_require__(11);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty)\n // Strip regex characters so we can use it for regex\n .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n // Remove hasOwnProperty from the template to make it generic\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function setItem(id, item) {\n itemMap.set(id, item);\n };\n getItem = function getItem(id) {\n return itemMap.get(id);\n };\n removeItem = function removeItem(id) {\n itemMap['delete'](id);\n };\n getItemIDs = function getItemIDs() {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function addRoot(id) {\n rootIDSet.add(id);\n };\n removeRoot = function removeRoot(id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function getRootIDs() {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function getKeyFromID(id) {\n return '.' + id;\n };\n var getIDFromKey = function getIDFromKey(key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function setItem(id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function getItem(id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function removeItem(id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function getItemIDs() {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function addRoot(id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function removeRoot(id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function getRootIDs() {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction _getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n false ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function onSetChildren(id, nextChildIDs) {\n var item = getItem(id);\n !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? false ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || _typeof(nextChild.element) !== 'object' || nextChild.element == null) ? false ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? false ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? false ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function onBeforeMountComponent(id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function onBeforeUpdateComponent(id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function onMountComponent(id) {\n var item = getItem(id);\n !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function onUpdateComponent(id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function onUnmountComponent(id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function purgeUnmountedComponents() {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function isMounted(id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function getCurrentStackAddendum(topElement) {\n var info = '';\n if (topElement) {\n var name = _getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function getStackAddendumByID(id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function getChildIDs(id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function getDisplayName(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return _getDisplayName(element);\n },\n getElement: function getElement(id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function getOwnerID(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function getParentID(id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function getSource(id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function getText(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function getUpdateCount(id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar canDefineProperty = false;\nif (false) {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function get() {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BinaryStringView = function (_React$Component) {\n _inherits(BinaryStringView, _React$Component);\n\n function BinaryStringView() {\n _classCallCheck(this, BinaryStringView);\n\n return _possibleConstructorReturn(this, (BinaryStringView.__proto__ || Object.getPrototypeOf(BinaryStringView)).apply(this, arguments));\n }\n\n _createClass(BinaryStringView, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'span',\n null,\n this.getChildren()\n );\n }\n }, {\n key: 'onBitClick',\n value: function onBitClick(index, e) {\n if (!this.props.allowFlipBits) {\n return;\n }\n\n if (this.props.onFlipBit) {\n this.props.onFlipBit(index);\n }\n }\n }, {\n key: 'getChildren',\n value: function getChildren() {\n var bits = this.createBits(this.props.binaryString.split(''));\n\n if (this.props.emphasizeBytes) {\n return this.splitIntoBytes(bits);\n }\n\n return bits;\n }\n }, {\n key: 'createBits',\n value: function createBits(bitChars) {\n var _this2 = this;\n\n var allowFlipBits = this.props.allowFlipBits || false;\n var css = allowFlipBits ? ' flipable' : '';\n var classNames = { '0': 'zero' + css, '1': 'one ' + css };\n\n return bitChars.map(function (c, i) {\n return _react2.default.createElement(\n 'span',\n { className: classNames[c], key: i, onClick: function onClick(e) {\n return _this2.onBitClick(i, e);\n } },\n c\n );\n });\n }\n }, {\n key: 'splitIntoBytes',\n value: function splitIntoBytes(bits) {\n var bytes = [];\n\n var key = 0;\n while (bits.length > 0) {\n bytes.push(_react2.default.createElement(\n 'span',\n { key: key++, className: 'byte' },\n bits.splice(0, 8)\n ));\n }\n\n return bytes;\n }\n }]);\n\n return BinaryStringView;\n}(_react2.default.Component);\n\nexports.default = BinaryStringView;\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar BitwiseExpressionViewModel = function () {\n function BitwiseExpressionViewModel() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$emphasizeBytes = _ref.emphasizeBytes,\n emphasizeBytes = _ref$emphasizeBytes === undefined ? false : _ref$emphasizeBytes;\n\n _classCallCheck(this, BitwiseExpressionViewModel);\n\n this.emphasizeBytes = emphasizeBytes;\n this.items = [];\n this.maxNumberOfBits = 0;\n }\n\n _createClass(BitwiseExpressionViewModel, [{\n key: 'addOperand',\n value: function addOperand(operand) {\n this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign: '', label: operand.toString(), bin: operand.bin, other: operand.other, css: '' });\n }\n }, {\n key: 'addExpression',\n value: function addExpression(expression) {\n this.maxNumberOfBits = Math.max(expression.operand1.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign: expression.sign, label: expression.operand1.toString(), bin: expression.operand1.bin, other: expression.operand1.other, css: '' });\n }\n }, {\n key: 'addShiftExpressionResult',\n value: function addShiftExpressionResult(expression, resultOperand) {\n this.maxNumberOfBits = Math.max(resultOperand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({\n sign: expression.sign + expression.operand1.input,\n label: resultOperand.toString(),\n bin: resultOperand.bin,\n other: resultOperand.other,\n css: 'expression-result' });\n }\n }, {\n key: 'addExpressionResult',\n value: function addExpressionResult(operand) {\n this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign: '=', label: operand.toString(), bin: operand.bin, other: operand.other, css: 'expression-result' });\n }\n\n // TODO: move this method elsewhere. It is also used in LisOfNumbersExpressionView.js\n\n }], [{\n key: 'buildMultiple',\n value: function buildMultiple(expr, config) {\n\n var op = expr.expressions[0],\n i = 1,\n l = expr.expressions.length,\n ex,\n m = new BitwiseExpressionViewModel(config);\n\n m.addOperand(op);\n\n for (; i < l; i++) {\n ex = expr.expressions[i];\n op = ex.apply(op.value);\n\n if (ex.isShiftExpression()) {\n m.addShiftExpressionResult(ex, op);\n } else {\n m.addExpression(ex);\n m.addExpressionResult(op);\n }\n }\n\n m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);\n return m;\n }\n }, {\n key: 'buildNot',\n value: function buildNot(expression, config) {\n\n var m = new BitwiseExpressionViewModel(config);\n m.addExpression(expression);\n m.addExpressionResult(expression.apply());\n m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);\n return m;\n }\n }]);\n\n return BitwiseExpressionViewModel;\n}();\n\nBitwiseExpressionViewModel.getNumberOfBits = function (bits, emphasizeBytes) {\n if (emphasizeBytes && bits % 8 != 0) {\n if (bits < 8) {\n return 8;\n }\n\n var n = bits - bits % 8;\n return n + 8;\n }\n\n return bits;\n};\n\nexports.default = BitwiseExpressionViewModel;\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n formatString: function formatString(num, kind) {\n return num.toString(getBase(kind || \"bin\"));\n },\n padLeft: function padLeft(str, length, symbol) {\n var sb = Array.prototype.slice.call(str),\n symbol = symbol || \"0\";\n\n if (length == null) {\n return str;\n }\n\n while (length > sb.length) {\n sb.unshift(symbol);\n }\n\n return sb.join('');\n }\n};\n\n\nfunction getBase(kind) {\n switch (kind) {\n case 'bin':\n return 2;\n case 'hex':\n return 16;\n case 'dec':\n return 10;\n }\n}\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(19);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar AboutResult = function (_CommandResult) {\n _inherits(AboutResult, _CommandResult);\n\n function AboutResult(input) {\n _classCallCheck(this, AboutResult);\n\n return _possibleConstructorReturn(this, (AboutResult.__proto__ || Object.getPrototypeOf(AboutResult)).call(this, input));\n }\n\n return AboutResult;\n}(_CommandResult3.default);\n\nexports.default = AboutResult;\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(19);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ErrorResult = function (_CommandResult) {\n _inherits(ErrorResult, _CommandResult);\n\n function ErrorResult(input, error) {\n _classCallCheck(this, ErrorResult);\n\n var _this = _possibleConstructorReturn(this, (ErrorResult.__proto__ || Object.getPrototypeOf(ErrorResult)).call(this, input));\n\n _this.error = error;\n return _this;\n }\n\n return ErrorResult;\n}(_CommandResult3.default);\n\nexports.default = ErrorResult;\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(19);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ExpressionResult = function (_CommandResult) {\n _inherits(ExpressionResult, _CommandResult);\n\n function ExpressionResult(input, expression) {\n _classCallCheck(this, ExpressionResult);\n\n var _this = _possibleConstructorReturn(this, (ExpressionResult.__proto__ || Object.getPrototypeOf(ExpressionResult)).call(this, input));\n\n _this.expression = expression;\n return _this;\n }\n\n return ExpressionResult;\n}(_CommandResult3.default);\n\nexports.default = ExpressionResult;\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(19);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar HelpResult = function (_CommandResult) {\n _inherits(HelpResult, _CommandResult);\n\n function HelpResult(input) {\n _classCallCheck(this, HelpResult);\n\n return _possibleConstructorReturn(this, (HelpResult.__proto__ || Object.getPrototypeOf(HelpResult)).call(this, input));\n }\n\n return HelpResult;\n}(_CommandResult3.default);\n\nexports.default = HelpResult;\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(19);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar UnknownCommandResult = function (_CommandResult) {\n _inherits(UnknownCommandResult, _CommandResult);\n\n function UnknownCommandResult(input) {\n _classCallCheck(this, UnknownCommandResult);\n\n var _this = _possibleConstructorReturn(this, (UnknownCommandResult.__proto__ || Object.getPrototypeOf(UnknownCommandResult)).call(this, input));\n\n _this.message = 'Sorry, i don\\'\\'t know what ' + input + ' is :(';\n return _this;\n }\n\n return UnknownCommandResult;\n}(_CommandResult3.default);\n\nexports.default = UnknownCommandResult;\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _CommandResult2 = __webpack_require__(19);\n\nvar _CommandResult3 = _interopRequireDefault(_CommandResult2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar WhatsnewResult = function (_CommandResult) {\n _inherits(WhatsnewResult, _CommandResult);\n\n function WhatsnewResult(input) {\n _classCallCheck(this, WhatsnewResult);\n\n return _possibleConstructorReturn(this, (WhatsnewResult.__proto__ || Object.getPrototypeOf(WhatsnewResult)).call(this, input));\n }\n\n return WhatsnewResult;\n}(_CommandResult3.default);\n\nexports.default = WhatsnewResult;\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(124);\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar AppState = function () {\n function AppState(persistData) {\n _classCallCheck(this, AppState);\n\n this.emphasizeBytes = persistData.emphasizeBytes || true;\n this.commandResults = [];\n this.handlers = [];\n this.uiTheme = persistData.uiTheme || 'dark';\n this.debugMode = false;\n\n this.version = 1;\n this.persistedVersion = persistData.version || 0.9;\n this.wasOldVersion = this.version > this.persistedVersion;\n }\n\n _createClass(AppState, [{\n key: 'addCommandResult',\n value: function addCommandResult(result) {\n this.commandResults.unshift(result);\n this.triggerChanged();\n }\n }, {\n key: 'clearCommmandResults',\n value: function clearCommmandResults() {\n this.commandResults = [];\n this.triggerChanged();\n }\n }, {\n key: 'toggleEmphasizeBytes',\n value: function toggleEmphasizeBytes() {\n this.emphasizeBytes = !this.emphasizeBytes;\n this.triggerChanged();\n }\n }, {\n key: 'onChange',\n value: function onChange(handler) {\n this.handlers.push(handler);\n }\n }, {\n key: 'triggerChanged',\n value: function triggerChanged() {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.handlers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var h = _step.value;\n\n h();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: 'setUiTheme',\n value: function setUiTheme(theme) {\n this.uiTheme = theme;\n this.triggerChanged();\n }\n }, {\n key: 'getPersistData',\n value: function getPersistData() {\n return {\n emphasizeBytes: this.emphasizeBytes,\n uiTheme: this.uiTheme,\n version: this.version\n };\n }\n }]);\n\n return AppState;\n}();\n\nexports.default = AppState;\n;\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar storeKey = 'AppState';\n\nexports.default = {\n getPersistedData: function getPersistedData() {\n var json = window.localStorage.getItem(storeKey);\n if (!json) {\n return {};\n }\n\n try {\n return JSON.parse(json);\n } catch (ex) {\n console.error('Failed to parse AppState json. Json Value: \\n' + json, ex);\n return {};\n }\n },\n watch: function watch(appState) {\n var _this = this;\n\n appState.onChange(function () {\n return _this.persistData(appState);\n });\n },\n persistData: function persistData(appState) {\n localStorage.setItem(storeKey, JSON.stringify(appState.getPersistData()));\n }\n};\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _HelpResult = __webpack_require__(87);\n\nvar _HelpResult2 = _interopRequireDefault(_HelpResult);\n\nvar _AboutResult = __webpack_require__(84);\n\nvar _AboutResult2 = _interopRequireDefault(_AboutResult);\n\nvar _UnknownCommandResult = __webpack_require__(88);\n\nvar _UnknownCommandResult2 = _interopRequireDefault(_UnknownCommandResult);\n\nvar _ExpressionResult = __webpack_require__(86);\n\nvar _ExpressionResult2 = _interopRequireDefault(_ExpressionResult);\n\nvar _ErrorResult = __webpack_require__(85);\n\nvar _ErrorResult2 = _interopRequireDefault(_ErrorResult);\n\nvar _WhatsnewResult = __webpack_require__(89);\n\nvar _WhatsnewResult2 = _interopRequireDefault(_WhatsnewResult);\n\nvar _expression = __webpack_require__(49);\n\nvar expression = _interopRequireWildcard(_expression);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar cmdConfig = {};\n\nexports.default = {\n initialize: function initialize(cmd, appState) {\n\n cmd.command({\n canHandle: function canHandle(input) {\n return expression.parser.canParse(input);\n },\n handle: function handle(c) {\n var expr = expression.parser.parse(c.input);\n appState.addCommandResult(new _ExpressionResult2.default(c.input, expr));\n }\n });\n\n cmd.commands({\n 'help': function help(c) {\n appState.addCommandResult(new _HelpResult2.default(c.input));\n },\n 'clear': function clear() {\n appState.clearCommmandResults();\n },\n 'em': function em() {\n appState.toggleEmphasizeBytes();\n },\n 'dark': function dark() {\n appState.setUiTheme('dark');\n },\n 'light': function light() {\n appState.setUiTheme('light');\n },\n 'about': function about(c) {\n appState.addCommandResult(new _AboutResult2.default(c.input));\n },\n 'whatsnew': function whatsnew(c) {\n appState.addCommandResult(new _WhatsnewResult2.default(c.input));\n },\n '-notrack': function notrack() {}\n });\n\n // Last command handler reports that input is unknown\n cmd.command({\n canHandle: function canHandle() {\n return true;\n },\n handle: function handle(c) {\n return appState.addCommandResult(new _UnknownCommandResult2.default(c.input));\n }\n });\n\n cmd.onError(function (input, err) {\n return appState.addCommandResult(new _ErrorResult2.default(input, err));\n });\n }\n};\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _InputBox = __webpack_require__(52);\n\nvar _InputBox2 = _interopRequireDefault(_InputBox);\n\nvar _DisplayResultView = __webpack_require__(187);\n\nvar _DisplayResultView2 = _interopRequireDefault(_DisplayResultView);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar AppRoot = function (_React$Component) {\n _inherits(AppRoot, _React$Component);\n\n function AppRoot() {\n _classCallCheck(this, AppRoot);\n\n return _possibleConstructorReturn(this, (AppRoot.__proto__ || Object.getPrototypeOf(AppRoot)).apply(this, arguments));\n }\n\n _createClass(AppRoot, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this.refresh();\n this.props.appState.onChange(function () {\n return _this2.refresh();\n });\n }\n }, {\n key: 'refresh',\n value: function refresh() {\n this.setState(this.props.appState);\n }\n }, {\n key: 'getIndicator',\n value: function getIndicator(value) {\n return value === true ? 'on' : 'off';\n }\n }, {\n key: 'getResultViews',\n value: function getResultViews() {\n var _this3 = this;\n\n var results = this.state.commandResults.map(function (r, i) {\n return _react2.default.createElement(_DisplayResultView2.default, { key: i, content: r, input: r.input, inputHash: r.inputHash, appState: _this3.props.appState });\n });\n return results;\n }\n }, {\n key: 'toggleEmphasizeBytes',\n value: function toggleEmphasizeBytes() {\n console.log(this.props.appState);\n this.props.appState.toggleEmphasizeBytes();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n return _react2.default.createElement(\n 'div',\n { className: 'app-root ' + this.state.uiTheme },\n _react2.default.createElement(\n 'div',\n { className: 'header' },\n _react2.default.createElement(\n 'h1',\n null,\n 'Bitwise',\n _react2.default.createElement(\n 'span',\n { style: { color: \"#c5c5c5\" } },\n 'Cmd'\n )\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'top-links' },\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'a',\n { href: 'https://github.com/BorisLevitskiy/BitwiseCmd' },\n _react2.default.createElement(\n 'i',\n { className: 'icon github' },\n '\\xA0'\n ),\n _react2.default.createElement(\n 'span',\n { className: 'link-text' },\n 'Project on GitHub'\n )\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'a',\n { href: 'https://twitter.com/BitwiseCmd' },\n _react2.default.createElement(\n 'i',\n { className: 'icon twitter' },\n '\\xA0'\n ),\n _react2.default.createElement(\n 'span',\n { className: 'link-text' },\n 'Twitter'\n )\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'a',\n { href: 'mailto:bitwisecmd@gmail.com?subject=Feedback' },\n _react2.default.createElement(\n 'i',\n { className: 'icon feedback' },\n '\\xA0'\n ),\n _react2.default.createElement(\n 'span',\n { className: 'link-text' },\n 'Send Feedback'\n )\n )\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'expressionInput-container' },\n _react2.default.createElement(_InputBox2.default, null),\n _react2.default.createElement(\n 'span',\n { className: 'configPnl' },\n _react2.default.createElement(\n 'span',\n { id: 'emphasizeBytes', 'data-cmd': 'em', className: \"indicator \" + this.getIndicator(this.state.emphasizeBytes), title: 'Toggle Emphasize Bytes', onClick: function onClick(e) {\n return _this4.toggleEmphasizeBytes();\n } },\n '[em]'\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { id: 'output' },\n this.getResultViews()\n )\n );\n }\n }]);\n\n return AppRoot;\n}(_react2.default.Component);\n\nexports.default = AppRoot;\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n encodeHash: function encodeHash(string) {\n return encodeURI(string.trim().replace(/\\s/g, ','));\n },\n decodeHash: function decodeHash(hashValue) {\n return decodeURI(hashValue).replace(/^\\#/, '').replace(/,/g, ' ');\n },\n getArgs: function getArgs(hashValue) {\n\n var decodedHash = this.decodeHash(hashValue),\n args = { commands: [] };\n\n splitHashList(decodedHash).forEach(function (value) {\n // Support for -debur or -notrack properties\n if (/^\\-[a-zA-Z]+$/.test(value)) {\n args[value.substr(1)] = true;\n return;\n }\n\n args.commands.push(value);\n });\n\n return Object.freeze(args);\n }\n};\n\n\nfunction splitHashList(str) {\n var values = [];\n\n if (str.indexOf('||')) {\n str.split('||').forEach(function (v) {\n if (v.length > 0) {\n values.push(v);\n }\n });\n } else {\n values.push(str);\n }\n\n return values;\n}\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n\n\nvar camelize = __webpack_require__(96);\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar isTextNode = __webpack_require__(106);\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' || typeof obj === 'function')) ? false ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? false ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? false ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? false ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar createArrayFromMixed = __webpack_require__(99);\nvar getMarkupWrap = __webpack_require__(101);\nvar invariant = __webpack_require__(0);\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? false ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? false ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? false ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n\n\nvar hyphenate = __webpack_require__(103);\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar isNode = __webpack_require__(105);\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @typechecks static-only\n */\n\n\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nif (false) {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (false) {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error === 'undefined' ? 'undefined' : _typeof(error));\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar emptyFunction = __webpack_require__(7);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar ReactPropTypesSecret = __webpack_require__(110);\nvar checkPropTypes = __webpack_require__(108);\n\nmodule.exports = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (false) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(false, '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');\n } else if (false) {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n warning(false, '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.', propFullName, componentName);\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n false ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n false ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(false, 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' + 'received %s at index %s.', getPostfixForTypeWarning(checker), i);\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue)) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar focusNode = __webpack_require__(54);\n\nvar AutoFocusUtils = {\n focusDOMComponent: function focusDOMComponent() {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar EventPropagators = __webpack_require__(22);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar FallbackCompositionState = __webpack_require__(119);\nvar SyntheticCompositionEvent = __webpack_require__(156);\nvar SyntheticInputEvent = __webpack_require__(159);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return (typeof opera === 'undefined' ? 'undefined' : _typeof(opera)) === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if ((typeof detail === 'undefined' ? 'undefined' : _typeof(detail)) === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar CSSProperty = __webpack_require__(58);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar camelizeStyleName = __webpack_require__(97);\nvar dangerousStyleValue = __webpack_require__(165);\nvar hyphenateStyleName = __webpack_require__(104);\nvar memoizeStringOnly = __webpack_require__(107);\nvar warning = __webpack_require__(1);\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (false) {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function warnHyphenatedStyleName(name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function warnBadVendoredStyleName(name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function warnStyleValueWithSemicolon(name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function warnStyleValueIsNaN(name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function checkRenderMessage(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function warnValidStyle(name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function createMarkupForStyles(styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (false) {\n warnValidStyle(styleName, styleValue, component);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function setValueForStyles(node, styles, component) {\n if (false) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (false) {\n warnValidStyle(styleName, styles[styleName], component);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(21);\nvar EventPropagators = __webpack_require__(22);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\nvar SyntheticEvent = __webpack_require__(10);\n\nvar getEventTarget = __webpack_require__(43);\nvar isEventSupported = __webpack_require__(44);\nvar isTextInputElement = __webpack_require__(75);\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n}\n\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function get() {\n return activeElementValueProp.get.call(this);\n },\n set: function set(val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\n // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n Object.defineProperty(activeElement, 'value', newValueProp);\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === 'topInput') {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === 'topClick') {\n return targetInst;\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar DOMLazyTree = __webpack_require__(13);\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar createNodesFromMarkup = __webpack_require__(100);\nvar emptyFunction = __webpack_require__(7);\nvar invariant = __webpack_require__(0);\n\nvar Danger = {\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function dangerouslyReplaceNodeWithMarkup(oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n\n};\n\nmodule.exports = Danger;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(22);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar SyntheticMouseEvent = __webpack_require__(26);\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(12);\n\nvar getTextContentAccessor = __webpack_require__(73);\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function destructor() {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function getText() {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function getData() {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(14);\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function value(node, _value) {\n if (_value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + _value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + _value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactReconciler = __webpack_require__(15);\n\nvar instantiateReactComponent = __webpack_require__(74);\nvar KeyEscapeUtils = __webpack_require__(35);\nvar shouldUpdateReactComponent = __webpack_require__(45);\nvar traverseAllChildren = __webpack_require__(77);\nvar warning = __webpack_require__(1);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && \"production\" === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = __webpack_require__(78);\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (false) {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function instantiateChildren(nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n ) {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (false) {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n ) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function unmountChildren(renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(56)))\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMChildrenOperations = __webpack_require__(31);\nvar ReactDOMIDOperations = __webpack_require__(129);\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar React = __webpack_require__(16);\nvar ReactComponentEnvironment = __webpack_require__(37);\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactErrorUtils = __webpack_require__(38);\nvar ReactInstanceMap = __webpack_require__(23);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactNodeTypes = __webpack_require__(68);\nvar ReactReconciler = __webpack_require__(15);\n\nif (false) {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = __webpack_require__(20);\nvar invariant = __webpack_require__(0);\nvar shallowEqual = __webpack_require__(30);\nvar shouldUpdateReactComponent = __webpack_require__(45);\nvar warning = __webpack_require__(1);\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function construct(element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (false) {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function mountComponent(transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? false ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (false) {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (false) {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !((typeof initialState === 'undefined' ? 'undefined' : _typeof(initialState)) === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (false) {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function _constructComponent(doConstruct, publicProps, publicContext, updateQueue) {\n if (false) {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function _constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (false) {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (false) {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (false) {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (false) {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function getHostNode() {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function unmountComponent(safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function _maskContext(context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function _processContext(context) {\n var maskedContext = this._maskContext(context);\n if (false) {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function _processChildContext(currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (false) {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(_typeof(Component.childContextTypes) === 'object') ? false ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (false) {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? false ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function _checkContextTypes(typeSpecs, values, location) {\n if (false) {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function receiveComponent(nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function performUpdateIfNecessary(transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function updateComponent(transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? false ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (false) {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function _processPendingState(props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function _performComponentUpdate(nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (false) {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (false) {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function _updateRenderedComponent(transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (false) {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (false) {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function _replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function _renderValidatedComponentWithoutOwnerOrContext() {\n var inst = this._instance;\n var renderedElement;\n\n if (false) {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function _renderValidatedComponent() {\n var renderedElement;\n if (\"production\" !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? false ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function attachRef(ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? false ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (false) {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function detachRef(ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function getName() {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function getPublicInstance() {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n\n\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDefaultInjection = __webpack_require__(137);\nvar ReactMount = __webpack_require__(67);\nvar ReactReconciler = __webpack_require__(15);\nvar ReactUpdates = __webpack_require__(9);\nvar ReactVersion = __webpack_require__(150);\n\nvar findDOMNode = __webpack_require__(166);\nvar getHostComponentFromComposite = __webpack_require__(72);\nvar renderSubtreeIntoContainer = __webpack_require__(173);\nvar warning = __webpack_require__(1);\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function getNodeFromInstance(inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (false) {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.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;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (false) {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar AutoFocusUtils = __webpack_require__(112);\nvar CSSPropertyOperations = __webpack_require__(114);\nvar DOMLazyTree = __webpack_require__(13);\nvar DOMNamespaces = __webpack_require__(32);\nvar DOMProperty = __webpack_require__(14);\nvar DOMPropertyOperations = __webpack_require__(60);\nvar EventPluginHub = __webpack_require__(21);\nvar EventPluginRegistry = __webpack_require__(33);\nvar ReactBrowserEventEmitter = __webpack_require__(25);\nvar ReactDOMComponentFlags = __webpack_require__(61);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMInput = __webpack_require__(130);\nvar ReactDOMOption = __webpack_require__(131);\nvar ReactDOMSelect = __webpack_require__(62);\nvar ReactDOMTextarea = __webpack_require__(134);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactMultiChild = __webpack_require__(143);\nvar ReactServerRenderingTransaction = __webpack_require__(148);\n\nvar emptyFunction = __webpack_require__(7);\nvar escapeTextContentForBrowser = __webpack_require__(28);\nvar invariant = __webpack_require__(0);\nvar isEventSupported = __webpack_require__(44);\nvar shallowEqual = __webpack_require__(30);\nvar validateDOMNesting = __webpack_require__(46);\nvar warning = __webpack_require__(1);\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { 'string': true, 'number': true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n false ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? false ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(_typeof(props.dangerouslySetInnerHTML) === 'object' && HTML in props.dangerouslySetInnerHTML) ? false ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || _typeof(props.style) === 'object') ? false ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (false) {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (false) {\n setAndValidateContentChildDev = function setAndValidateContentChildDev(content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? false ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? false ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n};\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? false ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (false) {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function mountComponent(transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (false) {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function _createOpenTagMarkupAndPutListeners(transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (false) {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function _createContentMarkup(transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[_typeof(props.children)] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (false) {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function _createInitialChildren(transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[_typeof(props.children)] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (false) {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function receiveComponent(nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function updateComponent(transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function _updateDOMProperties(lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (false) {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function _updateDOMChildren(lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[_typeof(lastProps.children)] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[_typeof(nextProps.children)] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (false) {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (false) {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (false) {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (false) {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function getHostNode() {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function unmountComponent(safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n true ? false ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (false) {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function getPublicInstance() {\n return getNode(this);\n }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar validateDOMNesting = __webpack_require__(46);\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (false) {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar DOMLazyTree = __webpack_require__(13);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar ReactDOMEmptyComponent = function ReactDOMEmptyComponent(instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function mountComponent(transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function receiveComponent() {},\n getHostNode: function getHostNode() {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function unmountComponent() {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMChildrenOperations = __webpack_require__(31);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function dangerouslyProcessChildrenUpdates(parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar DOMPropertyOperations = __webpack_require__(60);\nvar LinkedValueUtils = __webpack_require__(36);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function getHostProps(inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function mountWrapper(inst, props) {\n if (false) {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function updateWrapper(inst) {\n var props = inst._currentElement.props;\n\n if (false) {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n // eslint-disable-next-line\n if (value != valueAsNumber) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n // eslint-disable-next-line\n } else if (value != node.value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function postMountWrapper(inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? false ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar React = __webpack_require__(16);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMSelect = __webpack_require__(62);\n\nvar warning = __webpack_require__(1);\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n false ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function mountWrapper(inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function postMountWrapper(inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function getHostProps(inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\nvar getNodeForCharacterOffset = __webpack_require__(170);\nvar getTextContentAccessor = __webpack_require__(73);\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar DOMChildrenOperations = __webpack_require__(31);\nvar DOMLazyTree = __webpack_require__(13);\nvar ReactDOMComponentTree = __webpack_require__(4);\n\nvar escapeTextContentForBrowser = __webpack_require__(28);\nvar invariant = __webpack_require__(0);\nvar validateDOMNesting = __webpack_require__(46);\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function ReactDOMTextComponent(text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function mountComponent(transaction, hostParent, hostContainerInfo, context) {\n if (false) {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function receiveComponent(nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function getHostNode() {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? false ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function unmountComponent() {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2),\n _assign = __webpack_require__(3);\n\nvar LinkedValueUtils = __webpack_require__(36);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function getHostProps(inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function mountWrapper(inst, props) {\n if (false) {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? false ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? false ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function updateWrapper(inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function postMountWrapper(inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? false ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactUpdates = __webpack_require__(9);\nvar Transaction = __webpack_require__(27);\n\nvar emptyFunction = __webpack_require__(7);\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function close() {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function batchedUpdates(callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ARIADOMPropertyConfig = __webpack_require__(111);\nvar BeforeInputEventPlugin = __webpack_require__(113);\nvar ChangeEventPlugin = __webpack_require__(115);\nvar DefaultEventPluginOrder = __webpack_require__(117);\nvar EnterLeaveEventPlugin = __webpack_require__(118);\nvar HTMLDOMPropertyConfig = __webpack_require__(120);\nvar ReactComponentBrowserEnvironment = __webpack_require__(122);\nvar ReactDOMComponent = __webpack_require__(125);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactDOMEmptyComponent = __webpack_require__(127);\nvar ReactDOMTreeTraversal = __webpack_require__(135);\nvar ReactDOMTextComponent = __webpack_require__(133);\nvar ReactDefaultBatchingStrategy = __webpack_require__(136);\nvar ReactEventListener = __webpack_require__(140);\nvar ReactInjection = __webpack_require__(141);\nvar ReactReconcileTransaction = __webpack_require__(146);\nvar SVGDOMPropertyConfig = __webpack_require__(151);\nvar SelectEventPlugin = __webpack_require__(152);\nvar SimpleEventPlugin = __webpack_require__(153);\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPluginHub = __webpack_require__(21);\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function handleTopLevel(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar EventListener = __webpack_require__(53);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar PooledClass = __webpack_require__(12);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactUpdates = __webpack_require__(9);\n\nvar getEventTarget = __webpack_require__(43);\nvar getUnboundedScrollPosition = __webpack_require__(102);\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function destructor() {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function setHandleTopLevel(handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function setEnabled(enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function isEnabled() {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function trapBubbledEvent(topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function trapCapturedEvent(topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function monitorScrollValue(refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function dispatchEvent(topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMProperty = __webpack_require__(14);\nvar EventPluginHub = __webpack_require__(21);\nvar EventPluginUtils = __webpack_require__(34);\nvar ReactComponentEnvironment = __webpack_require__(37);\nvar ReactEmptyComponent = __webpack_require__(63);\nvar ReactBrowserEventEmitter = __webpack_require__(25);\nvar ReactHostComponent = __webpack_require__(65);\nvar ReactUpdates = __webpack_require__(9);\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar adler32 = __webpack_require__(164);\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function addChecksumToMarkup(markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function canReuseMarkup(markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactComponentEnvironment = __webpack_require__(37);\nvar ReactInstanceMap = __webpack_require__(23);\nvar ReactInstrumentation = __webpack_require__(8);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactReconciler = __webpack_require__(15);\nvar ReactChildReconciler = __webpack_require__(121);\n\nvar emptyFunction = __webpack_require__(7);\nvar flattenChildren = __webpack_require__(167);\nvar invariant = __webpack_require__(0);\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (false) {\n var getDebugID = function getDebugID(inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function setChildrenForInstrumentation(children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n _reconcilerInstantiateChildren: function _reconcilerInstantiateChildren(nestedChildren, transaction, context) {\n if (false) {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function _reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (false) {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function mountChildren(nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (false) {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (false) {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function updateTextContent(nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function updateMarkup(nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function updateChildren(nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function _updateChildren(nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (false) {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function unmountChildren(safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function moveChild(child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function createChild(child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function removeChild(child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function _mountChildAtIndex(child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function _unmountChild(child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function addComponentAsRefTo(component, ref, owner) {\n !isValidOwner(owner) ? false ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function removeComponentAsRefFrom(component, ref, owner) {\n !isValidOwner(owner) ? false ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar CallbackQueue = __webpack_require__(59);\nvar PooledClass = __webpack_require__(12);\nvar ReactBrowserEventEmitter = __webpack_require__(25);\nvar ReactInputSelection = __webpack_require__(66);\nvar ReactInstrumentation = __webpack_require__(8);\nvar Transaction = __webpack_require__(27);\nvar ReactUpdateQueue = __webpack_require__(39);\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function initialize() {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function close(previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function initialize() {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function close() {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (false) {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function getReactMountReady() {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function getUpdateQueue() {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function checkpoint() {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function rollback(checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function destructor() {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar ReactOwner = __webpack_require__(144);\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || (typeof element === 'undefined' ? 'undefined' : _typeof(element)) !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && (typeof prevElement === 'undefined' ? 'undefined' : _typeof(prevElement)) === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && (typeof nextElement === 'undefined' ? 'undefined' : _typeof(nextElement)) === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || (typeof element === 'undefined' ? 'undefined' : _typeof(element)) !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar PooledClass = __webpack_require__(12);\nvar Transaction = __webpack_require__(27);\nvar ReactInstrumentation = __webpack_require__(8);\nvar ReactServerUpdateQueue = __webpack_require__(149);\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (false) {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function enqueue() {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function getReactMountReady() {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function getUpdateQueue() {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function destructor() {},\n\n checkpoint: function checkpoint() {},\n\n rollback: function rollback() {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar ReactUpdateQueue = __webpack_require__(39);\n\nvar warning = __webpack_require__(1);\n\nfunction warnNoop(publicInstance, callerName) {\n if (false) {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nmodule.exports = '15.5.4';\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar EventPropagators = __webpack_require__(22);\nvar ExecutionEnvironment = __webpack_require__(5);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInputSelection = __webpack_require__(66);\nvar SyntheticEvent = __webpack_require__(10);\n\nvar getActiveElement = __webpack_require__(55);\nvar isTextInputElement = __webpack_require__(75);\nvar shallowEqual = __webpack_require__(30);\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function didPutListener(inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar EventListener = __webpack_require__(53);\nvar EventPropagators = __webpack_require__(22);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar SyntheticAnimationEvent = __webpack_require__(154);\nvar SyntheticClipboardEvent = __webpack_require__(155);\nvar SyntheticEvent = __webpack_require__(10);\nvar SyntheticFocusEvent = __webpack_require__(158);\nvar SyntheticKeyboardEvent = __webpack_require__(160);\nvar SyntheticMouseEvent = __webpack_require__(26);\nvar SyntheticDragEvent = __webpack_require__(157);\nvar SyntheticTouchEvent = __webpack_require__(161);\nvar SyntheticTransitionEvent = __webpack_require__(162);\nvar SyntheticUIEvent = __webpack_require__(24);\nvar SyntheticWheelEvent = __webpack_require__(163);\n\nvar emptyFunction = __webpack_require__(7);\nvar getEventCharCode = __webpack_require__(41);\nvar invariant = __webpack_require__(0);\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? false ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function didPutListener(inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function willDeleteListener(inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function clipboardData(event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticMouseEvent = __webpack_require__(26);\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(24);\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(24);\n\nvar getEventCharCode = __webpack_require__(41);\nvar getEventKey = __webpack_require__(168);\nvar getEventModifierState = __webpack_require__(42);\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function charCode(event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function keyCode(event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function which(event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticUIEvent = __webpack_require__(24);\n\nvar getEventModifierState = __webpack_require__(42);\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticEvent = __webpack_require__(10);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar SyntheticMouseEvent = __webpack_require__(26);\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function deltaX(event) {\n return 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function deltaY(event) {\n return 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar CSSProperty = __webpack_require__(58);\nvar warning = __webpack_require__(1);\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (false) {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(2);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar ReactDOMComponentTree = __webpack_require__(4);\nvar ReactInstanceMap = __webpack_require__(23);\n\nvar getHostComponentFromComposite = __webpack_require__(72);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + '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.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n true ? false ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n true ? false ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar KeyEscapeUtils = __webpack_require__(35);\nvar traverseAllChildren = __webpack_require__(77);\nvar warning = __webpack_require__(1);\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && \"production\" === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = __webpack_require__(78);\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && (typeof traverseContext === 'undefined' ? 'undefined' : _typeof(traverseContext)) === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (false) {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (false) {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(56)))\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar getEventCharCode = __webpack_require__(41);\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ExecutionEnvironment = __webpack_require__(5);\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar escapeTextContentForBrowser = __webpack_require__(28);\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactMount = __webpack_require__(67);\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function oneArgumentPooler(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function twoArgumentPooler(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function threeArgumentPooler(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function fourArgumentPooler(a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function standardReleaser(instance) {\n var Klass = this;\n !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function addPoolingTo(CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar PooledClass = __webpack_require__(175);\nvar ReactElement = __webpack_require__(17);\n\nvar emptyFunction = __webpack_require__(7);\nvar traverseAllChildren = __webpack_require__(186);\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(18),\n _assign = __webpack_require__(3);\n\nvar ReactComponent = __webpack_require__(47);\nvar ReactElement = __webpack_require__(17);\nvar ReactPropTypeLocationNames = __webpack_require__(179);\nvar ReactNoopUpdateQueue = __webpack_require__(48);\n\nvar emptyObject = __webpack_require__(20);\nvar invariant = __webpack_require__(0);\nvar warning = __webpack_require__(1);\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function displayName(Constructor, _displayName) {\n Constructor.displayName = _displayName;\n },\n mixins: function mixins(Constructor, _mixins) {\n if (_mixins) {\n for (var i = 0; i < _mixins.length; i++) {\n mixSpecIntoComponent(Constructor, _mixins[i]);\n }\n }\n },\n childContextTypes: function childContextTypes(Constructor, _childContextTypes) {\n if (false) {\n validateTypeDef(Constructor, _childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, _childContextTypes);\n },\n contextTypes: function contextTypes(Constructor, _contextTypes) {\n if (false) {\n validateTypeDef(Constructor, _contextTypes, 'context');\n }\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, _contextTypes);\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function getDefaultProps(Constructor, _getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, _getDefaultProps);\n } else {\n Constructor.getDefaultProps = _getDefaultProps;\n }\n },\n propTypes: function propTypes(Constructor, _propTypes) {\n if (false) {\n validateTypeDef(Constructor, _propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, _propTypes);\n },\n statics: function statics(Constructor, _statics) {\n mixStaticSpecIntoComponent(Constructor, _statics);\n },\n autobind: function autobind() {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n false ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === 'OVERRIDE_BASE') ? false ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? false ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (false) {\n var typeofSpec = typeof spec === 'undefined' ? 'undefined' : _typeof(spec);\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n }\n\n return;\n }\n\n !(typeof spec !== 'function') ? false ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n !!ReactElement.isValidElement(spec) ? false ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? false ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (false) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n !!isReserved ? false ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;\n\n var isInherited = name in Constructor;\n !!isInherited ? false ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && (typeof one === 'undefined' ? 'undefined' : _typeof(one)) === 'object' && (typeof two === 'undefined' ? 'undefined' : _typeof(two)) === 'object') ? false ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? false ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (false) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function replaceState(newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function isMounted() {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function ReactClassComponent() {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\nvar didWarnDeprecated = false;\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function createClass(spec) {\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0;\n didWarnDeprecated = true;\n }\n\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function (props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n !((typeof initialState === 'undefined' ? 'undefined' : _typeof(initialState)) === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (false) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? false ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\n if (false) {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function injectMixin(mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar ReactElement = __webpack_require__(17);\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (false) {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar ReactPropTypeLocationNames = {};\n\nif (false) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _require = __webpack_require__(17),\n isValidElement = _require.isValidElement;\n\nvar factory = __webpack_require__(57);\n\nmodule.exports = factory(isValidElement);\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(3);\n\nvar ReactComponent = __webpack_require__(47);\nvar ReactNoopUpdateQueue = __webpack_require__(48);\n\nvar emptyObject = __webpack_require__(20);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nmodule.exports = '15.5.4';\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar ReactElement = __webpack_require__(17);\n\nvar invariant = __webpack_require__(0);\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? false ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(18);\n\nvar ReactCurrentOwner = __webpack_require__(11);\nvar REACT_ELEMENT_TYPE = __webpack_require__(79);\n\nvar getIteratorFn = __webpack_require__(183);\nvar invariant = __webpack_require__(0);\nvar KeyEscapeUtils = __webpack_require__(174);\nvar warning = __webpack_require__(1);\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && (typeof component === 'undefined' ? 'undefined' : _typeof(component)) === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children === 'undefined' ? 'undefined' : _typeof(children);\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (false) {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (false) {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _HelpResult = __webpack_require__(87);\n\nvar _HelpResult2 = _interopRequireDefault(_HelpResult);\n\nvar _AboutResult = __webpack_require__(84);\n\nvar _AboutResult2 = _interopRequireDefault(_AboutResult);\n\nvar _UnknownCommandResult = __webpack_require__(88);\n\nvar _UnknownCommandResult2 = _interopRequireDefault(_UnknownCommandResult);\n\nvar _HelpResultView = __webpack_require__(191);\n\nvar _HelpResultView2 = _interopRequireDefault(_HelpResultView);\n\nvar _AboutResultView = __webpack_require__(188);\n\nvar _AboutResultView2 = _interopRequireDefault(_AboutResultView);\n\nvar _ExpressionResult = __webpack_require__(86);\n\nvar _ExpressionResult2 = _interopRequireDefault(_ExpressionResult);\n\nvar _ExpressionResultView = __webpack_require__(190);\n\nvar _ExpressionResultView2 = _interopRequireDefault(_ExpressionResultView);\n\nvar _WhatsnewResult = __webpack_require__(89);\n\nvar _WhatsnewResult2 = _interopRequireDefault(_WhatsnewResult);\n\nvar _WhatsnewResultView = __webpack_require__(193);\n\nvar _WhatsnewResultView2 = _interopRequireDefault(_WhatsnewResultView);\n\nvar _ErrorResult = __webpack_require__(85);\n\nvar _ErrorResult2 = _interopRequireDefault(_ErrorResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DisplayResult = function (_React$Component) {\n _inherits(DisplayResult, _React$Component);\n\n function DisplayResult() {\n _classCallCheck(this, DisplayResult);\n\n return _possibleConstructorReturn(this, (DisplayResult.__proto__ || Object.getPrototypeOf(DisplayResult)).apply(this, arguments));\n }\n\n _createClass(DisplayResult, [{\n key: 'render',\n value: function render() {\n\n if (this.props.content instanceof _UnknownCommandResult2.default) {\n return this.renderUnknown();\n }\n\n if (this.props.content instanceof _ErrorResult2.default) {\n return this.renderError(this.props.content.error.message);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'result' },\n _react2.default.createElement(\n 'div',\n { className: 'input mono' },\n _react2.default.createElement(\n 'span',\n { className: 'cur' },\n '>'\n ),\n this.props.content.input,\n _react2.default.createElement(\n 'a',\n { className: 'hashLink', title: 'Link for this expression', href: window.location.pathname + '#' + this.props.inputHash },\n '#'\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'content' },\n this.findResultComponent(this.props.content)\n )\n );\n }\n }, {\n key: 'renderUnknown',\n value: function renderUnknown() {\n return _react2.default.createElement(\n 'div',\n { className: 'result' },\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n '\\xAF\\\\_(\\u30C4)_/\\xAF Sorry, i don\\u2032t know what ',\n _react2.default.createElement(\n 'strong',\n null,\n this.props.input\n ),\n ' is'\n )\n );\n }\n }, {\n key: 'renderError',\n value: function renderError(message) {\n return _react2.default.createElement(\n 'div',\n { className: 'result' },\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n '(X_X) Error occurred: ',\n _react2.default.createElement(\n 'strong',\n null,\n message\n )\n )\n );\n }\n }, {\n key: 'findResultComponent',\n value: function findResultComponent(result) {\n if (result instanceof _HelpResult2.default) {\n return _react2.default.createElement(_HelpResultView2.default, { content: result });\n }\n\n if (result instanceof _AboutResult2.default) {\n return _react2.default.createElement(_AboutResultView2.default, null);\n }\n\n if (result instanceof _ExpressionResult2.default) {\n return _react2.default.createElement(_ExpressionResultView2.default, { result: result, emphasizeBytes: this.props.appState.emphasizeBytes });\n }\n\n if (result instanceof _WhatsnewResult2.default) {\n return _react2.default.createElement(_WhatsnewResultView2.default, null);\n }\n\n console.warn('Unknown result:', result);\n return _react2.default.createElement(\n 'span',\n null,\n 'Unknown result: ',\n typeof result === 'undefined' ? 'undefined' : _typeof(result)\n );\n }\n }]);\n\n return DisplayResult;\n}(_react2.default.Component);\n\nexports.default = DisplayResult;\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar AboutResultView = function (_React$Component) {\n _inherits(AboutResultView, _React$Component);\n\n function AboutResultView() {\n _classCallCheck(this, AboutResultView);\n\n return _possibleConstructorReturn(this, (AboutResultView.__proto__ || Object.getPrototypeOf(AboutResultView)).apply(this, arguments));\n }\n\n _createClass(AboutResultView, [{\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { className: \"aboutTpl\" },\n _react2.default.createElement(\n \"p\",\n null,\n \" Created by \",\n _react2.default.createElement(\n \"a\",\n { href: \"http://boryslevytskyi.github.io/\" },\n \"Borys Levytskyi\"\n ),\n \". Please give it a like if BitwiseCmd has helped you in your work.\"\n ),\n _react2.default.createElement(\n \"p\",\n null,\n \"If you have an idea, suggestion or you've spotted a bug here, please send it to \",\n _react2.default.createElement(\n \"a\",\n { href: \"mailto:bitwisecmd@gmail.com?subject=Feedback\" },\n \"bitwisecmd@gmail.com\"\n ),\n \" or tweet on \",\n _react2.default.createElement(\n \"a\",\n { href: \"http://twitter.com/BitwiseCmd\" },\n \"@BitwiseCmd\"\n ),\n \". Your feedback is greatly appreciated.\"\n ),\n _react2.default.createElement(\n \"p\",\n null,\n _react2.default.createElement(\n \"a\",\n { href: \"https://github.com/BorisLevitskiy/BitwiseCmd\" },\n \"Project on \",\n _react2.default.createElement(\n \"strong\",\n null,\n \"GitHub\"\n )\n )\n )\n );\n }\n }]);\n\n return AboutResultView;\n}(_react2.default.Component);\n\nexports.default = AboutResultView;\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _expression = __webpack_require__(49);\n\nvar expression = _interopRequireWildcard(_expression);\n\nvar _formatter = __webpack_require__(83);\n\nvar _formatter2 = _interopRequireDefault(_formatter);\n\nvar _BinaryStringView = __webpack_require__(81);\n\nvar _BinaryStringView2 = _interopRequireDefault(_BinaryStringView);\n\nvar _BitwiseExpressionViewModel = __webpack_require__(82);\n\nvar _BitwiseExpressionViewModel2 = _interopRequireDefault(_BitwiseExpressionViewModel);\n\nvar _loglevel = __webpack_require__(50);\n\nvar _loglevel2 = _interopRequireDefault(_loglevel);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BitwiseOperationEpxressionView = function (_React$Component) {\n _inherits(BitwiseOperationEpxressionView, _React$Component);\n\n function BitwiseOperationEpxressionView() {\n _classCallCheck(this, BitwiseOperationEpxressionView);\n\n return _possibleConstructorReturn(this, (BitwiseOperationEpxressionView.__proto__ || Object.getPrototypeOf(BitwiseOperationEpxressionView)).apply(this, arguments));\n }\n\n _createClass(BitwiseOperationEpxressionView, [{\n key: 'render',\n value: function render() {\n var rows = this.getRows();\n if (!rows) {\n return null;\n }\n\n return _react2.default.createElement(\n 'table',\n { className: 'expression' },\n _react2.default.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n }, {\n key: 'getRows',\n value: function getRows() {\n var _this2 = this;\n\n var expr = this.props.expression;\n\n if (expr instanceof expression.SingleOperandExpression) {\n var m = _BitwiseExpressionViewModel2.default.buildNot(expr, { emphasizeBytes: this.props.emphasizeBytes });\n _loglevel2.default.info('Render model', m);\n return m.items.map(function (itm, i) {\n return _react2.default.createElement(ExpressionRow, _extends({ key: i }, itm, { emphasizeBytes: _this2.props.emphasizeBytes, maxNumberOfBits: m.maxNumberOfBits }));\n });\n }\n\n if (expr instanceof expression.MultipleOperandsExpression) {\n var _m = _BitwiseExpressionViewModel2.default.buildMultiple(expr, { emphasizeBytes: this.props.emphasizeBytes });\n _loglevel2.default.info('Render model', _m);\n return _m.items.map(function (itm, i) {\n return _react2.default.createElement(ExpressionRow, _extends({ key: i }, itm, { emphasizeBytes: _this2.props.emphasizeBytes, maxNumberOfBits: _m.maxNumberOfBits }));\n });\n }\n\n return null;\n }\n }]);\n\n return BitwiseOperationEpxressionView;\n}(_react2.default.Component);\n\nexports.default = BitwiseOperationEpxressionView;\n\nvar ExpressionRow = function (_React$Component2) {\n _inherits(ExpressionRow, _React$Component2);\n\n function ExpressionRow() {\n _classCallCheck(this, ExpressionRow);\n\n return _possibleConstructorReturn(this, (ExpressionRow.__proto__ || Object.getPrototypeOf(ExpressionRow)).apply(this, arguments));\n }\n\n _createClass(ExpressionRow, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n sign = _props.sign,\n label = _props.label,\n bin = _props.bin,\n other = _props.other,\n css = _props.css,\n maxNumberOfBits = _props.maxNumberOfBits,\n emphasizeBytes = _props.emphasizeBytes;\n\n\n return _react2.default.createElement(\n 'tr',\n { className: css },\n _react2.default.createElement(\n 'td',\n { className: 'sign' },\n sign\n ),\n _react2.default.createElement(\n 'td',\n { className: 'label' },\n label\n ),\n _react2.default.createElement(\n 'td',\n { className: 'bin' },\n _react2.default.createElement(_BinaryStringView2.default, { emphasizeBytes: emphasizeBytes, binaryString: _formatter2.default.padLeft(bin, maxNumberOfBits, '0'), allowFlipBits: false })\n ),\n _react2.default.createElement(\n 'td',\n { className: 'other' },\n other\n )\n );\n }\n }]);\n\n return ExpressionRow;\n}(_react2.default.Component);\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _ListOfNumbersExpressionView = __webpack_require__(192);\n\nvar _ListOfNumbersExpressionView2 = _interopRequireDefault(_ListOfNumbersExpressionView);\n\nvar _BitwiseOperationExpressionView = __webpack_require__(189);\n\nvar _BitwiseOperationExpressionView2 = _interopRequireDefault(_BitwiseOperationExpressionView);\n\nvar _expression = __webpack_require__(49);\n\nvar expression = _interopRequireWildcard(_expression);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ExpressionResultView = function (_React$Component) {\n _inherits(ExpressionResultView, _React$Component);\n\n function ExpressionResultView() {\n _classCallCheck(this, ExpressionResultView);\n\n return _possibleConstructorReturn(this, (ExpressionResultView.__proto__ || Object.getPrototypeOf(ExpressionResultView)).apply(this, arguments));\n }\n\n _createClass(ExpressionResultView, [{\n key: 'render',\n value: function render() {\n var expr = this.props.result.expression;\n\n if (expr instanceof expression.ListOfNumbersExpression) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(_ListOfNumbersExpressionView2.default, { expression: expr, emphasizeBytes: this.props.emphasizeBytes })\n );\n }\n if (expr instanceof expression.SingleOperandExpression || expr instanceof expression.MultipleOperandsExpression) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(_BitwiseOperationExpressionView2.default, { expression: expr, emphasizeBytes: this.props.emphasizeBytes })\n );\n }\n\n console.log('[BitwiseOperationExpressionView] render()', expr);\n\n return _react2.default.createElement(\n 'b',\n null,\n 'Expression: ',\n expr.expressionString\n );\n }\n }]);\n\n return ExpressionResultView;\n}(_react2.default.Component);\n\nexports.default = ExpressionResultView;\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar HelpResultView = function (_React$Component) {\n _inherits(HelpResultView, _React$Component);\n\n function HelpResultView() {\n _classCallCheck(this, HelpResultView);\n\n return _possibleConstructorReturn(this, (HelpResultView.__proto__ || Object.getPrototypeOf(HelpResultView)).apply(this, arguments));\n }\n\n _createClass(HelpResultView, [{\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { className: \"help helpResultTpl\" },\n _react2.default.createElement(\n \"div\",\n { style: { overflow: \"hidden\" } },\n _react2.default.createElement(\n \"div\",\n { style: { float: \"left\", \"marginRight\": \"20px\" } },\n _react2.default.createElement(\n \"div\",\n { className: \"section\" },\n _react2.default.createElement(\n \"strong\",\n null,\n \"Supported Commands\"\n ),\n _react2.default.createElement(\n \"ul\",\n null,\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"23 ^ 34\"\n ),\n \" \\u2014 type bitwise expression to see result in binary (only positive integers are supported now)\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"23 34\"\n ),\n \" \\u2014 type one or more numbers to see their binary representations\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"clear\"\n ),\n \" \\u2014 clear output pane\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"help\"\n ),\n \" \\u2014 display this help\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"whatsnew\"\n ),\n \" \\u2014 display changelog\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"em\"\n ),\n \" \\u2014 turn On/Off Emphasize Bytes\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"dark\"\n ),\n \" \\u2014 set Dark theme\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"light\"\n ),\n \" \\u2014 set Light theme\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"about\"\n ),\n \" \\u2014 about the app\"\n )\n )\n )\n ),\n _react2.default.createElement(\n \"div\",\n { style: { \"float\": \"left\" } },\n _react2.default.createElement(\n \"div\",\n { className: \"section\" },\n _react2.default.createElement(\n \"strong\",\n null,\n \"Supported Bitwise Operations\"\n ),\n _react2.default.createElement(\"br\", null),\n _react2.default.createElement(\n \"small\",\n null,\n _react2.default.createElement(\n \"a\",\n { href: \"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators\" },\n \"as implemented in JavaScript engine\"\n )\n ),\n _react2.default.createElement(\n \"ul\",\n null,\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"&\"\n ),\n \" \\u2014 bitwise AND\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"|\"\n ),\n \" \\u2014 bitwise inclusive OR\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"^\"\n ),\n \" \\u2014 bitwise exclusive XOR\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"~\"\n ),\n \" \\u2014 bitwise NOT\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \"<<\"\n ),\n \" \\u2014 left shift\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \">>\"\n ),\n \" \\u2014 sign propagating right shift\"\n ),\n _react2.default.createElement(\n \"li\",\n null,\n _react2.default.createElement(\n \"code\",\n null,\n \">>>\"\n ),\n \" \\u2014 zero-fill right shift\"\n )\n )\n )\n )\n )\n );\n }\n }]);\n\n return HelpResultView;\n}(_react2.default.Component);\n\nexports.default = HelpResultView;\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _formatter = __webpack_require__(83);\n\nvar _formatter2 = _interopRequireDefault(_formatter);\n\nvar _BinaryStringView = __webpack_require__(81);\n\nvar _BinaryStringView2 = _interopRequireDefault(_BinaryStringView);\n\nvar _BitwiseExpressionViewModel = __webpack_require__(82);\n\nvar _BitwiseExpressionViewModel2 = _interopRequireDefault(_BitwiseExpressionViewModel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListOfNumersExpressionView = function (_React$Component) {\n _inherits(ListOfNumersExpressionView, _React$Component);\n\n function ListOfNumersExpressionView() {\n _classCallCheck(this, ListOfNumersExpressionView);\n\n return _possibleConstructorReturn(this, (ListOfNumersExpressionView.__proto__ || Object.getPrototypeOf(ListOfNumersExpressionView)).apply(this, arguments));\n }\n\n _createClass(ListOfNumersExpressionView, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var expr = this.props.expression;\n var maxBitsLegnth = _BitwiseExpressionViewModel2.default.getNumberOfBits(expr.maxBitsLegnth, this.props.emphasizeBytes);\n var numberRows = expr.numbers.map(function (n, i) {\n return _react2.default.createElement(OperandView, { key: i, operand: n, maxBitsLegnth: maxBitsLegnth, emphasizeBytes: _this2.props.emphasizeBytes });\n });\n return _react2.default.createElement(\n 'table',\n { className: 'expression' },\n _react2.default.createElement(\n 'tbody',\n null,\n numberRows\n )\n );\n }\n }]);\n\n return ListOfNumersExpressionView;\n}(_react2.default.Component);\n\nexports.default = ListOfNumersExpressionView;\n\nvar OperandView = function (_React$Component2) {\n _inherits(OperandView, _React$Component2);\n\n function OperandView() {\n _classCallCheck(this, OperandView);\n\n var _this3 = _possibleConstructorReturn(this, (OperandView.__proto__ || Object.getPrototypeOf(OperandView)).call(this));\n\n _this3.state = { operand: null };\n return _this3;\n }\n\n _createClass(OperandView, [{\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var op = this.props.operand;\n var binaryString = _formatter2.default.padLeft(op.bin, this.props.maxBitsLegnth, '0');\n\n return _react2.default.createElement(\n 'tr',\n { 'data-kind': op.kind },\n _react2.default.createElement(\n 'td',\n { className: 'label' },\n op.input\n ),\n _react2.default.createElement(\n 'td',\n { className: 'bin' },\n _react2.default.createElement(_BinaryStringView2.default, { emphasizeBytes: this.props.emphasizeBytes, binaryString: binaryString, allowFlipBits: true, onFlipBit: function onFlipBit(e) {\n return _this4.flipBit(e);\n } })\n ),\n _react2.default.createElement(\n 'td',\n { className: 'other' },\n op.other\n )\n );\n }\n }, {\n key: 'flipBit',\n value: function flipBit(index) {\n var op = this.props.operand;\n var binaryString = _formatter2.default.padLeft(op.bin, this.props.maxBitsLegnth, '0');\n var arr = binaryString.split('');\n // TODO: this code looks ugly\n arr[index] = arr[index] == '0' ? '1' : '0';\n var bin = arr.join('');\n op.setValue(parseInt(bin, 2));\n\n this.setState({ operand: op });\n }\n }]);\n\n return OperandView;\n}(_react2.default.Component);\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar WhatsnewResultView = function (_React$Component) {\n _inherits(WhatsnewResultView, _React$Component);\n\n function WhatsnewResultView() {\n _classCallCheck(this, WhatsnewResultView);\n\n return _possibleConstructorReturn(this, (WhatsnewResultView.__proto__ || Object.getPrototypeOf(WhatsnewResultView)).apply(this, arguments));\n }\n\n _createClass(WhatsnewResultView, [{\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { \"class\": \"changelog\" },\n _react2.default.createElement(\n \"h3\",\n null,\n \"BitwiseCmd Changelog\"\n ),\n _react2.default.createElement(\n \"div\",\n { \"class\": \"item\" },\n _react2.default.createElement(\n \"p\",\n null,\n _react2.default.createElement(\n \"strong\",\n null,\n \"May 16th, 2017\"\n ),\n \" Complete rewrite using React. Old implementation is available at \",\n _react2.default.createElement(\n \"a\",\n { href: \"http://bitwisecmd.com/old\" },\n \"http://bitwisecmd.com/old\"\n ),\n \".\"\n ),\n _react2.default.createElement(\n \"p\",\n null,\n \"Please let me know if you have problems with this release by \",\n _react2.default.createElement(\n \"a\",\n { href: \"https://github.com/BorysLevytskyi/BitwiseCmd/issues\" },\n \"creating issue\"\n ),\n \" in Github Repo.\"\n )\n )\n );\n }\n }]);\n\n return WhatsnewResultView;\n}(_react2.default.Component);\n\nexports.default = WhatsnewResultView;\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _react = __webpack_require__(6);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(90);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _InputBox = __webpack_require__(52);\n\nvar _InputBox2 = _interopRequireDefault(_InputBox);\n\nvar _AppState = __webpack_require__(91);\n\nvar _AppState2 = _interopRequireDefault(_AppState);\n\nvar _appStateStore = __webpack_require__(92);\n\nvar _appStateStore2 = _interopRequireDefault(_appStateStore);\n\nvar _cmd = __webpack_require__(51);\n\nvar _cmd2 = _interopRequireDefault(_cmd);\n\nvar _commands = __webpack_require__(93);\n\nvar _commands2 = _interopRequireDefault(_commands);\n\nvar _AppRoot = __webpack_require__(94);\n\nvar _AppRoot2 = _interopRequireDefault(_AppRoot);\n\nvar _hash = __webpack_require__(95);\n\nvar _hash2 = _interopRequireDefault(_hash);\n\nvar _loglevel = __webpack_require__(50);\n\nvar _loglevel2 = _interopRequireDefault(_loglevel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nsetupLogger();\n\nvar appState = createAppState();\n\n_commands2.default.initialize(_cmd2.default, appState);\n\nexecuteStartupCommands();\n\nvar root = _react2.default.createElement(_AppRoot2.default, { appState: appState });\n_reactDom2.default.render(root, document.getElementById('root'));\n\n_loglevel2.default.debug(\"started\");\n\nfunction createAppState() {\n var stateData = _appStateStore2.default.getPersistedData();\n var appState = new _AppState2.default(stateData);\n _appStateStore2.default.watch(appState);\n _loglevel2.default.debug(\"appState\", appState);\n return appState;\n}\n\nfunction setupLogger() {\n if (window.location.host != 'bitwisecmd.com' || window.location.hash.indexOf('-debug') > -1) {\n _loglevel2.default.setLevel(\"trace\");\n } else {\n _loglevel2.default.setLevel(\"warn\");\n }\n}\n\nfunction executeStartupCommands() {\n var hashArgs = _hash2.default.getArgs(window.location.hash);\n\n var startupCommands = ['help', '1|2&6', '1<<0x2a', '2 4 8 16 32'];\n\n if (appState.wasOldVersion) {\n startupCommands = [\"whatsnew\"];\n }\n\n if (hashArgs.commands.length > 0) {\n startupCommands = hashArgs.commands;\n }\n\n startupCommands.forEach(_cmd2.default.execute.bind(_cmd2.default));\n}\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = {\n plainObject: function plainObject(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj)) == \"object\" && obj instanceof Object;\n },\n\n aFunction: function aFunction(obj) {\n return typeof obj == \"function\";\n },\n\n string: function string(obj) {\n return typeof obj == \"string\";\n },\n\n regex: function regex(obj) {\n return (typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj)) == \"object\" && this.constructedFrom(RegExp);\n },\n\n constructedFrom: function constructedFrom(obj, ctor) {\n return obj instanceof ctor;\n },\n\n htmlElement: function htmlElement(obj) {\n return obj instanceof HtmlElement;\n },\n\n array: function array(obj) {\n return obj instanceof Array;\n },\n\n number: function number(num) {\n return typeof num == \"number\" && !isNaN(num);\n }\n};\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// bundle.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"http://localhost:8080/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 194);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a163340ecff7d28934d3","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/invariant.js","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n })();\n}\n\nmodule.exports = warning;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/warning.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/reactProdInvariant.js","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/object-assign/index.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMComponentTree.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/ExecutionEnvironment.js","'use strict';\n\nmodule.exports = require('./lib/React');\n\n\n\n// WEBPACK FOOTER //\n// ./~/react/react.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/emptyFunction.js","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactInstrumentation.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactUpdates.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactCurrentOwner.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/PooledClass.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = require('./DOMNamespaces');\nvar setInnerHTML = require('./setInnerHTML');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setTextContent = require('./setTextContent');\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some <object> plugins (like Flash Player) will read\n // <param> nodes immediately upon insertion into the DOM, so <object>\n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMLazyTree.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':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';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMProperty.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactRef = require('./ReactRef');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n ) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactReconciler.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactChildren = require('./ReactChildren');\nvar ReactComponent = require('./ReactComponent');\nvar ReactPureComponent = require('./ReactPureComponent');\nvar ReactClass = require('./ReactClass');\nvar ReactDOMFactories = require('./ReactDOMFactories');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypes = require('./ReactPropTypes');\nvar ReactVersion = require('./ReactVersion');\n\nvar onlyChild = require('./onlyChild');\nvar warning = require('fbjs/lib/warning');\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== 'production') {\n var canDefineProperty = require('./canDefineProperty');\n var ReactElementValidator = require('./ReactElementValidator');\n var didWarnPropTypesDeprecated = false;\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (process.env.NODE_ENV !== 'production') {\n var warned = false;\n __spread = function () {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactComponent,\n PureComponent: ReactPureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function (mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\n// TODO: Fix tests so that this deprecation warning doesn't cause failures.\nif (process.env.NODE_ENV !== 'production') {\n if (canDefineProperty) {\n Object.defineProperty(React, 'PropTypes', {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(didWarnPropTypesDeprecated, 'Accessing PropTypes via the main React package is deprecated. Use ' + 'the prop-types package from npm instead.') : void 0;\n didWarnPropTypesDeprecated = true;\n return ReactPropTypes;\n }\n });\n }\n}\n\nmodule.exports = React;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/React.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar warning = require('fbjs/lib/warning');\nvar canDefineProperty = require('./canDefineProperty');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactElement.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/reactProdInvariant.js","export default class CommandResult {\n constructor(input) {\n this.input = input;\n this.inputHash = this.encodeHash(input);\n }\n\n encodeHash (string) {\n return encodeURI(string.trim().replace(/\\s/g,','));\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/CommandResult.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/emptyObject.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EventPluginHub.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar warning = require('fbjs/lib/warning');\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EventPropagators.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactInstanceMap.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticUIEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactEventEmitterMixin = require('./ReactEventEmitterMixin');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getVendorPrefixedEventName = require('./getVendorPrefixedEventName');\nvar isEventSupported = require('./isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactBrowserEventEmitter.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticMouseEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/Transaction.js","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n'use strict';\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/escapeTextContentForBrowser.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar DOMNamespaces = require('./DOMNamespaces');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/setInnerHTML.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/shallowEqual.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: { toIndex: update.toIndex, content: update.content.toString() }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMChildrenOperations.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMNamespaces.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EventPluginRegistry.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EventPluginUtils.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/KeyEscapeUtils.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\nvar propTypesFactory = require('prop-types/factory');\n\nvar React = require('react/lib/React');\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/LinkedValueUtils.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactComponentEnvironment.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = func.bind(null, a);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactErrorUtils.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%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.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%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`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._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.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactUpdateQueue.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getEventCharCode.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getEventModifierState.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG <use> element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getEventTarget.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/isEventSupported.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/shouldUpdateReactComponent.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['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'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/validateDOMNesting.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactComponent.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%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.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactNoopUpdateQueue.js","var expression = {\n factories:[],\n canParse: function(string) {\n var trimmed = string.replace(/^\\s+|\\s+$/, '');\n var i = this.factories.length-1;\n for(;i>=0;i--) {\n if(this.factories[i].canCreate(trimmed) === true){\n return true;\n }\n }\n return false;\n },\n parse: function(string) {\n var trimmed = string.replace(/^\\s+|\\s+$/, '');\n var i = 0, l = this.factories.length, factory;\n\n for(;i<l;i++) {\n factory = this.factories[i];\n\n if(factory.canCreate(trimmed) == true){\n return factory.create(trimmed);\n }\n }\n\n return null;\n },\n parseOperand: function(input) {\n return new Operand(input);\n },\n createOperand: function(number, kind) {\n return Operand.create(number, kind);\n },\n addFactory: function(factory) {\n this.factories.push(factory);\n }\n };\n\n // List of numbers\n expression.addFactory({\n regex: /^(-?(?:\\d+|0x[\\d,a-f]+)\\s?)+$/,\n canCreate: function(string) {\n return this.regex.test(string);\n },\n create: function (string) {\n var matches = this.regex.exec(string),\n numbers = [],\n input = matches.input;\n\n input.split(' ').forEach(function(n){\n if(n.trim().length > 0) {\n numbers.push(new Operand(n.trim()));\n }\n });\n\n return new ListOfNumbersExpression(input, numbers);\n }\n });\n\n // Not Expression\n expression.addFactory({\n regex: /^(~)(-?(?:\\d+|0x[\\d,a-f]+))$/,\n canCreate: function(string) {\n return this.regex.test(string);\n },\n create: function (string) {\n var matches = this.regex.exec(string),\n operand = new Operand(matches[2]);\n\n return new SingleOperandExpression(matches.input, operand, matches[1]);\n }\n });\n\n // Multiple operands expression\n expression.addFactory({\n fullRegex: /^((<<|>>|>>>|\\||\\&|\\^)?(-?((?:\\d+(?!x))|(?:0x[\\d,a-f]+))))+$/,\n regex: /(<<|>>|>>>|\\||\\&|\\^)?(-?((?:\\d+(?!x))|(?:0x[\\d,a-f]+)))/g,\n canCreate: function(string) {\n this.fullRegex.lastIndex = 0;\n return this.fullRegex.test(this.normalizeString(string));\n },\n create: function (string) {\n var m, operands = [],\n normalizedString = this.normalizeString(string);\n\n while ((m = this.regex.exec(normalizedString)) != null) {\n operands.push(this.parseMatch(m));\n }\n\n return new MultipleOperandsExpression(normalizedString, operands)\n },\n parseMatch: function (m) {\n var input = m[0],\n sign = m[1],\n num = m[2];\n\n if(sign == null) {\n return new Operand(num);\n } else {\n return new SingleOperandExpression(input, new Operand(num), sign);\n }\n },\n normalizeString: function (string) {\n return string.replace(/\\s+/g,'');\n }\n });\n\n\n// Represents numeric value\nexport class Operand {\n constructor(input) {\n this.input = input;\n this.value = parseInt(input);\n this.hex = Operand.toHexString(this.value.toString(16));\n this.dec = this.value.toString(10);\n // >>> 0 makes negative numbers like -1 to be displayed as '11111111111111111111111111111111' in binary instead of -1\n this.bin = this.value < 0 ? (this.value >>> 0).toString(2) : this.value.toString(2);\n this.kind = this.input.indexOf('0x') > -1 ? 'hex' : 'dec';\n this.other = this.kind == 'dec' ? this.hex : this.dec;\n this.lengthInBits = Operand.getBitLength(this.value);\n }\n \n getLengthInBits() {\n if(this.value < 0) {\n return 32;\n }\n return Math.floor(Math.log(this.value) / Math.log(2)) + 1;\n };\n\n getOtherKind(kind) {\n switch(kind || this.kind) {\n case 'dec': return 'hex';\n case 'hex': return 'dec';\n default : throw new Error(kind + \" kind doesn't have opposite kind\")\n }\n };\n\n toString() {\n return this.input;\n }\n\n setValue(value) {\n console.log('Before ' + value, this);\n this.value = value;\n this.bin = Operand.toKindString(this.value, 'bin');\n this.dec = Operand.toKindString(this.value, 'dec');\n this.hex = Operand.toKindString(this.value, 'hex');\n this.other = Operand.toKindString(this.value, this.getOtherKind());\n this.input = Operand.toKindString(this.value, this.kind);\n console.log('After ' + value, this);\n }\n \n static getBitLength(num) {\n return Math.floor(Math.log(num) / Math.log(2)) + 1\n } \n \n static getBase(kind){\n switch (kind){\n case 'bin': return 2;\n case 'hex': return 16;\n case 'dec': return 10;\n }\n };\n\n static create(number, kind) {\n var str = number.toString(Operand.getBase(kind));\n if(kind == 'hex') {\n str = Operand.toHexString(str);\n }\n\n return new Operand(str);\n };\n\n static toKindString(value, kind) {\n switch(kind) {\n case 'hex':\n var hexVal = Math.abs(value).toString(16);\n return value >= 0 ? '0x' + hexVal : '-0x' + hexVal;\n case 'bin':\n return (value>>>0).toString(2);\n case 'dec':\n return value.toString(10);\n default:\n throw new Error(\"Unexpected kind: \" + kind)\n }\n };\n\n static toHexString (hex) {\n return hex.indexOf('-') == 0 ? '-0x' + hex.substr(1) : '0x' + hex;\n };\n}\n\n// Expressions like ~1\nexport class SingleOperandExpression {\n constructor(expressionString, operand, sign) {\n this.expressionString = expressionString;\n this.operand1 = operand;\n this.sign = sign;\n }\n \n apply(value) {\n var str = '';\n if(this.sign == '~'){\n str = '~' + this.operand1.value;\n } else {\n str = value + this.sign + this.operand1.value\n }\n\n return Operand.create(eval(str), this.operand1.kind);\n };\n\n isShiftExpression() {\n return this.sign.indexOf('<') >= 0 || this.sign.indexOf('>')>= 0;\n };\n\n toString() {\n return this.sign + this.operand1.toString();\n }\n}\n\n// Expression like 1|2 or 4^5\nexport class TwoOperandExpression {\n constructor(expressionString, operand1, operand2, sign) {\n this.expressionString = expressionString;\n this.operand1 = operand1;\n this.operand2 = operand2;\n this.sign = sign;\n }\n}\n\nexport class MultipleOperandsExpression {\n constructor(expressionString, expressions) {\n this.expressionString = expressionString;\n this.expressions = expressions;\n }\n}\n\nexport class ListOfNumbersExpression {\n constructor(expressionString, numbers) {\n this.expressionString = expressionString;\n this.numbers = numbers;\n this.maxBitsLegnth = numbers.map(n => n.lengthInBits).reduce((n , c) => n >= c ? n : c, 0);\n }\n\n toString() {\n return this.numbers.map(n => n.value.toString()).join(' ');\n }\n}\n\nexport class Expression {\n toString() {\n return this.expressionString ? \"Expression: \" + this.expressionString : this.toString();\n };\n}\n \nexport var parser = expression;\n\n\nexport class Parser {\n constructor(input, pos) {\n this.input = input;\n this.pos = pos || 0;\n this.buffer = [];\n }\n\n parse() {\n console.log(this.input.length);\n while(this.pos<this.input.length) {\n this.buffer.push(this.input[this.pos]);\n this.pos++;\n }\n console.log('exit');\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/expression.js","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n var noop = function() {};\n var undefinedType = \"undefined\";\n\n function realMethod(methodName) {\n if (typeof console === undefinedType) {\n return false; // We can't build a real method without a console to log to\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // these private functions always need `this` to be set properly\n\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n }\n\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (name) {\n storageKey += \":\" + name;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n /*\n *\n * Public API\n *\n */\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Package-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n return defaultLogger;\n}));\n\n\n\n// WEBPACK FOOTER //\n// ./~/loglevel/lib/loglevel.js","import is from './is';\n \n var handlers = [];\n\nvar config = {\n errorHandler: (input, err) => logError(err)\n}\n\nvar cmd = {\n debugMode: false,\n execute: function(rawInput) {\n var input = rawInput.trim().toLowerCase();\n var handler = findHandler(input);\n\n if(handler != null) {\n if(this.debugMode) {\n invokeHandler(input, handler);\n } else {\n try {\n invokeHandler(input, handler);\n } catch (e) {\n config.errorHandler(input, e);\n }\n }\n }\n else {\n logError(input, new Error(\"Unsupported expression: \" + input.trim()));\n }\n },\n commands: function(catalog) {\n for(var key in catalog) {\n if(catalog.hasOwnProperty(key)) {\n this.command(key, catalog[key]);\n }\n }\n },\n command: function(cmd, handler) {\n var h = createHandler(cmd, handler);\n if(h == null){\n console.warn('unexpected set of arguments: ', Array.prototype.splice.call(arguments));\n return;\n }\n\n if(!is.aFunction(h.canHandle)) {\n console.warn('handler is missing \"canHandle\" function. registration denied.');\n return;\n }\n\n if(!is.aFunction(h.handle)) {\n console.warn('handler is missing \"handle\" function. registration denied.');\n return;\n }\n\n handlers.push(h);\n },\n clear: function() {\n console.log('clear');\n },\n onError: function(handler) {\n config.errorHandler = handler;\n }\n };\n\n function logError(err) {\n console.error(err)\n }\n\n function invokeHandler (input, handler) {\n var cmdResult = handler.handle({ input: input});\n if(cmdResult != null) {\n console.log(cmdResult);\n }\n }\n\n function createHandler (cmd, handler) {\n if(is.plainObject(cmd)) {\n return cmd;\n }\n\n if(is.string(cmd)) {\n return { canHandle: function (input) { return input === cmd; }, handle: handler };\n }\n\n return null;\n }\n\n function findHandler (input) {\n var i= 0;\n for(i;i<handlers.length; i++) {\n if(handlers[i].canHandle(input)) {\n return handlers[i];\n }\n }\n };\n\nexport default cmd;\n\n\n// WEBPACK FOOTER //\n// ./src/app/cmd.js","import React from 'react';\nimport cmd from '../cmd';\n\nexport default class InputBox extends React.Component {\n constructor() {\n super();\n this.history = [];\n this.historyIndex = -1;\n }\n\n componentDidMount(){\n this.nameInput.focus();\n }\n\n render() {\n return <input id=\"in\" type=\"text\"\n ref={(input) => { this.nameInput = input; }} \n onKeyUp={e => this.onKeyUp(e)}\n onKeyDown={e => this.onKeyDown(e)}\n className=\"expressionInput mono\"\n placeholder=\"type expression like '1>>2' or 'help' \"/>;\n }\n\n onKeyUp(e) {\n var input = e.target;\n if (e.keyCode != 13 || input.value.trim().length == 0) {\n return;\n }\n\n var value = input.value;\n this.history.unshift(value);\n this.historyIndex = -1;\n\n input.value = ''; \n cmd.execute(value);\n console.log(this.history);\n }\n\n onKeyDown(args) {\n\n if(args.keyCode == 38) {\n var newIndex = this.historyIndex+1;\n\n if (this.history.length > newIndex) { // up\n args.target.value = this.history[newIndex];\n this.historyIndex = newIndex;\n }\n\n args.preventDefault();\n return;\n }\n\n if(args.keyCode == 40) {\n if(this.historyIndex > 0) { // down\n args.target.value = this.history[--this.historyIndex];\n }\n\n args.preventDefault();\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/InputBox.jsx","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/EventListener.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/focusNode.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/getActiveElement.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n// WEBPACK FOOTER //\n// ./~/process/browser.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = require('./factoryWithTypeCheckers');\nmodule.exports = function(isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/prop-types/factory.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/CSSProperty.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/CallbackQueue.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DOMPropertyOperations.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMComponentFlags.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMSelect.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactEmptyComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactFeatureFlags.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactHostComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactInputSelection.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactMount.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactNodeTypes.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ViewportMetrics.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/accumulateInto.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/forEachAccumulated.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getHostComponentFromComposite.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getTextContentAccessor.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('react/lib/getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (process.env.NODE_ENV !== 'production') {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + 'it\\'s defined in.';\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/instantiateReactComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/isTextInputElement.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/setTextContent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/traverseAllChildren.js","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty)\n // Strip regex characters so we can use it for regex\n .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n // Remove hasOwnProperty from the template to make it generic\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactComponentTreeHook.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactElementSymbol.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/canDefineProperty.js","import React from 'react';\n\nexport default class BinaryStringView extends React.Component {\n render() {\n return <span>{this.getChildren()}</span>\n }\n\n onBitClick(index, e) {\n if(!this.props.allowFlipBits) {\n return;\n }\n\n if(this.props.onFlipBit) {\n this.props.onFlipBit(index);\n }\n }\n\n getChildren() {\n var bits = this.createBits(this.props.binaryString.split(''));\n \n if(this.props.emphasizeBytes) {\n return this.splitIntoBytes(bits);\n }\n\n return bits;\n }\n\n createBits(bitChars) {\n const allowFlipBits = this.props.allowFlipBits || false;\n const css = allowFlipBits ? ' flipable' : ''\n const classNames = { '0': `zero${css}`, '1' : `one ${css}` };\n \n return bitChars.map((c, i) => <span className={classNames[c]} key={i} onClick={e => this.onBitClick(i, e)}>{c}</span>);\n }\n\n splitIntoBytes(bits) {\n const bytes = [];\n\n var key = 0;\n while(bits.length > 0) {\n bytes.push(<span key={key++} className=\"byte\">{bits.splice(0, 8)}</span>);\n }\n \n return bytes;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/BinaryStringView.jsx","export default class BitwiseExpressionViewModel {\n\n constructor({ emphasizeBytes = false } = {}) {\n this.emphasizeBytes = emphasizeBytes;\n this.items = [];\n this.maxNumberOfBits = 0;\n }\n\n static buildMultiple (expr, config) {\n\n var op = expr.expressions[0],\n i = 1, l = expr.expressions.length,\n ex, m = new BitwiseExpressionViewModel(config);\n\n m.addOperand(op);\n\n for (;i<l;i++) {\n ex = expr.expressions[i];\n op = ex.apply(op.value);\n\n if(ex.isShiftExpression()){\n m.addShiftExpressionResult(ex, op);\n } else {\n m.addExpression(ex);\n m.addExpressionResult(op);\n }\n }\n\n m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);\n return m;\n };\n\n static buildNot (expression, config) {\n \n var m = new BitwiseExpressionViewModel(config);\n m.addExpression(expression);\n m.addExpressionResult(expression.apply());\n m.maxNumberOfBits = BitwiseExpressionViewModel.getNumberOfBits(m.maxNumberOfBits, m.emphasizeBytes);\n return m;\n };\n\n addOperand(operand) {\n this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign:'', label: operand.toString(), bin: operand.bin, other: operand.other, css: ''});\n };\n\n addExpression(expression) {\n this.maxNumberOfBits = Math.max(expression.operand1.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign: expression.sign, label: expression.operand1.toString(), bin: expression.operand1.bin, other: expression.operand1.other, css: ''});\n };\n\n addShiftExpressionResult(expression, resultOperand) {\n this.maxNumberOfBits = Math.max(resultOperand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({\n sign: expression.sign + expression.operand1.input,\n label: resultOperand.toString(),\n bin: resultOperand.bin,\n other: resultOperand.other,\n css: 'expression-result'});\n };\n\n addExpressionResult(operand) {\n this.maxNumberOfBits = Math.max(operand.getLengthInBits(), this.maxNumberOfBits);\n this.items.push({ sign:'=', label: operand.toString(), bin: operand.bin, other: operand.other, css: 'expression-result'});\n };\n\n // TODO: move this method elsewhere. It is also used in LisOfNumbersExpressionView.js\n static getNumberOfBits = function (bits, emphasizeBytes) {\n if(emphasizeBytes && bits % 8 != 0) {\n if(bits < 8) {\n return 8;\n }\n\n var n = bits - (bits % 8);\n return n + 8;\n }\n\n return bits;\n };\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/models/BitwiseExpressionViewModel.js","export default {\n formatString: function(num, kind) {\n return num.toString(getBase(kind || \"bin\"));\n },\n padLeft: function (str, length, symbol) {\n var sb = Array.prototype.slice.call(str), symbol = symbol || \"0\";\n\n if(length == null) {\n return str;\n }\n\n while(length > sb.length) {\n sb.unshift(symbol);\n }\n\n return sb.join('');\n }\n };\n\n function getBase(kind) {\n switch (kind){\n case 'bin': return 2;\n case 'hex': return 16;\n case 'dec': return 10;\n }\n }\n\n\n// WEBPACK FOOTER //\n// ./src/app/formatter.js","import CommandResult from './CommandResult';\n\nexport default class AboutResult extends CommandResult {\n constructor(input) {\n super(input);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/AboutResult.js","import CommandResult from './CommandResult';\n\nexport default class ErrorResult extends CommandResult {\n constructor(input, error) {\n super(input);\n this.error = error;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/ErrorResult.js","import CommandResult from './CommandResult';\r\n\r\nexport default class ExpressionResult extends CommandResult {\r\n constructor(input, expression) {\r\n super(input);\r\n this.expression = expression;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/ExpressionResult.js","import CommandResult from './CommandResult';\n\nexport default class HelpResult extends CommandResult {\n constructor(input) {\n super(input);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/HelpResult.js","import CommandResult from './CommandResult';\n\nexport default class UnknownCommandResult extends CommandResult {\n constructor(input) {\n super(input);\n this.message = `Sorry, i don''t know what ${input} is :(`;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/UnknownCommandResult.js","import CommandResult from './CommandResult';\n\nexport default class WhatsnewResult extends CommandResult {\n constructor(input) {\n super(input);\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/models/WhatsnewResult.js","'use strict';\n\nmodule.exports = require('./lib/ReactDOM');\n\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/index.js","export default class AppState {\n constructor(persistData) {\n this.emphasizeBytes = persistData.emphasizeBytes || true;\n this.commandResults = [];\n this.handlers = [];\n this.uiTheme = persistData.uiTheme || 'dark';\n this.debugMode = false;\n\n this.version = 1;\n this.persistedVersion = persistData.version || 0.9;\n this.wasOldVersion = this.version > this.persistedVersion;\n }\n\n addCommandResult(result) {\n this.commandResults.unshift(result);\n this.triggerChanged();\n }\n\n clearCommmandResults() {\n this.commandResults = [];\n this.triggerChanged();\n }\n\n toggleEmphasizeBytes() {\n this.emphasizeBytes = !this.emphasizeBytes;\n this.triggerChanged();\n }\n\n onChange(handler) {\n this.handlers.push(handler);\n }\n\n triggerChanged() {\n for(var h of this.handlers) {\n h();\n }\n }\n\n setUiTheme(theme) {\n this.uiTheme = theme;\n this.triggerChanged(); \n }\n\n getPersistData() {\n return {\n emphasizeBytes: this.emphasizeBytes,\n uiTheme: this.uiTheme,\n version: this.version\n }\n }\n};\n\n\n// WEBPACK FOOTER //\n// ./src/app/AppState.js","const storeKey = 'AppState';\n\nexport default {\n getPersistedData() {\n var json = window.localStorage.getItem(storeKey);\n if(!json) {\n return {};\n }\n\n try {\n return JSON.parse(json);\n }\n catch(ex) {\n console.error('Failed to parse AppState json. Json Value: \\n' + json, ex);\n return {};\n }\n },\n\n watch (appState) {\n appState.onChange(() => this.persistData(appState));\n },\n\n persistData(appState) {\n localStorage.setItem(storeKey, JSON.stringify(appState.getPersistData()));\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/appStateStore.js","import HelpResult from './models/HelpResult';\nimport AboutResult from './models/AboutResult';\nimport UnknownCommandResult from './models/UnknownCommandResult';\nimport ExpressionResult from './models/ExpressionResult';\nimport ErrorResult from './models/ErrorResult';\nimport WahtsnewResult from './models/WhatsnewResult';\nimport * as expression from './expression';\n\nvar cmdConfig = {};\n\nexport default {\n initialize (cmd, appState) {\n\n cmd.command({\n canHandle: (input) => expression.parser.canParse(input),\n handle: function(c) {\n var expr = expression.parser.parse(c.input);\n appState.addCommandResult(new ExpressionResult(c.input, expr));\n } \n })\n\n cmd.commands({\n 'help': function(c) {\n appState.addCommandResult(new HelpResult(c.input)); \n },\n 'clear': function() {\n appState.clearCommmandResults();\n },\n 'em': function() {\n appState.toggleEmphasizeBytes();\n },\n 'dark': function() {\n appState.setUiTheme('dark');\n },\n 'light': function () {\n appState.setUiTheme('light');\n },\n 'about': function(c) {\n appState.addCommandResult(new AboutResult(c.input));\n },\n 'whatsnew': function(c) {\n appState.addCommandResult(new WahtsnewResult(c.input));\n },\n '-notrack': function () {}\n });\n\n // Last command handler reports that input is unknown\n cmd.command({\n canHandle: () => true,\n handle: (c) => appState.addCommandResult(new UnknownCommandResult(c.input))\n });\n\n cmd.onError((input, err) => appState.addCommandResult(new ErrorResult(input, err)));\n }\n }\n\n\n// WEBPACK FOOTER //\n// ./src/app/commands.js","import React from 'react';\nimport InputBox from './InputBox';\nimport DisplayResultView from './DisplayResultView';\n\nexport default class AppRoot extends React.Component {\n componentWillMount() {\n this.refresh();\n this.props.appState.onChange(() => this.refresh());\n }\n refresh() {\n this.setState(this.props.appState);\n }\n \n getIndicator(value) {\n return value === true ? 'on' : 'off';\n }\n\n getResultViews() {\n var results = this.state.commandResults.map((r, i) => <DisplayResultView key={i} content={r} input={r.input} inputHash={r.inputHash} appState={this.props.appState} />);\n return results;\n }\n\n toggleEmphasizeBytes() {\n console.log(this.props.appState);\n this.props.appState.toggleEmphasizeBytes();\n }\n\n render() {\n return <div className={`app-root ${this.state.uiTheme}`}>\n <div className=\"header\">\n <h1>Bitwise<span style={{color: \"#c5c5c5\"}}>Cmd</span></h1>\n <ul className=\"top-links\">\n <li>\n <a href=\"https://github.com/BorisLevitskiy/BitwiseCmd\"><i className=\"icon github\"> </i><span className=\"link-text\">Project on GitHub</span></a>\n </li>\n <li>\n <a href=\"https://twitter.com/BitwiseCmd\"><i className=\"icon twitter\"> </i><span className=\"link-text\">Twitter</span></a>\n </li>\n <li>\n <a href=\"mailto:bitwisecmd@gmail.com?subject=Feedback\"><i className=\"icon feedback\"> </i><span className=\"link-text\">Send Feedback</span></a>\n </li>\n </ul>\n </div>\n\n <div className=\"expressionInput-container\">\n <InputBox />\n\n <span className=\"configPnl\">\n <span id=\"emphasizeBytes\" data-cmd=\"em\" className={\"indicator \" + this.getIndicator(this.state.emphasizeBytes)} title=\"Toggle Emphasize Bytes\" onClick={e => this.toggleEmphasizeBytes()}>[em]</span>\n </span>\n </div>\n\n <div id=\"output\">\n {this.getResultViews()}\n </div>\n </div>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/AppRoot.jsx","export default {\n encodeHash: function(string) {\n return encodeURI(string.trim().replace(/\\s/g,','));\n },\n decodeHash: function(hashValue) {\n return decodeURI(hashValue).replace(/^\\#/, '').replace(/,/g,' ');\n },\n getArgs: function (hashValue) {\n\n var decodedHash = this.decodeHash(hashValue),\n args = { commands: [] };\n\n splitHashList(decodedHash).forEach(function(value) {\n // Support for -debur or -notrack properties\n if(/^\\-[a-zA-Z]+$/.test(value)) {\n args[value.substr(1)] = true;\n return;\n }\n\n args.commands.push(value);\n });\n\n return Object.freeze(args);\n }\n };\n\nfunction splitHashList(str) {\n var values = [];\n\n if(str.indexOf('||')) {\n str.split('||').forEach(function (v) {\n if (v.length > 0) {\n values.push(v);\n }\n });\n } else {\n values.push(str);\n }\n\n return values;\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/hash.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/camelize.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/camelizeStyleName.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/containsNode.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/createArrayFromMixed.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/createNodesFromMarkup.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/getMarkupWrap.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/getUnboundedScrollPosition.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/hyphenate.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/hyphenateStyleName.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/isNode.js","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/isTextNode.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n\n// WEBPACK FOOTER //\n// ./~/fbjs/lib/memoizeStringOnly.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n// WEBPACK FOOTER //\n// ./~/prop-types/checkPropTypes.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/prop-types/factoryWithTypeCheckers.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n// WEBPACK FOOTER //\n// ./~/prop-types/lib/ReactPropTypesSecret.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ARIADOMPropertyConfig.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/AutoFocusUtils.js","/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/BeforeInputEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styleValue, component);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styles[styleName], component);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/CSSPropertyOperations.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n}\n\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function () {\n return activeElementValueProp.get.call(this);\n },\n set: function (val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\n // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n Object.defineProperty(activeElement, 'value', newValueProp);\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === 'topInput') {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === 'topClick') {\n return targetInst;\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ChangeEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n\n};\n\nmodule.exports = Danger;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/Danger.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/DefaultEventPluginOrder.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/EnterLeaveEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/FallbackCompositionState.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/HTMLDOMPropertyConfig.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n ) {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n ) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactChildReconciler.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactComponentBrowserEnvironment.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production') {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactCompositeComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.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;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOM.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { 'string': true, 'number': true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n};\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMContainerInfo.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMEmptyComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMFeatureFlags.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMIDOperations.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n // eslint-disable-next-line\n if (value != valueAsNumber) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n // eslint-disable-next-line\n } else if (value != node.value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMInput.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMOption.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMSelection.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMTextComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMTextarea.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDOMTreeTraversal.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDefaultBatchingStrategy.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactDefaultInjection.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactElementSymbol.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactEventEmitterMixin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactEventListener.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactInjection.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactMarkupChecksum.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactMultiChild.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactOwner.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactPropTypesSecret.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactReconcileTransaction.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactRef.js","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactServerRenderingTransaction.js","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactServerUpdateQueue.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.5.4';\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/ReactVersion.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SVGDOMPropertyConfig.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SelectEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SimpleEventPlugin.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticAnimationEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticClipboardEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticCompositionEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticDragEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticFocusEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticInputEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticKeyboardEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticTouchEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticTransitionEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/SyntheticWheelEvent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/adler32.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/dangerousStyleValue.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + '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.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/findDOMNode.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/flattenChildren.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getEventKey.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getIteratorFn.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getNodeForCharacterOffset.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/getVendorPrefixedEventName.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/quoteAttributeValueForBrowser.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n\n// WEBPACK FOOTER //\n// ./~/react-dom/lib/renderSubtreeIntoContainer.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/KeyEscapeUtils.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/PooledClass.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactChildren.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function (Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function (Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function (Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);\n },\n contextTypes: function (Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function (Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function (Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function (Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function () {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n process.env.NODE_ENV !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === 'OVERRIDE_BASE') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n }\n\n return;\n }\n\n !(typeof spec !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n !!isReserved ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;\n\n var isInherited = name in Constructor;\n !!isInherited ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function (newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function () {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function () {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\nvar didWarnDeprecated = false;\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function (spec) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(didWarnDeprecated, '%s: React.createClass is deprecated and will be removed in version 16. ' + 'Use plain JavaScript classes instead. If you\\'re not yet ready to ' + 'migrate, create-react-class is available on npm as a ' + 'drop-in replacement.', spec && spec.displayName || 'A Component') : void 0;\n didWarnDeprecated = true;\n }\n\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function (props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function (mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactClass.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactDOMFactories.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactPropTypeLocationNames.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactElement'),\n isValidElement = _require.isValidElement;\n\nvar factory = require('prop-types/factory');\n\nmodule.exports = factory(isValidElement);\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactPropTypes.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactPureComponent.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.5.4';\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/ReactVersion.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/getIteratorFn.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/getNextDebugID.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/onlyChild.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n// WEBPACK FOOTER //\n// ./~/react/lib/traverseAllChildren.js","import React from 'react';\nimport HelpResult from '../models/HelpResult';\nimport AboutResult from '../models/AboutResult';\nimport UnknownCommandResult from '../models/UnknownCommandResult';\nimport HelpResultView from './results/HelpResultView';\nimport AboutResultView from './results/AboutResultView';\nimport ExpressionResult from '../models/ExpressionResult';\nimport ExpressionResultView from './results/ExpressionResultView';\nimport WhatsnewResult from '../models/WhatsnewResult';\nimport WhatsnewResultView from './results/WhatsnewResultView';\nimport ErrorResult from '../models/ErrorResult';\n\nexport default class DisplayResult extends React.Component {\n render() {\n\n if(this.props.content instanceof UnknownCommandResult) {\n return this.renderUnknown(); \n }\n\n if(this.props.content instanceof ErrorResult) {\n return this.renderError(this.props.content.error.message);\n }\n\n return <div className=\"result\">\n <div className=\"input mono\"><span className=\"cur\">></span>{this.props.content.input}<a className=\"hashLink\" title=\"Link for this expression\" href={window.location.pathname + '#' + this.props.inputHash}>#</a></div>\n <div className=\"content\">\n {this.findResultComponent(this.props.content)}\n </div>\n </div>;\n }\n\n renderUnknown() {\n return <div className=\"result\">\n <div className=\"error\">¯\\_(ツ)_/¯ Sorry, i don′t know what <strong>{this.props.input}</strong> is</div>\n </div>\n }\n\n renderError(message) {\n return <div className=\"result\">\n <div className=\"error\">(X_X) Error occurred: <strong>{message}</strong></div>\n </div>\n }\n\n findResultComponent(result) {\n if(result instanceof HelpResult) {\n return <HelpResultView content={result} />\n }\n\n if(result instanceof AboutResult) {\n return <AboutResultView />\n }\n\n if(result instanceof ExpressionResult) {\n return <ExpressionResultView result={result} emphasizeBytes={this.props.appState.emphasizeBytes} /> \n }\n\n if(result instanceof WhatsnewResult) {\n return <WhatsnewResultView />\n }\n\n console.warn('Unknown result:', result);\n return <span>Unknown result: {typeof result}</span>\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/DisplayResultView.jsx","import React from 'react'\n\nexport default class AboutResultView extends React.Component {\n render() {\n return <div className=\"aboutTpl\">\n <p> Created by <a href=\"http://boryslevytskyi.github.io/\">Borys Levytskyi</a>. Please give it a like if BitwiseCmd has helped you in your work.</p>\n <p>If you have an idea, suggestion or you've spotted a bug here, please send it to <a href=\"mailto:bitwisecmd@gmail.com?subject=Feedback\">bitwisecmd@gmail.com</a> or tweet on <a href=\"http://twitter.com/BitwiseCmd\">@BitwiseCmd</a>. Your feedback is greatly appreciated.</p>\n <p><a href=\"https://github.com/BorisLevitskiy/BitwiseCmd\">Project on <strong>GitHub</strong></a></p>\n </div>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/AboutResultView.jsx","import React from 'react';\nimport * as expression from '../../expression';\nimport formatter from '../../formatter';\nimport BinaryStringView from './BinaryStringView';\nimport BitwiseExpressionViewModel from './models/BitwiseExpressionViewModel';\nimport log from 'loglevel';\n\nexport default class BitwiseOperationEpxressionView extends React.Component {\n render() {\n var rows = this.getRows();\n if(!rows) {\n return null;\n }\n\n return <table className=\"expression\">\n <tbody>\n {rows}\n </tbody>\n </table>\n }\n\n getRows() {\n const expr = this.props.expression;\n\n if(expr instanceof expression.SingleOperandExpression) {\n const m = BitwiseExpressionViewModel.buildNot(expr, { emphasizeBytes: this.props.emphasizeBytes });\n log.info('Render model', m);\n return m.items.map((itm, i) => <ExpressionRow key={i} {...itm} emphasizeBytes={this.props.emphasizeBytes} maxNumberOfBits={m.maxNumberOfBits} />);\n }\n\n if(expr instanceof expression.MultipleOperandsExpression) {\n const m = BitwiseExpressionViewModel.buildMultiple(expr, { emphasizeBytes: this.props.emphasizeBytes });\n log.info('Render model', m);\n return m.items.map((itm, i) => <ExpressionRow key={i} {...itm} emphasizeBytes={this.props.emphasizeBytes} maxNumberOfBits={m.maxNumberOfBits} />);\n }\n\n return null;\n }\n}\n\nclass ExpressionRow extends React.Component {\n render() {\n const { sign, label, bin, other, css, maxNumberOfBits, emphasizeBytes } = this.props;\n \n return <tr className={css}>\n <td className=\"sign\">{sign}</td>\n <td className=\"label\">{label}</td>\n <td className=\"bin\">\n <BinaryStringView emphasizeBytes={emphasizeBytes} binaryString={formatter.padLeft(bin, maxNumberOfBits, '0')} allowFlipBits={false}/>\n </td>\n <td className=\"other\">{other}</td>\n </tr>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/BitwiseOperationExpressionView.jsx","import React from 'react'\r\nimport ListOfNumbersExpressionView from './ListOfNumbersExpressionView';\r\nimport BitwiseOperationExpressionView from './BitwiseOperationExpressionView';\r\n\r\nimport * as expression from '../../expression'; \r\n\r\nexport default class ExpressionResultView extends React.Component {\r\n render() {\r\n var expr = this.props.result.expression;\r\n\r\n if(expr instanceof expression.ListOfNumbersExpression) {\r\n return <div>\r\n <ListOfNumbersExpressionView expression={expr} emphasizeBytes={this.props.emphasizeBytes} />\r\n </div>\r\n }\r\n if(expr instanceof expression.SingleOperandExpression || expr instanceof expression.MultipleOperandsExpression) {\r\n return <div>\r\n <BitwiseOperationExpressionView expression={expr} emphasizeBytes={this.props.emphasizeBytes} />\r\n </div>\r\n }\r\n\r\n console.log('[BitwiseOperationExpressionView] render()', expr);\r\n\r\n return <b>Expression: {expr.expressionString}</b>;\r\n } \r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/ExpressionResultView.jsx","import React from 'react'\n\nexport default class HelpResultView extends React.Component {\n render() {\n return <div className=\"help helpResultTpl\">\n <div style={{overflow: \"hidden\"}}>\n <div style={{float: \"left\", \"marginRight\": \"20px\"}}>\n <div className=\"section\">\n <strong>Supported Commands</strong>\n <ul>\n <li><code>23 ^ 34</code> — type bitwise expression to see result in binary (only positive integers are supported now)</li>\n <li><code>23 34</code> — type one or more numbers to see their binary representations</li>\n <li><code>clear</code> — clear output pane</li>\n <li><code>help</code> — display this help</li>\n <li><code>whatsnew</code> — display changelog</li>\n <li><code>em</code> — turn On/Off Emphasize Bytes</li>\n <li><code>dark</code> — set Dark theme</li>\n <li><code>light</code> — set Light theme</li>\n <li><code>about</code> — about the app</li>\n </ul>\n </div>\n </div>\n <div style={{\"float\":\"left\"}}>\n <div className=\"section\">\n <strong>Supported Bitwise Operations</strong><br/>\n <small>\n <a href=\"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators\">\n as implemented in JavaScript engine\n </a>\n </small>\n <ul>\n <li><code>&</code> — bitwise AND</li>\n <li><code>|</code> — bitwise inclusive OR</li>\n <li><code>^</code> — bitwise exclusive XOR</li>\n <li><code>~</code> — bitwise NOT</li>\n <li><code><<</code> — left shift</li>\n <li><code>>></code> — sign propagating right shift</li>\n <li><code>>>></code> — zero-fill right shift</li>\n </ul>\n </div>\n </div>\n </div>\n </div>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/HelpResultView.jsx","import React from 'react';\r\nimport formatter from '../../formatter';\r\nimport BinaryStringView from './BinaryStringView';\r\nimport BitwiseExpressionViewModel from './models/BitwiseExpressionViewModel'\r\n\r\n\r\nexport default class ListOfNumersExpressionView extends React.Component {\r\n render() {\r\n const expr = this.props.expression;\r\n const maxBitsLegnth = BitwiseExpressionViewModel.getNumberOfBits(expr.maxBitsLegnth, this.props.emphasizeBytes);\r\n const numberRows = expr.numbers.map((n, i) => <OperandView key={i} operand={n} maxBitsLegnth={maxBitsLegnth} emphasizeBytes={this.props.emphasizeBytes} />);\r\n return <table className=\"expression\">\r\n <tbody>\r\n {numberRows}\r\n </tbody> \r\n </table>\r\n }\r\n}\r\n\r\nclass OperandView extends React.Component {\r\n constructor() {\r\n super();\r\n this.state = { operand: null };\r\n }\r\n render() {\r\n const op = this.props.operand;\r\n const binaryString = formatter.padLeft(op.bin, this.props.maxBitsLegnth, '0');\r\n\r\n return <tr data-kind={op.kind}>\r\n <td className=\"label\">{op.input}</td>\r\n <td className=\"bin\"><BinaryStringView emphasizeBytes={this.props.emphasizeBytes} binaryString={binaryString} allowFlipBits={true} onFlipBit={e => this.flipBit(e)} /></td>\r\n <td className=\"other\">{op.other}</td>\r\n </tr>;\r\n };\r\n\r\n flipBit(index) { \r\n var op = this.props.operand;\r\n const binaryString = formatter.padLeft(op.bin, this.props.maxBitsLegnth, '0');\r\n var arr = binaryString.split('');\r\n // TODO: this code looks ugly\r\n arr[index] = arr[index] == '0' ? '1' : '0';\r\n var bin = arr.join('');\r\n op.setValue(parseInt(bin, 2));\r\n\r\n this.setState({ operand: op });\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/ListOfNumbersExpressionView.jsx","import React from 'react'\n\nexport default class WhatsnewResultView extends React.Component {\n render() {\n return <div class=\"changelog\">\n <h3>BitwiseCmd Changelog</h3> \n <div class=\"item\">\n <p><strong>May 16th, 2017</strong> Complete rewrite using React. Old implementation is available at <a href=\"http://bitwisecmd.com/old\">http://bitwisecmd.com/old</a>.</p>\n <p>Please let me know if you have problems with this release by <a href=\"https://github.com/BorysLevytskyi/BitwiseCmd/issues\">creating issue</a> in Github Repo.</p>\n </div> \n </div>;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/components/results/WhatsnewResultView.jsx","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport InputBox from './components/InputBox.jsx';\nimport AppState from './AppState';\nimport appStateStore from './appStateStore';\nimport cmd from './cmd';\nimport commands from './commands';\nimport AppRoot from './components/AppRoot';\nimport hash from './hash';\nimport log from 'loglevel';\n\nsetupLogger();\n\nconst appState = createAppState();\n\ncommands.initialize(cmd, appState);\n\nexecuteStartupCommands();\n\nvar root = <AppRoot appState={appState} />;\nReactDOM.render(root, document.getElementById('root'));\n\nlog.debug(\"started\");\n\nfunction createAppState() {\n var stateData = appStateStore.getPersistedData();\n const appState = new AppState(stateData);\n appStateStore.watch(appState);\n log.debug(\"appState\", appState);\n return appState;\n}\n\nfunction setupLogger() {\n if(window.location.host != 'bitwisecmd.com' || window.location.hash.indexOf('-debug') > -1) {\n log.setLevel(\"trace\");\n } else {\n log.setLevel(\"warn\");\n }\n}\n\nfunction executeStartupCommands() {\n var hashArgs = hash.getArgs(window.location.hash);\n\n var startupCommands = ['help', '1|2&6','1<<0x2a','2 4 8 16 32'];\n\n if(appState.wasOldVersion) {\n startupCommands = [\"whatsnew\"];\n }\n\n if(hashArgs.commands.length > 0) {\n startupCommands = hashArgs.commands;\n }\n\n startupCommands.forEach(cmd.execute.bind(cmd));\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/index.jsx","export default {\n plainObject: function(obj) {\n return typeof obj == \"object\" && obj instanceof Object;\n },\n\n aFunction: function (obj) {\n return typeof obj == \"function\";\n },\n\n string: function (obj) {\n return typeof obj == \"string\";\n },\n\n regex: function (obj) {\n return typeof obj == \"object\" && this.constructedFrom(RegExp);\n },\n\n constructedFrom: function (obj, ctor) {\n return obj instanceof ctor;\n },\n\n htmlElement: function(obj) {\n return obj instanceof HtmlElement;\n },\n\n array: function(obj) {\n return obj instanceof Array;\n },\n\n number: function(num) {\n return typeof num == \"number\" && !isNaN(num)\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/app/is.js"],"sourceRoot":""} \ No newline at end of file diff --git a/react/npm-debug.log b/react/npm-debug.log new file mode 100644 index 0000000..926a603 --- /dev/null +++ b/react/npm-debug.log @@ -0,0 +1,23 @@ +0 info it worked if it ends with ok +1 verbose cli [ '/usr/local/bin/node', +1 verbose cli '/usr/local/bin/npm', +1 verbose cli 'run', +1 verbose cli 'server-lite' ] +2 info using npm@3.10.10 +3 info using node@v6.10.0 +4 verbose stack Error: ENOENT: no such file or directory, open '/Users/boryslevytskyi/git/BitwiseCmdPages/package.json' +4 verbose stack at Error (native) +5 verbose cwd /Users/boryslevytskyi/git/BitwiseCmdPages/react +6 error Darwin 16.5.0 +7 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "server-lite" +8 error node v6.10.0 +9 error npm v3.10.10 +10 error path /Users/boryslevytskyi/git/BitwiseCmdPages/package.json +11 error code ENOENT +12 error errno -2 +13 error syscall open +14 error enoent ENOENT: no such file or directory, open '/Users/boryslevytskyi/git/BitwiseCmdPages/package.json' +15 error enoent ENOENT: no such file or directory, open '/Users/boryslevytskyi/git/BitwiseCmdPages/package.json' +15 error enoent This is most likely not a problem with npm itself +15 error enoent and is related to npm not being able to find a file. +16 verbose exit [ -2, true ]