From a13f87b5c02e1d021c08048ef230344322a33406 Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Wed, 27 Jul 2016 14:10:01 +0200 Subject: [PATCH] Remove horizontal scrolling on xs screen on login form --- app/components/Login.jsx | 2 +- app/dist/fix.ie9.js | 2 +- app/dist/index.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/components/Login.jsx b/app/components/Login.jsx index 1fa9b4e..1f96a9a 100644 --- a/app/components/Login.jsx +++ b/app/components/Login.jsx @@ -120,7 +120,7 @@ LoginForm.propTypes = { export default class Login extends Component { render () { return ( -
+

Ampache


Welcome back on Ampache, let"s go!

diff --git a/app/dist/fix.ie9.js b/app/dist/fix.ie9.js index 94f5313..ef2ffd7 100644 --- a/app/dist/fix.ie9.js +++ b/app/dist/fix.ie9.js @@ -65,7 +65,7 @@ /******/ } /******/ /******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "7e07e766a1844626ad6d"; // eslint-disable-line no-unused-vars +/******/ var hotCurrentHash = "a7e0a63b9a274c78573f"; // eslint-disable-line no-unused-vars /******/ var hotCurrentModuleData = {}; /******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars /******/ diff --git a/app/dist/index.js b/app/dist/index.js index c8aa0b4..24bbcdb 100644 --- a/app/dist/index.js +++ b/app/dist/index.js @@ -65,7 +65,7 @@ /******/ } /******/ /******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "7e07e766a1844626ad6d"; // eslint-disable-line no-unused-vars +/******/ var hotCurrentHash = "a7e0a63b9a274c78573f"; // eslint-disable-line no-unused-vars /******/ var hotCurrentModuleData = {}; /******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars /******/ @@ -4371,7 +4371,7 @@ /* 633 */ /***/ function(module, exports, __webpack_require__) { - eval("/* WEBPACK VAR INJECTION */(function($) {\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LoginForm = undefined;\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__(22);\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 LoginForm = exports.LoginForm = function (_Component) {\n _inherits(LoginForm, _Component);\n\n function LoginForm(props) {\n _classCallCheck(this, LoginForm);\n\n var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LoginForm).call(this, props));\n\n _this.handleSubmit = _this.handleSubmit.bind(_this);\n return _this;\n }\n\n _createClass(LoginForm, [{\n key: \"setError\",\n value: function setError(formGroup, error) {\n if (error) {\n formGroup.classList.add(\"has-error\");\n formGroup.classList.remove(\"has-success\");\n return true;\n }\n formGroup.classList.remove(\"has-error\");\n formGroup.classList.add(\"has-success\");\n return false;\n }\n }, {\n key: \"handleSubmit\",\n value: function handleSubmit(e) {\n e.preventDefault();\n var username = this.refs.username.value.trim();\n var password = this.refs.password.value.trim();\n var endpoint = this.refs.endpoint.value.trim();\n var rememberMe = this.refs.rememberMe.checked;\n\n var hasError = this.setError(this.refs.usernameFormGroup, !username);\n hasError |= this.setError(this.refs.passwordFormGroup, !password);\n hasError |= this.setError(this.refs.endpointFormGroup, !endpoint);\n\n if (!hasError) {\n this.props.onSubmit(username, password, endpoint, rememberMe);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this.props.error) {\n $(this.refs.loginForm).shake(3, 10, 300);\n this.setError(this.refs.usernameFormGroup, this.props.error);\n this.setError(this.refs.passwordFormGroup, this.props.error);\n this.setError(this.refs.endpointFormGroup, this.props.error);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n null,\n this.props.error ? _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"div\",\n { className: \"alert alert-danger\" },\n _react2.default.createElement(\n \"p\",\n { id: \"loginFormError\" },\n _react2.default.createElement(\"span\", { className: \"glyphicon glyphicon-exclamation-sign\", \"aria-hidden\": \"true\" }),\n \" \",\n this.props.error\n )\n )\n ) : null,\n this.props.info ? _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"div\",\n { className: \"alert alert-info\", id: \"loginFormInfo\" },\n _react2.default.createElement(\n \"p\",\n null,\n this.props.info\n )\n )\n ) : null,\n _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"form\",\n { className: \"col-sm-9 col-sm-offset-1 col-md-6 col-md-offset-3 text-left form-horizontal login\", onSubmit: this.handleSubmit, ref: \"loginForm\", \"aria-describedby\": \"loginFormInfo loginFormError\" },\n _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"div\",\n { className: \"form-group\", ref: \"usernameFormGroup\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-xs-12\" },\n _react2.default.createElement(\"input\", { type: \"text\", className: \"form-control\", ref: \"username\", \"aria-label\": \"Username\", placeholder: \"Username\", autoFocus: true, defaultValue: this.props.username })\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"form-group\", ref: \"passwordFormGroup\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-xs-12\" },\n _react2.default.createElement(\"input\", { type: \"password\", className: \"form-control\", ref: \"password\", \"aria-label\": \"Password\", placeholder: \"Password\" })\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"form-group\", ref: \"endpointFormGroup\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-xs-12\" },\n _react2.default.createElement(\"input\", { type: \"text\", className: \"form-control\", ref: \"endpoint\", \"aria-label\": \"URL of your Ampache instance (e.g. http://ampache.example.com)\", placeholder: \"http://ampache.example.com\", defaultValue: this.props.endpoint })\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"form-group\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-xs-12\" },\n _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-sm-6 col-xs-12 checkbox\" },\n _react2.default.createElement(\n \"label\",\n { id: \"rememberMeLabel\" },\n _react2.default.createElement(\"input\", { type: \"checkbox\", ref: \"rememberMe\", defaultChecked: this.props.rememberMe, \"aria-labelledby\": \"rememberMeLabel\" }),\n \" Remember me\"\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"col-sm-6 col-sm-12 submit text-right\" },\n _react2.default.createElement(\"input\", { type: \"submit\", className: \"btn btn-default\", \"aria-label\": \"Sign in\", defaultValue: \"Sign in\", disabled: this.props.isAuthenticating })\n )\n )\n )\n )\n )\n )\n )\n );\n }\n }]);\n\n return LoginForm;\n}(_react.Component);\n\nLoginForm.propTypes = {\n username: _react.PropTypes.string,\n endpoint: _react.PropTypes.string,\n rememberMe: _react.PropTypes.bool,\n onSubmit: _react.PropTypes.func.isRequired,\n isAuthenticating: _react.PropTypes.bool,\n error: _react.PropTypes.string,\n info: _react.PropTypes.string\n};\n\nvar Login = function (_Component2) {\n _inherits(Login, _Component2);\n\n function Login() {\n _classCallCheck(this, Login);\n\n return _possibleConstructorReturn(this, Object.getPrototypeOf(Login).apply(this, arguments));\n }\n\n _createClass(Login, [{\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { className: \"login text-center\" },\n _react2.default.createElement(\n \"h1\",\n null,\n _react2.default.createElement(\"img\", { src: \"./app/assets/img/ampache-blue.png\", alt: \"A\" }),\n \"mpache\"\n ),\n _react2.default.createElement(\"hr\", null),\n _react2.default.createElement(\n \"p\",\n null,\n \"Welcome back on Ampache, let\\\"s go!\"\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"col-sm-9 col-sm-offset-2 col-md-6 col-md-offset-3\" },\n _react2.default.createElement(LoginForm, { onSubmit: this.props.onSubmit, username: this.props.username, endpoint: this.props.endpoint, rememberMe: this.props.rememberMe, isAuthenticating: this.props.isAuthenticating, error: this.props.error, info: this.props.info })\n )\n );\n }\n }]);\n\n return Login;\n}(_react.Component);\n\nexports.default = Login;\n\n\nLogin.propTypes = {\n username: _react.PropTypes.string,\n endpoint: _react.PropTypes.string,\n rememberMe: _react.PropTypes.bool,\n onSubmit: _react.PropTypes.func.isRequired,\n isAuthenticating: _react.PropTypes.bool,\n error: _react.PropTypes.string,\n info: _react.PropTypes.string\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2FwcC9jb21wb25lbnRzL0xvZ2luLmpzeD8xMTNjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY2xhc3MgTG9naW5Gb3JtIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvciAocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlU3VibWl0ID0gdGhpcy5oYW5kbGVTdWJtaXQuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBzZXRFcnJvciAoZm9ybUdyb3VwLCBlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cC5jbGFzc0xpc3QuYWRkKFwiaGFzLWVycm9yXCIpO1xuICAgICAgICAgICAgZm9ybUdyb3VwLmNsYXNzTGlzdC5yZW1vdmUoXCJoYXMtc3VjY2Vzc1wiKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGZvcm1Hcm91cC5jbGFzc0xpc3QucmVtb3ZlKFwiaGFzLWVycm9yXCIpO1xuICAgICAgICBmb3JtR3JvdXAuY2xhc3NMaXN0LmFkZChcImhhcy1zdWNjZXNzXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaGFuZGxlU3VibWl0IChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgdXNlcm5hbWUgPSB0aGlzLnJlZnMudXNlcm5hbWUudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCBwYXNzd29yZCA9IHRoaXMucmVmcy5wYXNzd29yZC52YWx1ZS50cmltKCk7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5yZWZzLmVuZHBvaW50LnZhbHVlLnRyaW0oKTtcbiAgICAgICAgY29uc3QgcmVtZW1iZXJNZSA9IHRoaXMucmVmcy5yZW1lbWJlck1lLmNoZWNrZWQ7XG5cbiAgICAgICAgdmFyIGhhc0Vycm9yID0gdGhpcy5zZXRFcnJvcih0aGlzLnJlZnMudXNlcm5hbWVGb3JtR3JvdXAsICF1c2VybmFtZSk7XG4gICAgICAgIGhhc0Vycm9yIHw9IHRoaXMuc2V0RXJyb3IodGhpcy5yZWZzLnBhc3N3b3JkRm9ybUdyb3VwLCAhcGFzc3dvcmQpO1xuICAgICAgICBoYXNFcnJvciB8PSB0aGlzLnNldEVycm9yKHRoaXMucmVmcy5lbmRwb2ludEZvcm1Hcm91cCwgIWVuZHBvaW50KTtcblxuICAgICAgICBpZiAoIWhhc0Vycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0KHVzZXJuYW1lLCBwYXNzd29yZCwgZW5kcG9pbnQsIHJlbWVtYmVyTWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlICgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZXJyb3IpIHtcbiAgICAgICAgICAgICQodGhpcy5yZWZzLmxvZ2luRm9ybSkuc2hha2UoMywgMTAsIDMwMCk7XG4gICAgICAgICAgICB0aGlzLnNldEVycm9yKHRoaXMucmVmcy51c2VybmFtZUZvcm1Hcm91cCwgdGhpcy5wcm9wcy5lcnJvcik7XG4gICAgICAgICAgICB0aGlzLnNldEVycm9yKHRoaXMucmVmcy5wYXNzd29yZEZvcm1Hcm91cCwgdGhpcy5wcm9wcy5lcnJvcik7XG4gICAgICAgICAgICB0aGlzLnNldEVycm9yKHRoaXMucmVmcy5lbmRwb2ludEZvcm1Hcm91cCwgdGhpcy5wcm9wcy5lcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIgKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD1cImxvZ2luRm9ybUVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJnbHlwaGljb24gZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+IHsgdGhpcy5wcm9wcy5lcnJvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5pbmZvID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhbGVydCBhbGVydC1pbmZvXCIgaWQ9XCJsb2dpbkZvcm1JbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnsgdGhpcy5wcm9wcy5pbmZvIH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzc05hbWU9XCJjb2wtc20tOSBjb2wtc20tb2Zmc2V0LTEgY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIHRleHQtbGVmdCBmb3JtLWhvcml6b250YWwgbG9naW5cIiBvblN1Ym1pdD17dGhpcy5oYW5kbGVTdWJtaXR9IHJlZj1cImxvZ2luRm9ybVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJsb2dpbkZvcm1JbmZvIGxvZ2luRm9ybUVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiIHJlZj1cInVzZXJuYW1lRm9ybUdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXhzLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiByZWY9XCJ1c2VybmFtZVwiIGFyaWEtbGFiZWw9XCJVc2VybmFtZVwiIHBsYWNlaG9sZGVyPVwiVXNlcm5hbWVcIiBhdXRvRm9jdXMgZGVmYXVsdFZhbHVlPXt0aGlzLnByb3BzLnVzZXJuYW1lfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIiByZWY9XCJwYXNzd29yZEZvcm1Hcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC14cy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiIHJlZj1cInBhc3N3b3JkXCIgYXJpYS1sYWJlbD1cIlBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiIHJlZj1cImVuZHBvaW50Rm9ybUdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXhzLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiByZWY9XCJlbmRwb2ludFwiIGFyaWEtbGFiZWw9XCJVUkwgb2YgeW91ciBBbXBhY2hlIGluc3RhbmNlIChlLmcuIGh0dHA6Ly9hbXBhY2hlLmV4YW1wbGUuY29tKVwiIHBsYWNlaG9sZGVyPVwiaHR0cDovL2FtcGFjaGUuZXhhbXBsZS5jb21cIiBkZWZhdWx0VmFsdWU9e3RoaXMucHJvcHMuZW5kcG9pbnR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC14cy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02IGNvbC14cy0xMiBjaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9XCJyZW1lbWJlck1lTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiByZWY9XCJyZW1lbWJlck1lXCIgZGVmYXVsdENoZWNrZWQ9e3RoaXMucHJvcHMucmVtZW1iZXJNZX0gYXJpYS1sYWJlbGxlZGJ5PVwicmVtZW1iZXJNZUxhYmVsXCIgLz4gUmVtZW1iZXIgbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02IGNvbC1zbS0xMiBzdWJtaXQgdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdFwiIGFyaWEtbGFiZWw9XCJTaWduIGluXCIgZGVmYXVsdFZhbHVlPVwiU2lnbiBpblwiIGRpc2FibGVkPXt0aGlzLnByb3BzLmlzQXV0aGVudGljYXRpbmd9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5Mb2dpbkZvcm0ucHJvcFR5cGVzID0ge1xuICAgIHVzZXJuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGVuZHBvaW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlbWVtYmVyTWU6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGlzQXV0aGVudGljYXRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIGVycm9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGluZm86IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9naW4gZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlciAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvZ2luIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGgxPjxpbWcgc3JjPVwiLi9hcHAvYXNzZXRzL2ltZy9hbXBhY2hlLWJsdWUucG5nXCIgYWx0PVwiQVwiLz5tcGFjaGU8L2gxPlxuICAgICAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICAgICAgPHA+V2VsY29tZSBiYWNrIG9uIEFtcGFjaGUsIGxldFwicyBnbyE8L3A+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tOSBjb2wtc20tb2Zmc2V0LTIgY29sLW1kLTYgY29sLW1kLW9mZnNldC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxMb2dpbkZvcm0gb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9IHVzZXJuYW1lPXt0aGlzLnByb3BzLnVzZXJuYW1lfSBlbmRwb2ludD17dGhpcy5wcm9wcy5lbmRwb2ludH0gcmVtZW1iZXJNZT17dGhpcy5wcm9wcy5yZW1lbWJlck1lfSBpc0F1dGhlbnRpY2F0aW5nPXt0aGlzLnByb3BzLmlzQXV0aGVudGljYXRpbmd9IGVycm9yPXt0aGlzLnByb3BzLmVycm9yfSBpbmZvPXt0aGlzLnByb3BzLmluZm99IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbkxvZ2luLnByb3BUeXBlcyA9IHtcbiAgICB1c2VybmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBlbmRwb2ludDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICByZW1lbWJlck1lOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBpc0F1dGhlbnRpY2F0aW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBlcnJvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBpbmZvOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogYXBwL2NvbXBvbmVudHMvTG9naW4uanN4XG4gKiovIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQUNBOzs7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFIQTtBQUlBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFEQTtBQURBO0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBREE7QUFPQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBREE7QUFLQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBREE7QUFLQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBREE7QUFLQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFEQTtBQUtBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFOQTtBQURBO0FBREE7QUFoQkE7QUFEQTtBQURBO0FBckJBO0FBMERBOzs7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFDQTtBQVVBOzs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUpBO0FBU0E7Ozs7OztBQVpBO0FBQ0E7QUFDQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTsiLCJzb3VyY2VSb290IjoiIn0="); + eval("/* WEBPACK VAR INJECTION */(function($) {\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LoginForm = undefined;\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__(22);\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 LoginForm = exports.LoginForm = function (_Component) {\n _inherits(LoginForm, _Component);\n\n function LoginForm(props) {\n _classCallCheck(this, LoginForm);\n\n var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LoginForm).call(this, props));\n\n _this.handleSubmit = _this.handleSubmit.bind(_this);\n return _this;\n }\n\n _createClass(LoginForm, [{\n key: \"setError\",\n value: function setError(formGroup, error) {\n if (error) {\n formGroup.classList.add(\"has-error\");\n formGroup.classList.remove(\"has-success\");\n return true;\n }\n formGroup.classList.remove(\"has-error\");\n formGroup.classList.add(\"has-success\");\n return false;\n }\n }, {\n key: \"handleSubmit\",\n value: function handleSubmit(e) {\n e.preventDefault();\n var username = this.refs.username.value.trim();\n var password = this.refs.password.value.trim();\n var endpoint = this.refs.endpoint.value.trim();\n var rememberMe = this.refs.rememberMe.checked;\n\n var hasError = this.setError(this.refs.usernameFormGroup, !username);\n hasError |= this.setError(this.refs.passwordFormGroup, !password);\n hasError |= this.setError(this.refs.endpointFormGroup, !endpoint);\n\n if (!hasError) {\n this.props.onSubmit(username, password, endpoint, rememberMe);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this.props.error) {\n $(this.refs.loginForm).shake(3, 10, 300);\n this.setError(this.refs.usernameFormGroup, this.props.error);\n this.setError(this.refs.passwordFormGroup, this.props.error);\n this.setError(this.refs.endpointFormGroup, this.props.error);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n null,\n this.props.error ? _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"div\",\n { className: \"alert alert-danger\" },\n _react2.default.createElement(\n \"p\",\n { id: \"loginFormError\" },\n _react2.default.createElement(\"span\", { className: \"glyphicon glyphicon-exclamation-sign\", \"aria-hidden\": \"true\" }),\n \" \",\n this.props.error\n )\n )\n ) : null,\n this.props.info ? _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"div\",\n { className: \"alert alert-info\", id: \"loginFormInfo\" },\n _react2.default.createElement(\n \"p\",\n null,\n this.props.info\n )\n )\n ) : null,\n _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"form\",\n { className: \"col-sm-9 col-sm-offset-1 col-md-6 col-md-offset-3 text-left form-horizontal login\", onSubmit: this.handleSubmit, ref: \"loginForm\", \"aria-describedby\": \"loginFormInfo loginFormError\" },\n _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"div\",\n { className: \"form-group\", ref: \"usernameFormGroup\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-xs-12\" },\n _react2.default.createElement(\"input\", { type: \"text\", className: \"form-control\", ref: \"username\", \"aria-label\": \"Username\", placeholder: \"Username\", autoFocus: true, defaultValue: this.props.username })\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"form-group\", ref: \"passwordFormGroup\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-xs-12\" },\n _react2.default.createElement(\"input\", { type: \"password\", className: \"form-control\", ref: \"password\", \"aria-label\": \"Password\", placeholder: \"Password\" })\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"form-group\", ref: \"endpointFormGroup\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-xs-12\" },\n _react2.default.createElement(\"input\", { type: \"text\", className: \"form-control\", ref: \"endpoint\", \"aria-label\": \"URL of your Ampache instance (e.g. http://ampache.example.com)\", placeholder: \"http://ampache.example.com\", defaultValue: this.props.endpoint })\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"form-group\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-xs-12\" },\n _react2.default.createElement(\n \"div\",\n { className: \"row\" },\n _react2.default.createElement(\n \"div\",\n { className: \"col-sm-6 col-xs-12 checkbox\" },\n _react2.default.createElement(\n \"label\",\n { id: \"rememberMeLabel\" },\n _react2.default.createElement(\"input\", { type: \"checkbox\", ref: \"rememberMe\", defaultChecked: this.props.rememberMe, \"aria-labelledby\": \"rememberMeLabel\" }),\n \" Remember me\"\n )\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"col-sm-6 col-sm-12 submit text-right\" },\n _react2.default.createElement(\"input\", { type: \"submit\", className: \"btn btn-default\", \"aria-label\": \"Sign in\", defaultValue: \"Sign in\", disabled: this.props.isAuthenticating })\n )\n )\n )\n )\n )\n )\n )\n );\n }\n }]);\n\n return LoginForm;\n}(_react.Component);\n\nLoginForm.propTypes = {\n username: _react.PropTypes.string,\n endpoint: _react.PropTypes.string,\n rememberMe: _react.PropTypes.bool,\n onSubmit: _react.PropTypes.func.isRequired,\n isAuthenticating: _react.PropTypes.bool,\n error: _react.PropTypes.string,\n info: _react.PropTypes.string\n};\n\nvar Login = function (_Component2) {\n _inherits(Login, _Component2);\n\n function Login() {\n _classCallCheck(this, Login);\n\n return _possibleConstructorReturn(this, Object.getPrototypeOf(Login).apply(this, arguments));\n }\n\n _createClass(Login, [{\n key: \"render\",\n value: function render() {\n return _react2.default.createElement(\n \"div\",\n { className: \"login text-center container-fluid\" },\n _react2.default.createElement(\n \"h1\",\n null,\n _react2.default.createElement(\"img\", { src: \"./app/assets/img/ampache-blue.png\", alt: \"A\" }),\n \"mpache\"\n ),\n _react2.default.createElement(\"hr\", null),\n _react2.default.createElement(\n \"p\",\n null,\n \"Welcome back on Ampache, let\\\"s go!\"\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"col-sm-9 col-sm-offset-2 col-md-6 col-md-offset-3\" },\n _react2.default.createElement(LoginForm, { onSubmit: this.props.onSubmit, username: this.props.username, endpoint: this.props.endpoint, rememberMe: this.props.rememberMe, isAuthenticating: this.props.isAuthenticating, error: this.props.error, info: this.props.info })\n )\n );\n }\n }]);\n\n return Login;\n}(_react.Component);\n\nexports.default = Login;\n\n\nLogin.propTypes = {\n username: _react.PropTypes.string,\n endpoint: _react.PropTypes.string,\n rememberMe: _react.PropTypes.bool,\n onSubmit: _react.PropTypes.func.isRequired,\n isAuthenticating: _react.PropTypes.bool,\n error: _react.PropTypes.string,\n info: _react.PropTypes.string\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(8)))//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjMzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vL2FwcC9jb21wb25lbnRzL0xvZ2luLmpzeD8xMTNjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY2xhc3MgTG9naW5Gb3JtIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvciAocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlU3VibWl0ID0gdGhpcy5oYW5kbGVTdWJtaXQuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBzZXRFcnJvciAoZm9ybUdyb3VwLCBlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cC5jbGFzc0xpc3QuYWRkKFwiaGFzLWVycm9yXCIpO1xuICAgICAgICAgICAgZm9ybUdyb3VwLmNsYXNzTGlzdC5yZW1vdmUoXCJoYXMtc3VjY2Vzc1wiKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGZvcm1Hcm91cC5jbGFzc0xpc3QucmVtb3ZlKFwiaGFzLWVycm9yXCIpO1xuICAgICAgICBmb3JtR3JvdXAuY2xhc3NMaXN0LmFkZChcImhhcy1zdWNjZXNzXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaGFuZGxlU3VibWl0IChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgdXNlcm5hbWUgPSB0aGlzLnJlZnMudXNlcm5hbWUudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCBwYXNzd29yZCA9IHRoaXMucmVmcy5wYXNzd29yZC52YWx1ZS50cmltKCk7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5yZWZzLmVuZHBvaW50LnZhbHVlLnRyaW0oKTtcbiAgICAgICAgY29uc3QgcmVtZW1iZXJNZSA9IHRoaXMucmVmcy5yZW1lbWJlck1lLmNoZWNrZWQ7XG5cbiAgICAgICAgdmFyIGhhc0Vycm9yID0gdGhpcy5zZXRFcnJvcih0aGlzLnJlZnMudXNlcm5hbWVGb3JtR3JvdXAsICF1c2VybmFtZSk7XG4gICAgICAgIGhhc0Vycm9yIHw9IHRoaXMuc2V0RXJyb3IodGhpcy5yZWZzLnBhc3N3b3JkRm9ybUdyb3VwLCAhcGFzc3dvcmQpO1xuICAgICAgICBoYXNFcnJvciB8PSB0aGlzLnNldEVycm9yKHRoaXMucmVmcy5lbmRwb2ludEZvcm1Hcm91cCwgIWVuZHBvaW50KTtcblxuICAgICAgICBpZiAoIWhhc0Vycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0KHVzZXJuYW1lLCBwYXNzd29yZCwgZW5kcG9pbnQsIHJlbWVtYmVyTWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlICgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZXJyb3IpIHtcbiAgICAgICAgICAgICQodGhpcy5yZWZzLmxvZ2luRm9ybSkuc2hha2UoMywgMTAsIDMwMCk7XG4gICAgICAgICAgICB0aGlzLnNldEVycm9yKHRoaXMucmVmcy51c2VybmFtZUZvcm1Hcm91cCwgdGhpcy5wcm9wcy5lcnJvcik7XG4gICAgICAgICAgICB0aGlzLnNldEVycm9yKHRoaXMucmVmcy5wYXNzd29yZEZvcm1Hcm91cCwgdGhpcy5wcm9wcy5lcnJvcik7XG4gICAgICAgICAgICB0aGlzLnNldEVycm9yKHRoaXMucmVmcy5lbmRwb2ludEZvcm1Hcm91cCwgdGhpcy5wcm9wcy5lcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIgKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZXJyb3IgP1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD1cImxvZ2luRm9ybUVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJnbHlwaGljb24gZ2x5cGhpY29uLWV4Y2xhbWF0aW9uLXNpZ25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+IHsgdGhpcy5wcm9wcy5lcnJvciB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5pbmZvID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhbGVydCBhbGVydC1pbmZvXCIgaWQ9XCJsb2dpbkZvcm1JbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnsgdGhpcy5wcm9wcy5pbmZvIH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzc05hbWU9XCJjb2wtc20tOSBjb2wtc20tb2Zmc2V0LTEgY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIHRleHQtbGVmdCBmb3JtLWhvcml6b250YWwgbG9naW5cIiBvblN1Ym1pdD17dGhpcy5oYW5kbGVTdWJtaXR9IHJlZj1cImxvZ2luRm9ybVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJsb2dpbkZvcm1JbmZvIGxvZ2luRm9ybUVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiIHJlZj1cInVzZXJuYW1lRm9ybUdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXhzLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiByZWY9XCJ1c2VybmFtZVwiIGFyaWEtbGFiZWw9XCJVc2VybmFtZVwiIHBsYWNlaG9sZGVyPVwiVXNlcm5hbWVcIiBhdXRvRm9jdXMgZGVmYXVsdFZhbHVlPXt0aGlzLnByb3BzLnVzZXJuYW1lfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIiByZWY9XCJwYXNzd29yZEZvcm1Hcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC14cy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiIHJlZj1cInBhc3N3b3JkXCIgYXJpYS1sYWJlbD1cIlBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiIHJlZj1cImVuZHBvaW50Rm9ybUdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXhzLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiByZWY9XCJlbmRwb2ludFwiIGFyaWEtbGFiZWw9XCJVUkwgb2YgeW91ciBBbXBhY2hlIGluc3RhbmNlIChlLmcuIGh0dHA6Ly9hbXBhY2hlLmV4YW1wbGUuY29tKVwiIHBsYWNlaG9sZGVyPVwiaHR0cDovL2FtcGFjaGUuZXhhbXBsZS5jb21cIiBkZWZhdWx0VmFsdWU9e3RoaXMucHJvcHMuZW5kcG9pbnR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC14cy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02IGNvbC14cy0xMiBjaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9XCJyZW1lbWJlck1lTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiByZWY9XCJyZW1lbWJlck1lXCIgZGVmYXVsdENoZWNrZWQ9e3RoaXMucHJvcHMucmVtZW1iZXJNZX0gYXJpYS1sYWJlbGxlZGJ5PVwicmVtZW1iZXJNZUxhYmVsXCIgLz4gUmVtZW1iZXIgbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS02IGNvbC1zbS0xMiBzdWJtaXQgdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdFwiIGFyaWEtbGFiZWw9XCJTaWduIGluXCIgZGVmYXVsdFZhbHVlPVwiU2lnbiBpblwiIGRpc2FibGVkPXt0aGlzLnByb3BzLmlzQXV0aGVudGljYXRpbmd9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5Mb2dpbkZvcm0ucHJvcFR5cGVzID0ge1xuICAgIHVzZXJuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGVuZHBvaW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHJlbWVtYmVyTWU6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGlzQXV0aGVudGljYXRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIGVycm9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGluZm86IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9naW4gZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlciAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvZ2luIHRleHQtY2VudGVyIGNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgICAgICAgICAgIDxoMT48aW1nIHNyYz1cIi4vYXBwL2Fzc2V0cy9pbWcvYW1wYWNoZS1ibHVlLnBuZ1wiIGFsdD1cIkFcIi8+bXBhY2hlPC9oMT5cbiAgICAgICAgICAgICAgICA8aHIvPlxuICAgICAgICAgICAgICAgIDxwPldlbGNvbWUgYmFjayBvbiBBbXBhY2hlLCBsZXRcInMgZ28hPC9wPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTkgY29sLXNtLW9mZnNldC0yIGNvbC1tZC02IGNvbC1tZC1vZmZzZXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8TG9naW5Gb3JtIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fSB1c2VybmFtZT17dGhpcy5wcm9wcy51c2VybmFtZX0gZW5kcG9pbnQ9e3RoaXMucHJvcHMuZW5kcG9pbnR9IHJlbWVtYmVyTWU9e3RoaXMucHJvcHMucmVtZW1iZXJNZX0gaXNBdXRoZW50aWNhdGluZz17dGhpcy5wcm9wcy5pc0F1dGhlbnRpY2F0aW5nfSBlcnJvcj17dGhpcy5wcm9wcy5lcnJvcn0gaW5mbz17dGhpcy5wcm9wcy5pbmZvfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5Mb2dpbi5wcm9wVHlwZXMgPSB7XG4gICAgdXNlcm5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZW5kcG9pbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcmVtZW1iZXJNZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgaXNBdXRoZW50aWNhdGluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgZXJyb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaW5mbzogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIGFwcC9jb21wb25lbnRzL0xvZ2luLmpzeFxuICoqLyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFDQTs7O0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUVBO0FBSEE7QUFJQTtBQUNBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBREE7QUFEQTtBQVVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQURBO0FBT0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQURBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQURBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQURBO0FBS0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBREE7QUFLQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBTkE7QUFEQTtBQURBO0FBaEJBO0FBREE7QUFEQTtBQXJCQTtBQTBEQTs7Ozs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQ0E7QUFVQTs7Ozs7Ozs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFKQTtBQVNBOzs7Ozs7QUFaQTtBQUNBO0FBQ0E7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7Iiwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 634 */