UNPKG

apeman-react-sign

Version:
334 lines (295 loc) 28.5 kB
/** * Form for signin * @class ApSigninForm */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApSigninForm = undefined; var _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; }; var _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; }; }(); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _apemanReactForm = require('apeman-react-form'); var _apemanReactField = require('apeman-react-field'); var _apemanReactButton = require('apeman-react-button'); var _apemanReactText = require('apeman-react-text'); var _apemanReactPassword = require('apeman-react-password'); var _apemanReactCheckbox = require('apeman-react-checkbox'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _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; } function _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; } var noop = function noop(e) { return console.log(e); }; /** @lends ApSigninForm */ var ApSigninForm = function (_Component) { _inherits(ApSigninForm, _Component); function ApSigninForm(props) { _classCallCheck(this, ApSigninForm); var _this = _possibleConstructorReturn(this, (ApSigninForm.__proto__ || Object.getPrototypeOf(ApSigninForm)).call(this, props)); var s = _this; s.state = {}; return _this; } _createClass(ApSigninForm, [{ key: 'render', value: function render() { var s = this; var props = s.props; var id = props.id; var values = props.values; var labels = props.labels; var icons = props.icons; var idOf = props.idOf; var onUpdate = props.onUpdate; var _onSubmit = props.onSubmit; var spinning = props.spinning; var errorList = props.errorList; var errorStyle = props.errorStyle; var actions = props.actions; var centered = props.centered; var rememberEnabled = props.rememberEnabled; return _react2.default.createElement( _apemanReactForm.ApForm, { id: id, centered: centered, spinning: spinning, className: (0, _classnames2.default)('ap-signin-form', props.className), style: Object.assign({}, props.style) }, _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, errorList, errorStyle, _react2.default.createElement(ApSigninForm.KeyField, { values: values, labels: labels, idOf: idOf, onUpdate: onUpdate }), _react2.default.createElement(ApSigninForm.PasswordField, { values: values, labels: labels, idOf: idOf, onUpdate: onUpdate }), _react2.default.createElement(ApSigninForm.RememberField, _extends({ labels: labels, idOf: idOf }, { enabled: rememberEnabled, onToggle: actions.toggleRemember })), _react2.default.createElement(ApSigninForm.ButtonField, _extends({ labels: labels, idOf: idOf }, { onSubmit: function onSubmit() { return _onSubmit(s.props.values); } })) ), _react2.default.createElement(ApSigninForm.MenuFieldSet, { actions: props.menu, labels: labels, idOf: idOf }), _react2.default.createElement(ApSigninForm.ButtonFieldSet, { actions: props.buttons, labels: labels, icons: icons, idOf: idOf }) ); } }]); return ApSigninForm; }(_react.Component); Object.assign(ApSigninForm, { // -------------------- // Specs // -------------------- propTypes: { labels: _react.PropTypes.object, icons: _react.PropTypes.object, menu: _react.PropTypes.objectOf(_react.PropTypes.func), buttons: _react.PropTypes.objectOf(_react.PropTypes.func), rememberEnabled: _react.PropTypes.bool }, defaultProps: { labels: { key: 'Username or Email', password: 'Password', remember: 'Remember Me', submit: 'Sign In', signup: 'Sign Up', recover: 'Forget Password?', twitter: 'Sign in with Twitter', google: 'Sign in with Google', facebook: 'Sign in with Facebook' }, icons: { facebook: 'fa fa-facebook', twitter: 'fa fa-twitter', google: 'fa fa-google' }, actions: { toggleRemember: noop }, menu: null, buttons: null, rememberEnabled: false }, // ------------------ // Sub Components // ------------------ KeyField: function KeyField(_ref) { var values = _ref.values; var labels = _ref.labels; var idOf = _ref.idOf; var onUpdate = _ref.onUpdate; var name = 'key'; return _react2.default.createElement( _apemanReactField.ApField, null, _react2.default.createElement( _apemanReactField.ApFieldLabel, { htmlFor: idOf(name) }, labels[[name]] ), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactText.ApText, { autoFocus: true, id: idOf(name), name: name, value: values[name], onChange: function onChange(e) { return onUpdate(_defineProperty({}, name, e.target.value)); } }) ) ); }, PasswordField: function PasswordField(_ref2) { var values = _ref2.values; var labels = _ref2.labels; var idOf = _ref2.idOf; var onUpdate = _ref2.onUpdate; var name = 'password'; return _react2.default.createElement( _apemanReactField.ApField, null, _react2.default.createElement( _apemanReactField.ApFieldLabel, { htmlFor: idOf(name) }, labels[name] ), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactPassword.ApPassword, { id: idOf(name), value: values[name], name: name, onChange: function onChange(e) { return onUpdate(_defineProperty({}, name, e.target.value)); } }) ) ); }, RememberField: function RememberField(_ref3) { var labels = _ref3.labels; var idOf = _ref3.idOf; var enabled = _ref3.enabled; var onToggle = _ref3.onToggle; var name = 'remember'; return _react2.default.createElement( _apemanReactField.ApField, { className: 'ap-signin-form-sub-field' }, _react2.default.createElement(_apemanReactField.ApFieldLabel, { htmlFor: idOf(name) }), _react2.default.createElement( _apemanReactField.ApFieldValue, null, _react2.default.createElement(_apemanReactCheckbox.ApCheckbox, { id: idOf(name), value: 'YES', checked: enabled, title: labels[name], name: name, onChange: function onChange() { return onToggle(!enabled); } }) ) ); }, ButtonField: function ButtonField(_ref4) { var labels = _ref4.labels; var idOf = _ref4.idOf; var onSubmit = _ref4.onSubmit; var name = 'submit'; return _react2.default.createElement( _apemanReactField.ApField, { center: true, className: 'ap-signin-form-button-field' }, _react2.default.createElement( _apemanReactButton.ApButton, { wide: true, primary: true, onTap: onSubmit, id: idOf(name) }, labels[name] ) ); }, MenuFieldSet: function MenuFieldSet(_ref5) { var actions = _ref5.actions; var labels = _ref5.labels; var idOf = _ref5.idOf; if (!actions) { return null; } return _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, _react2.default.createElement( _apemanReactField.ApField, { center: true, className: 'ap-signin-form-action-field' }, _react2.default.createElement( _apemanReactButton.ApCellButtonRow, { className: 'ap-signin-form-action-button-row' }, Object.keys(actions).map(function (name) { return _react2.default.createElement(_apemanReactButton.ApCellButton, { id: idOf(name), key: name, onTap: function onTap(e) { return actions[name](); }, text: labels[name] }); }) ) ) ); }, ButtonFieldSet: function ButtonFieldSet(_ref6) { var actions = _ref6.actions; var labels = _ref6.labels; var icons = _ref6.icons; var idOf = _ref6.idOf; if (!actions) { return null; } return _react2.default.createElement( _apemanReactField.ApFieldSet, { plain: true }, _react2.default.createElement( _apemanReactField.ApField, { className: 'ap-signin-form-action-field' }, _react2.default.createElement( _apemanReactButton.ApIconButtonRow, { className: 'ap-signin-form-action-button-row' }, Object.keys(actions).map(function (name) { return _react2.default.createElement(_apemanReactButton.ApIconButton, { id: idOf(name), key: name, onTap: function onTap(e) { return actions[name](); }, icon: icons[name], text: labels[name] }); }) ) ) ); } }); exports.ApSigninForm = ApSigninForm; exports.default = (0, _apemanReactForm.withForm)(ApSigninForm); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3NpZ25pbl9mb3JtLmpzeCJdLCJuYW1lcyI6WyJub29wIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJBcFNpZ25pbkZvcm0iLCJwcm9wcyIsInMiLCJzdGF0ZSIsImlkIiwidmFsdWVzIiwibGFiZWxzIiwiaWNvbnMiLCJpZE9mIiwib25VcGRhdGUiLCJvblN1Ym1pdCIsInNwaW5uaW5nIiwiZXJyb3JMaXN0IiwiZXJyb3JTdHlsZSIsImFjdGlvbnMiLCJjZW50ZXJlZCIsInJlbWVtYmVyRW5hYmxlZCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImFzc2lnbiIsInN0eWxlIiwidG9nZ2xlUmVtZW1iZXIiLCJtZW51IiwiYnV0dG9ucyIsInByb3BUeXBlcyIsIm9iamVjdCIsIm9iamVjdE9mIiwiZnVuYyIsImJvb2wiLCJkZWZhdWx0UHJvcHMiLCJrZXkiLCJwYXNzd29yZCIsInJlbWVtYmVyIiwic3VibWl0Iiwic2lnbnVwIiwicmVjb3ZlciIsInR3aXR0ZXIiLCJnb29nbGUiLCJmYWNlYm9vayIsIktleUZpZWxkIiwibmFtZSIsInRhcmdldCIsInZhbHVlIiwiUGFzc3dvcmRGaWVsZCIsIlJlbWVtYmVyRmllbGQiLCJlbmFibGVkIiwib25Ub2dnbGUiLCJCdXR0b25GaWVsZCIsIk1lbnVGaWVsZFNldCIsImtleXMiLCJtYXAiLCJCdXR0b25GaWVsZFNldCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBS0E7Ozs7Ozs7Ozs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOztBQUdBOztBQUdBOztBQUdBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxPQUFPLFNBQVBBLElBQU8sQ0FBQ0MsQ0FBRDtBQUFBLFNBQU9DLFFBQVFDLEdBQVIsQ0FBWUYsQ0FBWixDQUFQO0FBQUEsQ0FBYjs7QUFFQTs7SUFDTUcsWTs7O0FBQ0osd0JBQWFDLEtBQWIsRUFBb0I7QUFBQTs7QUFBQSw0SEFDWkEsS0FEWTs7QUFFbEIsUUFBTUMsU0FBTjtBQUNBQSxNQUFFQyxLQUFGLEdBQVUsRUFBVjtBQUhrQjtBQUluQjs7Ozs2QkFFUztBQUNSLFVBQU1ELElBQUksSUFBVjtBQURRLFVBRUZELEtBRkUsR0FFUUMsQ0FGUixDQUVGRCxLQUZFO0FBQUEsVUFJTkcsRUFKTSxHQWlCSkgsS0FqQkksQ0FJTkcsRUFKTTtBQUFBLFVBS05DLE1BTE0sR0FpQkpKLEtBakJJLENBS05JLE1BTE07QUFBQSxVQU1OQyxNQU5NLEdBaUJKTCxLQWpCSSxDQU1OSyxNQU5NO0FBQUEsVUFPTkMsS0FQTSxHQWlCSk4sS0FqQkksQ0FPTk0sS0FQTTtBQUFBLFVBUU5DLElBUk0sR0FpQkpQLEtBakJJLENBUU5PLElBUk07QUFBQSxVQVNOQyxRQVRNLEdBaUJKUixLQWpCSSxDQVNOUSxRQVRNO0FBQUEsVUFVTkMsU0FWTSxHQWlCSlQsS0FqQkksQ0FVTlMsUUFWTTtBQUFBLFVBV05DLFFBWE0sR0FpQkpWLEtBakJJLENBV05VLFFBWE07QUFBQSxVQVlOQyxTQVpNLEdBaUJKWCxLQWpCSSxDQVlOVyxTQVpNO0FBQUEsVUFhTkMsVUFiTSxHQWlCSlosS0FqQkksQ0FhTlksVUFiTTtBQUFBLFVBY05DLE9BZE0sR0FpQkpiLEtBakJJLENBY05hLE9BZE07QUFBQSxVQWVOQyxRQWZNLEdBaUJKZCxLQWpCSSxDQWVOYyxRQWZNO0FBQUEsVUFnQk5DLGVBaEJNLEdBaUJKZixLQWpCSSxDQWdCTmUsZUFoQk07O0FBa0JSLGFBQ0U7QUFBQTtBQUFBLFVBQVEsSUFBS1osRUFBYjtBQUNRLG9CQUFXVyxRQURuQjtBQUVRLG9CQUFXSixRQUZuQjtBQUdRLHFCQUFZLDBCQUFXLGdCQUFYLEVBQTZCVixNQUFNZ0IsU0FBbkMsQ0FIcEI7QUFJUSxpQkFBUUMsT0FBT0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JsQixNQUFNbUIsS0FBeEI7QUFKaEI7QUFNRTtBQUFBO0FBQUEsWUFBWSxXQUFaO0FBQ0lSLG1CQURKO0FBRUlDLG9CQUZKO0FBR0Usd0NBQUMsWUFBRCxDQUFjLFFBQWQsRUFBNEIsRUFBRVIsY0FBRixFQUFVQyxjQUFWLEVBQWtCRSxVQUFsQixFQUF3QkMsa0JBQXhCLEVBQTVCLENBSEY7QUFJRSx3Q0FBQyxZQUFELENBQWMsYUFBZCxFQUFpQyxFQUFFSixjQUFGLEVBQVVDLGNBQVYsRUFBa0JFLFVBQWxCLEVBQXdCQyxrQkFBeEIsRUFBakMsQ0FKRjtBQUtFLHdDQUFDLFlBQUQsQ0FBYyxhQUFkLFdBQWlDLEVBQUVILGNBQUYsRUFBVUUsVUFBVixFQUFqQztBQUM0QixxQkFBVVEsZUFEdEM7QUFFNEIsc0JBQVdGLFFBQVFPO0FBRi9DLGFBTEY7QUFTRSx3Q0FBQyxZQUFELENBQWMsV0FBZCxXQUErQixFQUFFZixjQUFGLEVBQVVFLFVBQVYsRUFBL0I7QUFDMEIsc0JBQVc7QUFBQSxxQkFBTUUsVUFBU1IsRUFBRUQsS0FBRixDQUFRSSxNQUFqQixDQUFOO0FBQUEsYUFEckM7QUFURixTQU5GO0FBa0JFLHNDQUFDLFlBQUQsQ0FBYyxZQUFkLElBQTJCLFNBQVVKLE1BQU1xQixJQUEzQztBQUMyQixrQkFBU2hCLE1BRHBDO0FBRTJCLGdCQUFPRTtBQUZsQyxVQWxCRjtBQXNCRSxzQ0FBQyxZQUFELENBQWMsY0FBZCxJQUE2QixTQUFVUCxNQUFNc0IsT0FBN0M7QUFDNkIsa0JBQVNqQixNQUR0QztBQUU2QixpQkFBUUMsS0FGckM7QUFHNkIsZ0JBQU9DLElBSHBDO0FBdEJGLE9BREY7QUE2QkQ7Ozs7OztBQUdIVSxPQUFPQyxNQUFQLENBQWNuQixZQUFkLEVBQTRCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBd0IsYUFBVztBQUNUbEIsWUFBUSxpQkFBTW1CLE1BREw7QUFFVGxCLFdBQU8saUJBQU1rQixNQUZKO0FBR1RILFVBQU0saUJBQU1JLFFBQU4sQ0FBZSxpQkFBTUMsSUFBckIsQ0FIRztBQUlUSixhQUFTLGlCQUFNRyxRQUFOLENBQWUsaUJBQU1DLElBQXJCLENBSkE7QUFLVFgscUJBQWlCLGlCQUFNWTtBQUxkLEdBSmU7O0FBWTFCQyxnQkFBYztBQUNadkIsWUFBUTtBQUNOd0IsV0FBSyxtQkFEQztBQUVOQyxnQkFBVSxVQUZKO0FBR05DLGdCQUFVLGFBSEo7QUFJTkMsY0FBUSxTQUpGO0FBS05DLGNBQVEsU0FMRjtBQU1OQyxlQUFTLGtCQU5IO0FBT05DLGVBQVMsc0JBUEg7QUFRTkMsY0FBUSxxQkFSRjtBQVNOQyxnQkFBVTtBQVRKLEtBREk7QUFZWi9CLFdBQU87QUFDTCtCLGdCQUFVLGdCQURMO0FBRUxGLGVBQVMsZUFGSjtBQUdMQyxjQUFRO0FBSEgsS0FaSztBQWlCWnZCLGFBQVM7QUFDUE8sc0JBQWdCekI7QUFEVCxLQWpCRztBQW9CWjBCLFVBQU0sSUFwQk07QUFxQlpDLGFBQVMsSUFyQkc7QUFzQlpQLHFCQUFpQjtBQXRCTCxHQVpZOztBQXFDMUI7QUFDQTtBQUNBOztBQUVBdUIsVUF6QzBCLDBCQXlDb0I7QUFBQSxRQUFsQ2xDLE1BQWtDLFFBQWxDQSxNQUFrQztBQUFBLFFBQTFCQyxNQUEwQixRQUExQkEsTUFBMEI7QUFBQSxRQUFsQkUsSUFBa0IsUUFBbEJBLElBQWtCO0FBQUEsUUFBWkMsUUFBWSxRQUFaQSxRQUFZOztBQUM1QyxRQUFJK0IsT0FBTyxLQUFYO0FBQ0EsV0FDRTtBQUFBO0FBQUE7QUFDRTtBQUFBO0FBQUEsVUFBYyxTQUFVaEMsS0FBS2dDLElBQUwsQ0FBeEI7QUFDSWxDLGVBQVEsQ0FBRWtDLElBQUYsQ0FBUjtBQURKLE9BREY7QUFJRTtBQUFBO0FBQUE7QUFDRSxpRUFBUSxlQUFSO0FBQ1EsY0FBS2hDLEtBQUtnQyxJQUFMLENBRGI7QUFFUSxnQkFBT0EsSUFGZjtBQUdRLGlCQUFRbkMsT0FBUW1DLElBQVIsQ0FIaEI7QUFJUSxvQkFBVyxrQkFBQzNDLENBQUQ7QUFBQSxtQkFBT1ksNkJBQVkrQixJQUFaLEVBQW1CM0MsRUFBRTRDLE1BQUYsQ0FBU0MsS0FBNUIsRUFBUDtBQUFBO0FBSm5CO0FBREY7QUFKRixLQURGO0FBZUQsR0ExRHlCO0FBNEQxQkMsZUE1RDBCLGdDQTREeUI7QUFBQSxRQUFsQ3RDLE1BQWtDLFNBQWxDQSxNQUFrQztBQUFBLFFBQTFCQyxNQUEwQixTQUExQkEsTUFBMEI7QUFBQSxRQUFsQkUsSUFBa0IsU0FBbEJBLElBQWtCO0FBQUEsUUFBWkMsUUFBWSxTQUFaQSxRQUFZOztBQUNqRCxRQUFJK0IsT0FBTyxVQUFYO0FBQ0EsV0FDRTtBQUFBO0FBQUE7QUFDRTtBQUFBO0FBQUEsVUFBYyxTQUFVaEMsS0FBS2dDLElBQUwsQ0FBeEI7QUFDSWxDLGVBQVFrQyxJQUFSO0FBREosT0FERjtBQUlFO0FBQUE7QUFBQTtBQUNFLHlFQUFZLElBQUtoQyxLQUFLZ0MsSUFBTCxDQUFqQjtBQUNZLGlCQUFRbkMsT0FBUW1DLElBQVIsQ0FEcEI7QUFFWSxnQkFBT0EsSUFGbkI7QUFHWSxvQkFBVyxrQkFBQzNDLENBQUQ7QUFBQSxtQkFBT1ksNkJBQVkrQixJQUFaLEVBQW1CM0MsRUFBRTRDLE1BQUYsQ0FBU0MsS0FBNUIsRUFBUDtBQUFBO0FBSHZCO0FBREY7QUFKRixLQURGO0FBY0QsR0E1RXlCO0FBOEUxQkUsZUE5RTBCLGdDQThFMEI7QUFBQSxRQUFuQ3RDLE1BQW1DLFNBQW5DQSxNQUFtQztBQUFBLFFBQTNCRSxJQUEyQixTQUEzQkEsSUFBMkI7QUFBQSxRQUFyQnFDLE9BQXFCLFNBQXJCQSxPQUFxQjtBQUFBLFFBQVpDLFFBQVksU0FBWkEsUUFBWTs7QUFDbEQsUUFBSU4sT0FBTyxVQUFYO0FBQ0EsV0FDRTtBQUFBO0FBQUEsUUFBUyxXQUFVLDBCQUFuQjtBQUNFLHNFQUFjLFNBQVVoQyxLQUFLZ0MsSUFBTCxDQUF4QixHQURGO0FBR0U7QUFBQTtBQUFBO0FBQ0UseUVBQVksSUFBS2hDLEtBQUtnQyxJQUFMLENBQWpCO0FBQ1ksaUJBQU0sS0FEbEI7QUFFWSxtQkFBVUssT0FGdEI7QUFHWSxpQkFBUXZDLE9BQVFrQyxJQUFSLENBSHBCO0FBSVksZ0JBQU9BLElBSm5CO0FBS1ksb0JBQVc7QUFBQSxtQkFBTU0sU0FBUyxDQUFDRCxPQUFWLENBQU47QUFBQTtBQUx2QjtBQURGO0FBSEYsS0FERjtBQWVELEdBL0Z5QjtBQWlHMUJFLGFBakcwQiw4QkFpR2U7QUFBQSxRQUExQnpDLE1BQTBCLFNBQTFCQSxNQUEwQjtBQUFBLFFBQWxCRSxJQUFrQixTQUFsQkEsSUFBa0I7QUFBQSxRQUFaRSxRQUFZLFNBQVpBLFFBQVk7O0FBQ3ZDLFFBQUk4QixPQUFPLFFBQVg7QUFDQSxXQUNFO0FBQUE7QUFBQSxRQUFTLFlBQVQ7QUFDUyxtQkFBVSw2QkFEbkI7QUFFRTtBQUFBO0FBQUEsVUFBVSxVQUFWO0FBQ1UsdUJBRFY7QUFFVSxpQkFBUTlCLFFBRmxCO0FBR1UsY0FBS0YsS0FBS2dDLElBQUw7QUFIZjtBQUlHbEMsZUFBUWtDLElBQVI7QUFKSDtBQUZGLEtBREY7QUFVRCxHQTdHeUI7QUErRzFCUSxjQS9HMEIsK0JBK0dlO0FBQUEsUUFBekJsQyxPQUF5QixTQUF6QkEsT0FBeUI7QUFBQSxRQUFoQlIsTUFBZ0IsU0FBaEJBLE1BQWdCO0FBQUEsUUFBUkUsSUFBUSxTQUFSQSxJQUFROztBQUN2QyxRQUFJLENBQUNNLE9BQUwsRUFBYztBQUNaLGFBQU8sSUFBUDtBQUNEO0FBQ0QsV0FDRTtBQUFBO0FBQUEsUUFBWSxXQUFaO0FBQ0U7QUFBQTtBQUFBLFVBQVMsWUFBVDtBQUNTLHFCQUFVLDZCQURuQjtBQUVFO0FBQUE7QUFBQSxZQUFpQixXQUFVLGtDQUEzQjtBQUVJSSxpQkFBTytCLElBQVAsQ0FBWW5DLE9BQVosRUFBcUJvQyxHQUFyQixDQUF5QixVQUFDVixJQUFEO0FBQUEsbUJBQ3ZCLGlFQUFjLElBQUtoQyxLQUFLZ0MsSUFBTCxDQUFuQjtBQUNjLG1CQUFNQSxJQURwQjtBQUVjLHFCQUFRLGVBQUMzQyxDQUFEO0FBQUEsdUJBQU9pQixRQUFTMEIsSUFBVCxHQUFQO0FBQUEsZUFGdEI7QUFHYyxvQkFBT2xDLE9BQVFrQyxJQUFSLENBSHJCLEdBRHVCO0FBQUEsV0FBekI7QUFGSjtBQUZGO0FBREYsS0FERjtBQWlCRCxHQXBJeUI7QUFzSTFCVyxnQkF0STBCLGlDQXNJd0I7QUFBQSxRQUFoQ3JDLE9BQWdDLFNBQWhDQSxPQUFnQztBQUFBLFFBQXZCUixNQUF1QixTQUF2QkEsTUFBdUI7QUFBQSxRQUFmQyxLQUFlLFNBQWZBLEtBQWU7QUFBQSxRQUFSQyxJQUFRLFNBQVJBLElBQVE7O0FBQ2hELFFBQUksQ0FBQ00sT0FBTCxFQUFjO0FBQ1osYUFBTyxJQUFQO0FBQ0Q7QUFDRCxXQUNFO0FBQUE7QUFBQSxRQUFZLFdBQVo7QUFDRTtBQUFBO0FBQUEsVUFBUyxXQUFVLDZCQUFuQjtBQUNFO0FBQUE7QUFBQSxZQUFpQixXQUFVLGtDQUEzQjtBQUVJSSxpQkFBTytCLElBQVAsQ0FBWW5DLE9BQVosRUFBcUJvQyxHQUFyQixDQUF5QixVQUFDVixJQUFEO0FBQUEsbUJBQ3ZCLGlFQUFjLElBQUtoQyxLQUFLZ0MsSUFBTCxDQUFuQjtBQUNjLG1CQUFNQSxJQURwQjtBQUVjLHFCQUFRLGVBQUMzQyxDQUFEO0FBQUEsdUJBQU9pQixRQUFTMEIsSUFBVCxHQUFQO0FBQUEsZUFGdEI7QUFHYyxvQkFBT2pDLE1BQU9pQyxJQUFQLENBSHJCO0FBSWMsb0JBQU9sQyxPQUFRa0MsSUFBUixDQUpyQixHQUR1QjtBQUFBLFdBQXpCO0FBRko7QUFERjtBQURGLEtBREY7QUFpQkQ7QUEzSnlCLENBQTVCOztRQThKU3hDLFksR0FBQUEsWTtrQkFDTSwrQkFBU0EsWUFBVCxDIiwiZmlsZSI6ImFwX3NpZ25pbl9mb3JtLmpzeCIsInNvdXJjZVJvb3QiOiJsaWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm0gZm9yIHNpZ25pblxuICogQGNsYXNzIEFwU2lnbmluRm9ybVxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBQcm9wVHlwZXMgYXMgdHlwZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQge1xuICBBcEZvcm0sIHdpdGhGb3JtXG59IGZyb20gJ2FwZW1hbi1yZWFjdC1mb3JtJ1xuaW1wb3J0IHtcbiAgQXBGaWVsZFNldCwgQXBGaWVsZCwgQXBGaWVsZExhYmVsLCBBcEZpZWxkVmFsdWVcbn0gZnJvbSAnYXBlbWFuLXJlYWN0LWZpZWxkJ1xuaW1wb3J0IHtcbiAgQXBCdXR0b24sIEFwQ2VsbEJ1dHRvbiwgQXBDZWxsQnV0dG9uUm93LCBBcEljb25CdXR0b24sIEFwSWNvbkJ1dHRvblJvd1xufSBmcm9tICdhcGVtYW4tcmVhY3QtYnV0dG9uJ1xuaW1wb3J0IHsgQXBUZXh0IH0gZnJvbSAnYXBlbWFuLXJlYWN0LXRleHQnXG5pbXBvcnQgeyBBcFBhc3N3b3JkIH0gZnJvbSAnYXBlbWFuLXJlYWN0LXBhc3N3b3JkJ1xuaW1wb3J0IHsgQXBDaGVja2JveCB9IGZyb20gJ2FwZW1hbi1yZWFjdC1jaGVja2JveCdcblxuY29uc3Qgbm9vcCA9IChlKSA9PiBjb25zb2xlLmxvZyhlKVxuXG4vKiogQGxlbmRzIEFwU2lnbmluRm9ybSAqL1xuY2xhc3MgQXBTaWduaW5Gb3JtIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IgKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBzLnN0YXRlID0ge31cbiAgfVxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGxldCB7XG4gICAgICBpZCxcbiAgICAgIHZhbHVlcyxcbiAgICAgIGxhYmVscyxcbiAgICAgIGljb25zLFxuICAgICAgaWRPZixcbiAgICAgIG9uVXBkYXRlLFxuICAgICAgb25TdWJtaXQsXG4gICAgICBzcGlubmluZyxcbiAgICAgIGVycm9yTGlzdCxcbiAgICAgIGVycm9yU3R5bGUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgY2VudGVyZWQsXG4gICAgICByZW1lbWJlckVuYWJsZWRcbiAgICB9ID0gcHJvcHNcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRm9ybSBpZD17IGlkIH1cbiAgICAgICAgICAgICAgY2VudGVyZWQ9eyBjZW50ZXJlZCB9XG4gICAgICAgICAgICAgIHNwaW5uaW5nPXsgc3Bpbm5pbmcgfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9eyBjbGFzc25hbWVzKCdhcC1zaWduaW4tZm9ybScsIHByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgICAgIHN0eWxlPXsgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMuc3R5bGUpIH1cbiAgICAgID5cbiAgICAgICAgPEFwRmllbGRTZXQgcGxhaW4+XG4gICAgICAgICAgeyBlcnJvckxpc3QgfVxuICAgICAgICAgIHsgZXJyb3JTdHlsZSB9XG4gICAgICAgICAgPEFwU2lnbmluRm9ybS5LZXlGaWVsZCB7IC4uLnsgdmFsdWVzLCBsYWJlbHMsIGlkT2YsIG9uVXBkYXRlIH0gfS8+XG4gICAgICAgICAgPEFwU2lnbmluRm9ybS5QYXNzd29yZEZpZWxkIHsgLi4ueyB2YWx1ZXMsIGxhYmVscywgaWRPZiwgb25VcGRhdGUgfSB9Lz5cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLlJlbWVtYmVyRmllbGQgeyAuLi57IGxhYmVscywgaWRPZiB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17IHJlbWVtYmVyRW5hYmxlZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVG9nZ2xlPXsgYWN0aW9ucy50b2dnbGVSZW1lbWJlciB9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8QXBTaWduaW5Gb3JtLkJ1dHRvbkZpZWxkIHsgLi4ueyBsYWJlbHMsIGlkT2YgfSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17ICgpID0+IG9uU3VibWl0KHMucHJvcHMudmFsdWVzKSB9Lz5cbiAgICAgICAgPC9BcEZpZWxkU2V0PlxuICAgICAgICA8QXBTaWduaW5Gb3JtLk1lbnVGaWVsZFNldCBhY3Rpb25zPXsgcHJvcHMubWVudSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscz17IGxhYmVscyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkT2Y9eyBpZE9mIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEFwU2lnbmluRm9ybS5CdXR0b25GaWVsZFNldCBhY3Rpb25zPXsgcHJvcHMuYnV0dG9ucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzPXsgbGFiZWxzIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29ucz17IGljb25zIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZE9mPXsgaWRPZiB9Lz5cbiAgICAgIDwvQXBGb3JtPlxuICAgIClcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKEFwU2lnbmluRm9ybSwge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBwcm9wVHlwZXM6IHtcbiAgICBsYWJlbHM6IHR5cGVzLm9iamVjdCxcbiAgICBpY29uczogdHlwZXMub2JqZWN0LFxuICAgIG1lbnU6IHR5cGVzLm9iamVjdE9mKHR5cGVzLmZ1bmMpLFxuICAgIGJ1dHRvbnM6IHR5cGVzLm9iamVjdE9mKHR5cGVzLmZ1bmMpLFxuICAgIHJlbWVtYmVyRW5hYmxlZDogdHlwZXMuYm9vbFxuICB9LFxuXG4gIGRlZmF1bHRQcm9wczoge1xuICAgIGxhYmVsczoge1xuICAgICAga2V5OiAnVXNlcm5hbWUgb3IgRW1haWwnLFxuICAgICAgcGFzc3dvcmQ6ICdQYXNzd29yZCcsXG4gICAgICByZW1lbWJlcjogJ1JlbWVtYmVyIE1lJyxcbiAgICAgIHN1Ym1pdDogJ1NpZ24gSW4nLFxuICAgICAgc2lnbnVwOiAnU2lnbiBVcCcsXG4gICAgICByZWNvdmVyOiAnRm9yZ2V0IFBhc3N3b3JkPycsXG4gICAgICB0d2l0dGVyOiAnU2lnbiBpbiB3aXRoIFR3aXR0ZXInLFxuICAgICAgZ29vZ2xlOiAnU2lnbiBpbiB3aXRoIEdvb2dsZScsXG4gICAgICBmYWNlYm9vazogJ1NpZ24gaW4gd2l0aCBGYWNlYm9vaydcbiAgICB9LFxuICAgIGljb25zOiB7XG4gICAgICBmYWNlYm9vazogJ2ZhIGZhLWZhY2Vib29rJyxcbiAgICAgIHR3aXR0ZXI6ICdmYSBmYS10d2l0dGVyJyxcbiAgICAgIGdvb2dsZTogJ2ZhIGZhLWdvb2dsZSdcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHRvZ2dsZVJlbWVtYmVyOiBub29wXG4gICAgfSxcbiAgICBtZW51OiBudWxsLFxuICAgIGJ1dHRvbnM6IG51bGwsXG4gICAgcmVtZW1iZXJFbmFibGVkOiBmYWxzZVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTdWIgQ29tcG9uZW50c1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuICBLZXlGaWVsZCAoeyB2YWx1ZXMsIGxhYmVscywgaWRPZiwgb25VcGRhdGUgfSkge1xuICAgIGxldCBuYW1lID0gJ2tleSdcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRmllbGQ+XG4gICAgICAgIDxBcEZpZWxkTGFiZWwgaHRtbEZvcj17IGlkT2YobmFtZSkgfT5cbiAgICAgICAgICB7IGxhYmVsc1sgWyBuYW1lIF0gXSB9XG4gICAgICAgIDwvQXBGaWVsZExhYmVsPlxuICAgICAgICA8QXBGaWVsZFZhbHVlPlxuICAgICAgICAgIDxBcFRleHQgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBpZD17IGlkT2YobmFtZSkgfVxuICAgICAgICAgICAgICAgICAgbmFtZT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9eyB2YWx1ZXNbIG5hbWUgXSB9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17IChlKSA9PiBvblVwZGF0ZSh7IFtuYW1lXTogZS50YXJnZXQudmFsdWUgfSkgfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQXBGaWVsZFZhbHVlPlxuICAgICAgPC9BcEZpZWxkPlxuICAgIClcbiAgfSxcblxuICBQYXNzd29yZEZpZWxkICh7IHZhbHVlcywgbGFiZWxzLCBpZE9mLCBvblVwZGF0ZSB9KSB7XG4gICAgbGV0IG5hbWUgPSAncGFzc3dvcmQnXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkPlxuICAgICAgICA8QXBGaWVsZExhYmVsIGh0bWxGb3I9eyBpZE9mKG5hbWUpIH0+XG4gICAgICAgICAgeyBsYWJlbHNbIG5hbWUgXSB9XG4gICAgICAgIDwvQXBGaWVsZExhYmVsPlxuICAgICAgICA8QXBGaWVsZFZhbHVlPlxuICAgICAgICAgIDxBcFBhc3N3b3JkIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyB2YWx1ZXNbIG5hbWUgXSB9XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsgKGUpID0+IG9uVXBkYXRlKHsgW25hbWVdOiBlLnRhcmdldC52YWx1ZSB9KSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIFJlbWVtYmVyRmllbGQgKHsgbGFiZWxzLCBpZE9mLCBlbmFibGVkLCBvblRvZ2dsZSB9KSB7XG4gICAgbGV0IG5hbWUgPSAncmVtZW1iZXInXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcEZpZWxkIGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tc3ViLWZpZWxkJz5cbiAgICAgICAgPEFwRmllbGRMYWJlbCBodG1sRm9yPXsgaWRPZihuYW1lKSB9PlxuICAgICAgICA8L0FwRmllbGRMYWJlbD5cbiAgICAgICAgPEFwRmllbGRWYWx1ZT5cbiAgICAgICAgICA8QXBDaGVja2JveCBpZD17IGlkT2YobmFtZSkgfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPSdZRVMnXG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17IGVuYWJsZWQgfVxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXsgbGFiZWxzWyBuYW1lIF0gfVxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU9eyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17ICgpID0+IG9uVG9nZ2xlKCFlbmFibGVkKSB9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9BcEZpZWxkVmFsdWU+XG4gICAgICA8L0FwRmllbGQ+XG4gICAgKVxuICB9LFxuXG4gIEJ1dHRvbkZpZWxkICh7IGxhYmVscywgaWRPZiwgb25TdWJtaXQgfSkge1xuICAgIGxldCBuYW1lID0gJ3N1Ym1pdCdcbiAgICByZXR1cm4gKFxuICAgICAgPEFwRmllbGQgY2VudGVyXG4gICAgICAgICAgICAgICBjbGFzc05hbWU9J2FwLXNpZ25pbi1mb3JtLWJ1dHRvbi1maWVsZCc+XG4gICAgICAgIDxBcEJ1dHRvbiB3aWRlXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5XG4gICAgICAgICAgICAgICAgICBvblRhcD17IG9uU3VibWl0IH1cbiAgICAgICAgICAgICAgICAgIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgID57IGxhYmVsc1sgbmFtZSBdIH08L0FwQnV0dG9uPlxuICAgICAgPC9BcEZpZWxkPlxuICAgIClcbiAgfSxcblxuICBNZW51RmllbGRTZXQgKHsgYWN0aW9ucywgbGFiZWxzLCBpZE9mIH0pIHtcbiAgICBpZiAoIWFjdGlvbnMpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgPEFwRmllbGQgY2VudGVyXG4gICAgICAgICAgICAgICAgIGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tYWN0aW9uLWZpZWxkJz5cbiAgICAgICAgICA8QXBDZWxsQnV0dG9uUm93IGNsYXNzTmFtZT0nYXAtc2lnbmluLWZvcm0tYWN0aW9uLWJ1dHRvbi1yb3cnPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhhY3Rpb25zKS5tYXAoKG5hbWUpID0+IChcbiAgICAgICAgICAgICAgICA8QXBDZWxsQnV0dG9uIGlkPXsgaWRPZihuYW1lKSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9eyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVGFwPXsgKGUpID0+IGFjdGlvbnNbIG5hbWUgXSgpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9eyBsYWJlbHNbIG5hbWUgXSB9Lz5cbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L0FwQ2VsbEJ1dHRvblJvdz5cbiAgICAgICAgPC9BcEZpZWxkPlxuICAgICAgPC9BcEZpZWxkU2V0PlxuICAgIClcbiAgfSxcblxuICBCdXR0b25GaWVsZFNldCAoeyBhY3Rpb25zLCBsYWJlbHMsIGljb25zLCBpZE9mIH0pIHtcbiAgICBpZiAoIWFjdGlvbnMpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QXBGaWVsZFNldCBwbGFpbj5cbiAgICAgICAgPEFwRmllbGQgY2xhc3NOYW1lPSdhcC1zaWduaW4tZm9ybS1hY3Rpb24tZmllbGQnPlxuICAgICAgICAgIDxBcEljb25CdXR0b25Sb3cgY2xhc3NOYW1lPSdhcC1zaWduaW4tZm9ybS1hY3Rpb24tYnV0dG9uLXJvdyc+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnMpLm1hcCgobmFtZSkgPT4gKFxuICAgICAgICAgICAgICAgIDxBcEljb25CdXR0b24gaWQ9eyBpZE9mKG5hbWUpIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UYXA9eyAoZSkgPT4gYWN0aW9uc1sgbmFtZSBdKCkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17IGljb25zWyBuYW1lIF0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD17IGxhYmVsc1sgbmFtZSBdIH0vPlxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvQXBJY29uQnV0dG9uUm93PlxuICAgICAgICA8L0FwRmllbGQ+XG4gICAgICA8L0FwRmllbGRTZXQ+XG4gICAgKVxuICB9XG59KVxuXG5leHBvcnQgeyBBcFNpZ25pbkZvcm0gfVxuZXhwb3J0IGRlZmF1bHQgd2l0aEZvcm0oQXBTaWduaW5Gb3JtKVxuIl19