Browse Source

wip user cp, username changes list

Rafał Pitoń 9 years ago
parent
commit
05bf38fdb6
48 changed files with 1285 additions and 56 deletions
  1. 1 1
      frontend/src/components/change-avatar/crop.js
  2. 1 1
      frontend/src/components/change-avatar/gallery.js
  3. 1 1
      frontend/src/components/change-avatar/index.js
  4. 1 1
      frontend/src/components/change-avatar/root.js
  5. 1 1
      frontend/src/components/change-avatar/upload.js
  6. 6 0
      frontend/src/components/form.js
  7. 27 0
      frontend/src/components/li.js
  8. 161 0
      frontend/src/components/options/change-username.js
  9. 168 0
      frontend/src/components/options/forum-options.js
  10. 44 0
      frontend/src/components/options/navs.js
  11. 116 0
      frontend/src/components/options/root.js
  12. 9 0
      frontend/src/components/options/sign-in-credentials.js
  13. 66 0
      frontend/src/components/select.js
  14. 1 1
      frontend/src/components/user-menu/user-nav.js
  15. 53 0
      frontend/src/components/yes-no-switch.js
  16. 20 0
      frontend/src/initializers/options-component.js
  17. 13 0
      frontend/src/initializers/username-history-reducer.js
  18. 13 0
      frontend/src/reducers/auth.js
  19. 37 0
      frontend/src/reducers/username-history.js
  20. 4 1
      frontend/src/services/ajax.js
  21. 12 0
      frontend/src/utils/random.js
  22. 36 0
      frontend/src/utils/routed-component.js
  23. 3 1
      frontend/src/utils/test-utils.js
  24. 10 0
      frontend/style/index.less
  25. 8 2
      frontend/style/misago/dropdowns.less
  26. 0 8
      frontend/style/misago/forms.less
  27. 31 0
      frontend/style/misago/inputs.less
  28. 20 0
      frontend/style/misago/navs.less
  29. 35 0
      frontend/style/misago/page-header.less
  30. 18 0
      frontend/style/misago/type.less
  31. 70 0
      frontend/style/misago/ui-preview.less
  32. 81 0
      frontend/style/misago/username-history.less
  33. 4 0
      frontend/style/misago/variables.less
  34. 19 1
      frontend/tests/auth.js
  35. 3 1
      frontend/tests/components/change-avatar/gallery.js
  36. 3 1
      frontend/tests/components/change-avatar/index.js
  37. 3 1
      frontend/tests/components/change-avatar/root.js
  38. 3 1
      frontend/tests/components/change-avatar/upload.js
  39. 105 0
      frontend/tests/components/li.js
  40. 0 0
      frontend/tests/components/options/root.js
  41. 1 1
      misago/static/misago/css/misago.css
  42. 6 4
      misago/static/misago/js/misago.js
  43. 1 1
      misago/static/misago/js/misago.js.map
  44. 27 0
      misago/templates/misago/options/noscript.html
  45. 15 5
      misago/users/serializers/user.py
  46. 1 9
      misago/users/tests/test_options_views.py
  47. 1 2
      misago/users/urls/__init__.py
  48. 26 11
      misago/users/views/options.py

+ 1 - 1
frontend/src/components/change-avatar/crop.js

@@ -109,7 +109,7 @@ export default class extends React.Component {
     let avatarType = this.props.upload ? 'crop_tmp' : 'crop_org';
     let avatarType = this.props.upload ? 'crop_tmp' : 'crop_org';
     let cropit = $('.crop-form');
     let cropit = $('.crop-form');
 
 
-    ajax.post(this.props.user.avatar_api_url, {
+    ajax.post(this.props.user.api_url.avatar, {
       'avatar': avatarType,
       'avatar': avatarType,
       'crop': {
       'crop': {
         'offset': cropit.cropit('offset'),
         'offset': cropit.cropit('offset'),

+ 1 - 1
frontend/src/components/change-avatar/gallery.js

@@ -90,7 +90,7 @@ export default class extends React.Component {
       'isLoading': true
       'isLoading': true
     });
     });
 
 
-    ajax.post(this.props.user.avatar_api_url, {
+    ajax.post(this.props.user.api_url.avatar, {
       avatar: 'galleries',
       avatar: 'galleries',
       image: this.state.selection
       image: this.state.selection
     }).then((response) => {
     }).then((response) => {

+ 1 - 1
frontend/src/components/change-avatar/index.js

@@ -23,7 +23,7 @@ export default class extends React.Component {
       'isLoading': true
       'isLoading': true
     });
     });
 
 
-    ajax.post(this.props.user.avatar_api_url, {
+    ajax.post(this.props.user.api_url.avatar, {
       avatar: avatarType
       avatar: avatarType
     }).then((response) => {
     }).then((response) => {
       this.setState({
       this.setState({

+ 1 - 1
frontend/src/components/change-avatar/root.js

@@ -40,7 +40,7 @@ export class ChangeAvatarError extends React.Component {
 
 
 export default class extends React.Component {
 export default class extends React.Component {
   componentDidMount() {
   componentDidMount() {
-    ajax.get(this.props.user.avatar_api_url).then((options) => {
+    ajax.get(this.props.user.api_url.avatar).then((options) => {
       this.setState({
       this.setState({
         'component': AvatarIndex,
         'component': AvatarIndex,
         'options': options,
         'options': options,

+ 1 - 1
frontend/src/components/change-avatar/upload.js

@@ -68,7 +68,7 @@ export default class extends React.Component {
     data.append('avatar', 'upload');
     data.append('avatar', 'upload');
     data.append('image', image);
     data.append('image', image);
 
 
-    ajax.upload(this.props.user.avatar_api_url, data, (progress) => {
+    ajax.upload(this.props.user.api_url.avatar, data, (progress) => {
       this.setState({
       this.setState({
         progress
         progress
       });
       });

+ 6 - 0
frontend/src/components/form.js

@@ -6,6 +6,9 @@ let validateRequired = required();
 export default class extends React.Component {
 export default class extends React.Component {
   validate() {
   validate() {
     let errors = {};
     let errors = {};
+    if (!this.state.validators) {
+      return errors;
+    }
 
 
     let validators = {
     let validators = {
       required: this.state.validators.required || this.state.validators,
       required: this.state.validators.required || this.state.validators,
@@ -60,6 +63,9 @@ export default class extends React.Component {
 
 
   validateField(name, value) {
   validateField(name, value) {
     let errors = [];
     let errors = [];
+    if (!this.state.validators) {
+      return errors;
+    }
 
 
     let validators = {
     let validators = {
       required: (this.state.validators.required || this.state.validators)[name],
       required: (this.state.validators.required || this.state.validators)[name],

+ 27 - 0
frontend/src/components/li.js

@@ -0,0 +1,27 @@
+import React from 'react';
+
+export default class extends React.Component {
+  isActive() {
+    if (this.props.path) {
+      return document.location.pathname.indexOf(this.props.path) === 0;
+    } else {
+      return false;
+    }
+  }
+
+  getClassName() {
+    if (this.isActive()) {
+      return (this.props.className || '') + ' '+ (this.props.activeClassName || 'active');
+    } else {
+      return this.props.className || '';
+    }
+  }
+
+  render() {
+    // jshint ignore:start
+    return <li className={this.getClassName()}>
+      {this.props.children}
+    </li>;
+    // jshint ignore:end
+  }
+}

+ 161 - 0
frontend/src/components/options/change-username.js

@@ -0,0 +1,161 @@
+import React from 'react';
+import Avatar from 'misago/components/avatar'; // jshint ignore:line
+import misago from 'misago/index';
+import { dehydrate } from 'misago/reducers/username-history';
+import ajax from 'misago/services/ajax';
+import store from 'misago/services/store';
+import * as random from 'misago/utils/random'; // jshint ignore:line
+
+export class UsernameHistory extends React.Component {
+  renderUserAvatar(item) {
+    if (item.changed_by) {
+      /* jshint ignore:start */
+      return <a href={item.changed_by.absolute_url} className="user-avatar">
+        <Avatar user={item.changed_by} size="100" />
+      </a>;
+      /* jshint ignore:end */
+    } else {
+      /* jshint ignore:start */
+      return <span className="user-avatar">
+        <Avatar size="100" />
+      </span>;
+      /* jshint ignore:end */
+    }
+  }
+
+  renderUsername(item) {
+    if (item.changed_by) {
+      /* jshint ignore:start */
+      return <a href={item.changed_by.absolute_url} className="item-title">
+        {item.changed_by.username}
+      </a>;
+      /* jshint ignore:end */
+    } else {
+      /* jshint ignore:start */
+      return <span className="item-title">
+        {item.changed_by_username}
+      </span>;
+      /* jshint ignore:end */
+    }
+  }
+
+  renderHistory() {
+    /* jshint ignore:start */
+    return <div className="username-history ui-ready">
+      <ul className="list-group">
+        {this.props.changes.map((item, i) => {
+          return <li className="list-group-item" key={i}>
+            <div className="username-change-avatar">
+              {this.renderUserAvatar(item)}
+            </div>
+            <div className="username-change-author">
+              {this.renderUsername(item)}
+            </div>
+            <div className="username-change">
+              {item.old_username}
+              <span className="material-icon">
+                arrow_forward
+              </span>
+              {item.new_username}
+            </div>
+            <div className="username-change-date">
+              <abbr title={item.changed_on.format('LLL')}>
+                {item.changed_on.fromNow()}
+              </abbr>
+            </div>
+          </li>;
+        })}
+      </ul>
+    </div>;
+    /* jshint ignore:end */
+  }
+
+  renderEmptyHistory() {
+    /* jshint ignore:start */
+    return <div className="username-history ui-ready">
+      <ul className="list-group">
+        <li className="list-group-item empty-message">
+          {gettext("No name changes have been recorded for your account.")}
+        </li>
+      </ul>
+    </div>;
+    /* jshint ignore:end */
+  }
+
+  renderHistoryPreview() {
+    /* jshint ignore:start */
+    return <div className="username-history ui-preview">
+      <ul className="list-group">
+        {random.range(3, 5).map((i) => {
+          return <li className="list-group-item" key={i}>
+            <div className="username-change-avatar">
+              <span className="user-avatar">
+                <Avatar size="100" />
+              </span>
+            </div>
+            <div className="username-change-author">
+              <span className="ui-preview-text" style={{width: random.int(30, 100) + "px"}}>&nbsp;</span>
+            </div>
+            <div className="username-change">
+              <span className="ui-preview-text" style={{width: random.int(30, 50) + "px"}}>&nbsp;</span>
+              <span className="material-icon">
+                arrow_forward
+              </span>
+              <span className="ui-preview-text" style={{width: random.int(30, 50) + "px"}}>&nbsp;</span>
+            </div>
+            <div className="username-change-date">
+              <span className="ui-preview-text" style={{width: random.int(50, 100) + "px"}}>&nbsp;</span>
+            </div>
+          </li>
+        })}
+      </ul>
+    </div>;
+    /* jshint ignore:end */
+  }
+
+  render() {
+    if (this.props.isLoaded) {
+      if (this.props.changes.length) {
+        return this.renderHistory();
+      } else {
+        return this.renderEmptyHistory();
+      }
+    } else {
+      return this.renderHistoryPreview();
+    }
+  }
+}
+
+export default class extends React.Component {
+  constructor(props) {
+    super(props);
+
+    this.state = {
+      isLoaded: false,
+      options: null
+    };
+  }
+
+  componentDidMount() {
+    Promise.all([
+      ajax.get(this.props.user.api_url.username),
+      ajax.get(misago.get('USERNAME_CHANGES_API'), {user: this.props.user.id})
+    ]).then((data) => {
+      this.setState({
+        isLoaded: true,
+        options: data[0]
+      });
+
+      store.dispatch(dehydrate(data[1].results));
+    });
+  }
+
+  render() {
+    /* jshint ignore:start */
+    return <div>
+      <UsernameHistory isLoaded={this.state.isLoaded}
+                       changes={this.props['username-history']} />
+    </div>
+    /* jshint ignore:end */
+  }
+}

+ 168 - 0
frontend/src/components/options/forum-options.js

@@ -0,0 +1,168 @@
+import React from 'react'; // jshint ignore:line
+import Button from 'misago/components/button'; // jshint ignore:line
+import Form from 'misago/components/form';
+import FormGroup from 'misago/components/form-group'; // jshint ignore:line
+import Select from 'misago/components/select'; // jshint ignore:line
+import YesNoSwitch from 'misago/components/yes-no-switch'; // jshint ignore:line
+import { patchUser } from 'misago/reducers/auth';
+import ajax from 'misago/services/ajax';
+import snackbar from 'misago/services/snackbar';
+import store from 'misago/services/store';
+
+export default class extends Form {
+  constructor(props) {
+    super(props);
+
+    this.state = {
+      'isLoading': false,
+
+      'is_hiding_presence': props.user.is_hiding_presence,
+      'limits_private_thread_invites_to': props.user.limits_private_thread_invites_to,
+      'subscribe_to_started_threads': props.user.subscribe_to_started_threads,
+      'subscribe_to_replied_threads': props.user.subscribe_to_replied_threads,
+
+      'errors': {}
+    };
+
+    this.privateThreadInvitesChoices = [
+      {
+        'value': 0,
+        'icon': 'help_outline',
+        'label': gettext('Everybody')
+      },
+      {
+        'value': 1,
+        'icon': 'done_all',
+        'label': gettext('Users I follow')
+      },
+      {
+        'value': 2,
+        'icon': 'highlight_off',
+        'label': gettext('Nobody')
+      }
+    ];
+
+    this.subscribeToChoices = [
+      {
+        'value': 0,
+        'icon': 'bookmark_border',
+        'label': gettext('No')
+      },
+      {
+        'value': 1,
+        'icon': 'bookmark',
+        'label': gettext('Bookmark')
+      },
+      {
+        'value': 2,
+        'icon': 'mail',
+        'label': gettext('Bookmark with e-mail notification')
+      }
+    ];
+  }
+
+  send() {
+    return ajax.post(this.props.user.api_url.options, {
+      'is_hiding_presence': this.state.is_hiding_presence,
+      'limits_private_thread_invites_to': this.state.limits_private_thread_invites_to,
+      'subscribe_to_started_threads': this.state.subscribe_to_started_threads,
+      'subscribe_to_replied_threads': this.state.subscribe_to_replied_threads
+    });
+  }
+
+  handleSuccess() {
+    store.dispatch(patchUser({
+      'is_hiding_presence': this.state.is_hiding_presence,
+      'limits_private_thread_invites_to': this.state.limits_private_thread_invites_to,
+      'subscribe_to_started_threads': this.state.subscribe_to_started_threads,
+      'subscribe_to_replied_threads': this.state.subscribe_to_replied_threads
+    }));
+    snackbar.success(gettext("Your forum options have been changed"));
+  }
+
+  handleError(rejection) {
+    if (rejection.status === 400) {
+      snackbar.error(gettext("Please reload page and try again."));
+    } else {
+      snackbar.apiError(rejection);
+    }
+  }
+
+  render() {
+    /* jshint ignore:start */
+    return <form onSubmit={this.handleSubmit} className="form-horizontal">
+      <div className="panel panel-default panel-form">
+        <div className="panel-heading">
+          <h3 className="panel-title">{gettext("Change forum options")}</h3>
+        </div>
+        <div className="panel-body">
+
+          <fieldset>
+            <legend>{gettext("Privacy settings")}</legend>
+
+            <FormGroup label={gettext("Hide my presence")}
+                       helpText={gettext("If you hide your presence, only members with permission to see hidden users will see when you are online.")}
+                       for="id_is_hiding_presence"
+                       labelClass="col-sm-4" controlClass="col-sm-8">
+              <YesNoSwitch id="id_is_hiding_presence"
+                           disabled={this.state.isLoading}
+                           iconOn="visibility"
+                           iconOff="visibility_off"
+                           labelOn={gettext("Show my presence to other users")}
+                           labelOff={gettext("Hide my presence from other users")}
+                           onChange={this.bindInput('is_hiding_presence')}
+                           value={this.state.is_hiding_presence} />
+            </FormGroup>
+
+            <FormGroup label={gettext("Private thread invitations")}
+                       for="id_limits_private_thread_invites_to"
+                       labelClass="col-sm-4" controlClass="col-sm-8">
+              <Select id="id_limits_private_thread_invites_to"
+                      disabled={this.state.isLoading}
+                      onChange={this.bindInput('limits_private_thread_invites_to')}
+                      value={this.state.limits_private_thread_invites_to}
+                      choices={this.privateThreadInvitesChoices} />
+            </FormGroup>
+          </fieldset>
+
+          <fieldset>
+            <legend>{gettext("Automatic subscriptions")}</legend>
+
+            <FormGroup label={gettext("Threads I start")}
+                       for="id_subscribe_to_started_threads"
+                       labelClass="col-sm-4" controlClass="col-sm-8">
+              <Select id="id_subscribe_to_started_threads"
+                      disabled={this.state.isLoading}
+                      onChange={this.bindInput('subscribe_to_started_threads')}
+                      value={this.state.subscribe_to_started_threads}
+                      choices={this.subscribeToChoices} />
+            </FormGroup>
+
+            <FormGroup label={gettext("Threads I reply to")}
+                       for="id_subscribe_to_replied_threads"
+                       labelClass="col-sm-4" controlClass="col-sm-8">
+              <Select id="id_subscribe_to_replied_threads"
+                      disabled={this.state.isLoading}
+                      onChange={this.bindInput('subscribe_to_replied_threads')}
+                      value={this.state.subscribe_to_replied_threads}
+                      choices={this.subscribeToChoices} />
+            </FormGroup>
+          </fieldset>
+
+        </div>
+        <div className="panel-footer">
+          <div className="row">
+            <div className="col-sm-8 col-sm-offset-4">
+
+              <Button className="btn-primary" loading={this.state.isLoading}>
+                {gettext("Save changes")}
+              </Button>
+
+            </div>
+          </div>
+        </div>
+      </div>
+    </form>
+    /* jshint ignore:end */
+  }
+}

+ 44 - 0
frontend/src/components/options/navs.js

@@ -0,0 +1,44 @@
+import React from 'react';
+import { Link } from 'react-router'; // jshint ignore:line
+import Li from 'misago/components/li'; //jshint ignore:line
+import misago from 'misago/index'; //jshint ignore:line
+
+export class SideNav extends React.Component {
+  render() {
+    // jshint ignore:start
+    return <div className="list-group nav-side">
+      {misago.get('USER_OPTIONS').map(function(option, i) {
+        return <Link to={misago.get('USERCP_URL') + option.component + '/'}
+                     className="list-group-item"
+                     activeClassName="active"
+                     key={i}>
+          <span className="material-icon">
+            {option.icon}
+          </span>
+          {option.name}
+        </Link>;
+      })}
+    </div>;
+    // jshint ignore:end
+  }
+}
+
+export class CompactNav extends React.Component {
+  render() {
+    // jshint ignore:start
+    return <ul className="dropdown-menu" role="menu">
+      {misago.get('USER_OPTIONS').map(function(option, i) {
+        return <Li path={misago.get('USERCP_URL') + option.component + '/'}
+                   key={i}>
+          <Link to={misago.get('USERCP_URL') + option.component + '/'}>
+            <span className="material-icon">
+              {option.icon}
+            </span>
+            {option.name}
+          </Link>
+        </Li>;
+      })}
+    </ul>;
+    // jshint ignore:end
+  }
+}

+ 116 - 0
frontend/src/components/options/root.js

@@ -0,0 +1,116 @@
+import React from 'react';
+import { connect } from 'react-redux';
+import { SideNav, CompactNav } from 'misago/components/options/navs'; // jshint ignore:line
+import ChangeForumOptions from 'misago/components/options/forum-options';
+import ChangeUsername from 'misago/components/options/change-username';
+import ChangeSignInCredentials from 'misago/components/options/sign-in-credentials';
+import misago from 'misago/index';
+
+export class Options extends React.Component {
+  constructor(props) {
+    super(props);
+
+    this.state = {
+      dropdown: false
+    };
+  }
+
+  /* jshint ignore:start */
+  toggleNav = () => {
+    if (this.state.dropdown) {
+      this.setState({
+        dropdown: false
+      });
+    } else {
+      this.setState({
+        dropdown: true
+      });
+    }
+  };
+  /* jshint ignore:end */
+
+  getToggleNavClassName() {
+    if (this.state.dropdown) {
+      return 'btn btn-default btn-icon open';
+    } else {
+      return 'btn btn-default btn-icon';
+    }
+  }
+
+  getCompactNavClassName() {
+    if (this.state.dropdown) {
+      return 'compact-nav open';
+    } else {
+      return 'compact-nav';
+    }
+  }
+
+  render() {
+    /* jshint ignore:start */
+    return <div>
+      <div className="page-header">
+        <div className="container">
+
+          <h1 className="pull-left">{gettext("Change your options")}</h1>
+
+          <button className="btn btn-default btn-icon btn-dropdown-toggle hidden-md hidden-lg"
+                  type="button"
+                  onClick={this.toggleNav}
+                  aria-haspopup="true"
+                  aria-expanded={this.state.dropdown ? 'true' : 'false'}>
+            <i className="material-icon">
+              menu
+            </i>
+          </button>
+
+        </div>
+      </div>
+
+      <div className={this.getCompactNavClassName()}>
+        <CompactNav />
+      </div>
+
+      <div className="container">
+        <div className="row">
+          <div className="col-md-3 hidden-xs hidden-sm">
+
+            <SideNav />
+
+          </div>
+          <div className="col-md-9">
+
+            {this.props.children}
+
+          </div>
+        </div>
+      </div>
+
+    </div>;
+    /* jshint ignore:end */
+  }
+}
+
+export function select(store) {
+  return {
+    'tick': store.tick.tick,
+    'user': store.auth.user,
+    'username-history': store['username-history']
+  };
+}
+
+export function paths() {
+  return [
+    {
+      path: misago.get('USERCP_URL') + 'forum-options/',
+      component: connect(select)(ChangeForumOptions)
+    },
+    {
+      path: misago.get('USERCP_URL') + 'change-username/',
+      component: connect(select)(ChangeUsername)
+    },
+    {
+      path: misago.get('USERCP_URL') + 'sign-in-credentials/',
+      component: connect(select)(ChangeSignInCredentials)
+    }
+  ];
+}

+ 9 - 0
frontend/src/components/options/sign-in-credentials.js

@@ -0,0 +1,9 @@
+import React from 'react';
+
+export default class extends React.Component {
+  render() {
+    /* jshint ignore:start */
+    return <p>Would you liek to change email or password?</p>
+    /* jshint ignore:end */
+  }
+}

+ 66 - 0
frontend/src/components/select.js

@@ -0,0 +1,66 @@
+import React from 'react';
+
+export default class extends React.Component {
+  getChoice() {
+    let choice = null;
+    this.props.choices.map((item) => {
+      if (item.value === this.props.value) {
+        choice = item;
+      }
+    });
+    return choice;
+  }
+
+  getIcon() {
+    return this.getChoice().icon;
+  }
+
+  getLabel() {
+    return this.getChoice().label;
+  }
+
+  /* jshint ignore:start */
+  change = (value) => {
+    return () => {
+      this.props.onChange({
+        target: {
+          value: value
+        }
+      });
+    };
+  };
+  /* jshint ignore:end */
+
+  render() {
+    /* jshint ignore:start */
+    return <div className="btn-group btn-select-group">
+      <button type="button"
+              className="btn btn-select dropdown-toggle"
+              id={this.props.id || null}
+              data-toggle="dropdown"
+              aria-haspopup="true"
+              aria-expanded="false"
+              aria-describedby={this.props['aria-describedby'] || null}
+              disabled={this.props.disabled || false}>
+        <span className="material-icon">
+          {this.getIcon()}
+        </span>
+        {this.getLabel()}
+      </button>
+      <ul className="dropdown-menu">
+        {this.props.choices.map((item, i) => {
+          return <li key={i}>
+            <button type="button" className="btn-link"
+                    onClick={this.change(item.value)}>
+              <span className="material-icon">
+                {item.icon}
+              </span>
+              {item.label}
+            </button>
+          </li>;
+        })}
+      </ul>
+    </div>;
+    /* jshint ignore:end */
+  }
+}

+ 1 - 1
frontend/src/components/user-menu/user-nav.js

@@ -40,7 +40,7 @@ export class UserMenu extends React.Component {
       </li>
       </li>
       <li>
       <li>
         <button type="button" className="btn-link" onClick={this.changeAvatar}>
         <button type="button" className="btn-link" onClick={this.changeAvatar}>
-          <span className="material-icon">face</span>
+          <span className="material-icon">portrait</span>
           {gettext("Change avatar")}
           {gettext("Change avatar")}
         </button>
         </button>
       </li>
       </li>

+ 53 - 0
frontend/src/components/yes-no-switch.js

@@ -0,0 +1,53 @@
+import React from 'react';
+
+export default class extends React.Component {
+  getClassName() {
+    if (this.props.value) {
+      return "btn btn-yes-no btn-yes-no-on";
+    } else {
+      return "btn btn-yes-no btn-yes-no-off";
+    }
+  }
+
+  getIcon() {
+    if (this.props.value) {
+      return this.props.iconOn || 'check_box';
+    } else {
+      return this.props.iconOff || 'check_box_outline_blank';
+    }
+  }
+
+  getLabel() {
+    if (this.props.value) {
+      return this.props.labelOn || gettext("yes");
+    } else {
+      return this.props.labelOff || gettext("no");
+    }
+  }
+
+  /* jshint ignore:start */
+  toggle = () => {
+    this.props.onChange({
+      target: {
+        value: !this.props.value
+      }
+    });
+  };
+  /* jshint ignore:end */
+
+  render() {
+    /* jshint ignore:start */
+    return <button type="button"
+                   onClick={this.toggle}
+                   className={this.getClassName()}
+                   id={this.props.id || null}
+                   aria-describedby={this.props['aria-describedby'] || null}
+                   disabled={this.props.disabled || false}>
+      <span className="material-icon">
+        {this.getIcon()}
+      </span>
+      {this.getLabel()}
+    </button>;
+    /* jshint ignore:end */
+  }
+}

+ 20 - 0
frontend/src/initializers/options-component.js

@@ -0,0 +1,20 @@
+import { Options, paths } from 'misago/components/options/root';
+import misago from 'misago/index';
+import store from 'misago/services/store';
+import mount from 'misago/utils/routed-component';
+
+export default function initializer(context) {
+  if (context.get('USER_OPTIONS')) {
+    mount({
+      root: misago.get('USERCP_URL'),
+      component: Options,
+      paths: paths(store)
+    });
+  }
+}
+
+misago.addInitializer({
+  name: 'component:options',
+  initializer: initializer,
+  after: 'store'
+});

+ 13 - 0
frontend/src/initializers/username-history-reducer.js

@@ -0,0 +1,13 @@
+import misago from 'misago/index';
+import reducer from 'misago/reducers/username-history';
+import store from 'misago/services/store';
+
+export default function initializer() {
+  store.addReducer('username-history', reducer, []);
+}
+
+misago.addInitializer({
+  name: 'reducer:username-history',
+  initializer: initializer,
+  before: 'store'
+});

+ 13 - 0
frontend/src/reducers/auth.js

@@ -5,9 +5,17 @@ export var initialState = {
   signedOut: false
   signedOut: false
 };
 };
 
 
+export const PATCH_USER = 'PATCH_USER';
 export const SIGN_IN = 'SIGN_IN';
 export const SIGN_IN = 'SIGN_IN';
 export const SIGN_OUT = 'SIGN_OUT';
 export const SIGN_OUT = 'SIGN_OUT';
 
 
+export function patchUser(patch) {
+  return {
+    type: PATCH_USER,
+    patch
+  };
+}
+
 export function signIn(user) {
 export function signIn(user) {
   return {
   return {
     type: SIGN_IN,
     type: SIGN_IN,
@@ -24,6 +32,11 @@ export function signOut(soft=false) {
 
 
 export default function auth(state=initialState, action=null) {
 export default function auth(state=initialState, action=null) {
   switch (action.type) {
   switch (action.type) {
+    case PATCH_USER:
+        let newState = Object.assign({}, state);
+        newState.user = Object.assign({}, state.user, action.patch);
+        return newState;
+
     case SIGN_IN:
     case SIGN_IN:
       return Object.assign({}, state, {
       return Object.assign({}, state, {
         signedIn: action.user
         signedIn: action.user

+ 37 - 0
frontend/src/reducers/username-history.js

@@ -0,0 +1,37 @@
+import { UPDATE_AVATAR } from 'misago/reducers/users';
+
+import moment from 'moment';
+
+export const DEHYDRATE_RESULT = 'DEHYDRATE_RESULT';
+
+export function dehydrate(items) {
+  return {
+    type: DEHYDRATE_RESULT,
+    items: items
+  };
+}
+
+export default function username(state=[], action=null){
+  switch (action.type) {
+    case DEHYDRATE_RESULT:
+      return action.items.map(function(item) {
+        return Object.assign({}, item, {
+          changed_on: moment(item.changed_on)
+        });
+      });
+
+    case UPDATE_AVATAR:
+      return state.map(function(item) {
+        if (item.changed_by && item.changed_by.id === action.userId) {
+          item.changed_by = Object.assign({}, item.changed_by, {
+            'avatar_hash': action.avatarHash
+          });
+        }
+
+        return Object.assign({}, item);
+      });
+
+    default:
+      return state;
+  }
+}

+ 4 - 1
frontend/src/services/ajax.js

@@ -56,7 +56,10 @@ export class Ajax {
     });
     });
   }
   }
 
 
-  get(url) {
+  get(url, params) {
+    if (params) {
+      url += '?' + $.param(params);
+    }
     return this.request('GET', url);
     return this.request('GET', url);
   }
   }
 
 

+ 12 - 0
frontend/src/utils/random.js

@@ -0,0 +1,12 @@
+export function int(min, max) {
+  return Math.floor((Math.random() * (max + 1)) + min);
+}
+
+export function range(min, max) {
+  let array = new Array(int(min, max));
+  for(let i=0; i<array.length; i++){
+    array[i] = i;
+  }
+
+  return array;
+}

+ 36 - 0
frontend/src/utils/routed-component.js

@@ -0,0 +1,36 @@
+// jshint ignore:start
+import React from 'react';
+import ReactDOM from 'react-dom';
+import { Provider } from 'react-redux';
+import { Router } from 'react-router';
+import createHistory from 'history/lib/createBrowserHistory';
+import store from 'misago/services/store';
+
+const rootElement = document.getElementById('page-mount');
+const history = new createHistory();
+
+export default function(options) {
+  let routes = {
+    'component': options.component,
+    'childRoutes': [
+      {
+        'path': options.root,
+        'onEnter': function(nextState, replaceState) {
+          replaceState(null, options.paths[0].path);
+        }
+      }
+    ].concat(options.paths.map(function(path) {
+      return {
+        'path': path.path,
+        'component': path.component
+      };
+    }))
+  };
+
+  ReactDOM.render(
+    <Provider store={store.getStore()}>
+      <Router routes={routes} history={history} />
+    </Provider>,
+    rootElement
+  );
+}

+ 3 - 1
frontend/src/utils/test-utils.js

@@ -44,7 +44,9 @@ export function contextAuthenticated(misago, overrides) {
     user: {
     user: {
       id : 42,
       id : 42,
       absolute_url: "/user/loremipsum-1/",
       absolute_url: "/user/loremipsum-1/",
-      avatar_api_url: "/test-api/users/42/avatar/",
+      api_url: {
+        avatar: "/test-api/users/42/avatar/"
+      },
       avatar_hash: "5c6a04b4",
       avatar_hash: "5c6a04b4",
       email: "test@example.com",
       email: "test@example.com",
       full_title: "Forum team",
       full_title: "Forum team",

+ 10 - 0
frontend/style/index.less

@@ -39,6 +39,9 @@
 @import "@{bs}alerts.less";
 @import "@{bs}alerts.less";
 @import "@{bs}progress-bars.less";
 @import "@{bs}progress-bars.less";
 @import "@{bs}media.less";
 @import "@{bs}media.less";
+@import "@{bs}button-groups.less";
+@import "@{bs}list-group.less";
+@import "@{bs}panels.less";
 @import "@{bs}wells.less";
 @import "@{bs}wells.less";
 @import "@{bs}close.less";
 @import "@{bs}close.less";
 
 
@@ -59,17 +62,24 @@
 @import "misago/alerts-snackbar.less";
 @import "misago/alerts-snackbar.less";
 @import "misago/loaders.less";
 @import "misago/loaders.less";
 @import "misago/navbar.less";
 @import "misago/navbar.less";
+@import "misago/navs.less";
 @import "misago/material-icons.less";
 @import "misago/material-icons.less";
 @import "misago/modals.less";
 @import "misago/modals.less";
 @import "misago/forms.less";
 @import "misago/forms.less";
+@import "misago/inputs.less";
 @import "misago/buttons.less";
 @import "misago/buttons.less";
 @import "misago/dropdowns.less";
 @import "misago/dropdowns.less";
+@import "misago/page-header.less";
 @import "misago/footer.less";
 @import "misago/footer.less";
+@import "misago/ui-preview.less";
+@import "misago/type.less";
 
 
 @import "misago/change-avatar.less";
 @import "misago/change-avatar.less";
 
 
 // Pages
 // Pages
 @import "misago/message-pages.less";
 @import "misago/message-pages.less";
+@import "misago/username-history.less";
+
 
 
 // --------------------------------------------------
 // --------------------------------------------------
 // Flavor
 // Flavor

+ 8 - 2
frontend/style/misago/dropdowns.less

@@ -45,12 +45,18 @@
 
 
 
 
 // Always displayed on mobile dropdown
 // Always displayed on mobile dropdown
-.mobile-dropdown {
+.mobile-dropdown, .compact-nav {
   position: static;
   position: static;
   margin: 0px;
   margin: 0px;
+  overflow: auto;
+
+  &.open {
+    margin-top: @line-height-computed * -1;
+    margin-bottom: @line-height-computed;
+  }
 }
 }
 
 
-.mobile-dropdown.open>.dropdown-menu {
+.mobile-dropdown.open>.dropdown-menu, .compact-nav.open>.dropdown-menu {
   border: none;
   border: none;
   border-radius: 0;
   border-radius: 0;
   .box-shadow(none);
   .box-shadow(none);

+ 0 - 8
frontend/style/misago/forms.less

@@ -42,11 +42,3 @@
     line-height: @font-size-large * 5;
     line-height: @font-size-large * 5;
   }
   }
 }
 }
-
-
-// Hidden file input
-input.hidden-file-upload {
-  position: absolute;
-  top: -9999px;
-  left: -9999px;
-}

+ 31 - 0
frontend/style/misago/inputs.less

@@ -0,0 +1,31 @@
+//
+// Inputs
+// --------------------------------------------------
+
+
+// Button-based inputs
+.btn.btn-yes-no, .btn.btn-select {
+  background: transparent;
+  border: 1px solid @gray-lighter;
+
+  .material-icon {
+    margin: -4px 0px;
+    margin-right: 8px;
+
+    position: relative;
+    bottom: 1px;
+
+    width: 20px;
+    height: 20px;
+
+    font-size: 20px;
+    line-height: 20px;
+  }
+}
+
+// Hidden file input
+input.hidden-file-upload {
+  position: absolute;
+  top: -9999px;
+  left: -9999px;
+}

+ 20 - 0
frontend/style/misago/navs.less

@@ -0,0 +1,20 @@
+//
+// Navs
+// --------------------------------------------------
+
+
+.nav-side>a {
+  &>.material-icon {
+    margin: -5px;
+    margin-right: @line-height-computed / 2;
+
+    position: relative;
+    bottom: 2px;
+
+    width: 24px;
+    height: 24px;
+
+    font-size: 24px;
+    line-height: 24px;
+  }
+}

+ 35 - 0
frontend/style/misago/page-header.less

@@ -0,0 +1,35 @@
+//
+// Page header
+// --------------------------------------------------
+
+
+// Common styles
+.page-header {
+  margin: 0px;
+  margin-bottom: @line-height-computed;
+}
+
+
+// Small displays
+@media screen and (max-width: @screen-sm-max) {
+  .container {
+    h1 {
+      font-size: @font-size-large * 1.25;
+    }
+
+    &>.btn {
+      float: right;
+      margin-top: @line-height-computed - 7px;
+    }
+
+    &>.btn-dropdown-toggle {
+      .material-icon {
+        width: 24px;
+        height: 24px;
+
+        font-size: 24px;
+        line-height: 24px;
+      }
+    }
+  }
+}

+ 18 - 0
frontend/style/misago/type.less

@@ -0,0 +1,18 @@
+//
+// Typography
+// --------------------------------------------------
+
+
+.item-title {
+  color: @text-color;
+  font-weight: bold;
+  text-decoration: none;
+}
+
+a.item-title {
+  &:link, &:active, &:visited, &:hover {
+    color: @text-color;
+    font-weight: bold;
+    text-decoration: underline;
+  }
+}

+ 70 - 0
frontend/style/misago/ui-preview.less

@@ -0,0 +1,70 @@
+//
+// UI Preview
+// --------------------------------------------------
+
+
+// Animation
+.ui-preview, .ui-preview-text, .ui-preview-img {
+  background: @ui-preview-light;
+  border-radius: @border-radius-base + 1px;
+
+  color: @ui-preview-light;
+
+  .animation(ui-preview-animation 1.5s linear infinite);
+}
+
+@-webkit-keyframes ui-preview-animation {
+  0% {
+    background: @ui-preview-light;
+    color: @ui-preview-light;
+  }
+  50% {
+    background: @ui-preview-dark;
+    color: @ui-preview-dark;
+  }
+  100% {
+    background: @ui-preview-light;
+    color: @ui-preview-light;
+  }
+}
+
+@keyframes ui-preview-animation {
+  0% {
+    background: @ui-preview-light;
+    color: @ui-preview-light;
+  }
+  50% {
+    background: @ui-preview-dark;
+    color: @ui-preview-dark;
+  }
+  100% {
+    background: @ui-preview-light;
+    color: @ui-preview-light;
+  }
+}
+
+
+// Text
+.ui-preview-text {
+  border-radius: @border-radius-large;
+  display: inline-block;
+  height: @font-size-base;
+
+  position: relative;
+  top: (@line-height-computed - @font-size-base) / 2;
+}
+
+
+// List
+.ui-preview .list-group {
+  padding: 1px;
+
+  &>li {
+    border: none;
+    margin-bottom: 1px;
+  }
+
+  &>li:last-child {
+    margin-bottom: 0px;
+  }
+}

+ 81 - 0
frontend/style/misago/username-history.less

@@ -0,0 +1,81 @@
+//
+// Username History
+// --------------------------------------------------
+
+
+.username-history {
+  .username-change-avatar {
+    float: left;
+
+    .user-avatar {
+      margin-right: @line-height-computed / 2;
+
+      img {
+        width: 42px;
+        height: 42px;
+      }
+    }
+  }
+
+  .username-change {
+    .material-icon {
+      margin: 0px @font-size-base / 2;
+    }
+  }
+
+  .username-change-date {
+    color: @text-muted;
+    font-size: @font-size-small;
+  }
+}
+
+
+// Full displays
+@media screen and (min-width: @screen-md-min) {
+  .username-history {
+    li {
+      overflow: auto;
+
+      &.empty-message {
+        text-align: center;
+      }
+    }
+
+    .username-change-avatar {
+      float: left;
+
+      .user-avatar {
+        margin-right: @line-height-computed / 2;
+
+        img {
+          width: 18px;
+          height: 18px;
+
+          position: relative;
+          bottom: 1px;
+        }
+      }
+    }
+    .username-change-author {
+      float: left;
+      width: 30%;
+    }
+
+    .username-change {
+      float: left;
+      width: 40%;
+    }
+
+    .username-change-date {
+      float: left;
+      width: 20%;
+    }
+
+    &.ui-ready {
+      .username-change-date {
+        position: relative;
+        top: 2px;
+      }
+    }
+  }
+}

+ 4 - 0
frontend/style/misago/variables.less

@@ -12,6 +12,10 @@
 //** Loader color
 //** Loader color
 @loader-color: @gray-light;
 @loader-color: @gray-light;
 
 
+//** UI preview colors
+@ui-preview-light: darken(@body-bg, 2%);
+@ui-preview-dark: darken(@ui-preview-light, 10%);
+
 
 
 //== Navbar
 //== Navbar
 //
 //

+ 19 - 1
frontend/tests/auth.js

@@ -1,5 +1,5 @@
 import assert from 'assert';
 import assert from 'assert';
-import reducer, { SIGN_IN, SIGN_OUT, signIn, signOut } from 'misago/reducers/auth';
+import reducer, { SIGN_IN, SIGN_OUT, signIn, signOut, patchUser } from 'misago/reducers/auth';
 import { Auth } from 'misago/services/auth';
 import { Auth } from 'misago/services/auth';
 
 
 let auth = null;
 let auth = null;
@@ -166,6 +166,24 @@ describe("Auth", function() {
 });
 });
 
 
 describe("Auth Reducer", function() {
 describe("Auth Reducer", function() {
+  it("patches auth user", function() {
+    let state = {
+      user: {
+        username: 'Original'
+      }
+    };
+
+    assert.deepEqual(reducer(state, patchUser({
+      username: 'Patched!',
+      new_attr: 'Set'
+    })), {
+      user: {
+        username: 'Patched!',
+        new_attr: 'Set'
+      }
+    }, "reducer changed store state for sign out");
+  });
+
   it("signs user in", function() {
   it("signs user in", function() {
     let state = {
     let state = {
       signedIn: false
       signedIn: false

+ 3 - 1
frontend/tests/components/change-avatar/gallery.js

@@ -60,7 +60,9 @@ describe("Change Avatar Gallery", function() {
       'user': {
       'user': {
         'id': 123,
         'id': 123,
         'avatar_hash': 'aabbccdd',
         'avatar_hash': 'aabbccdd',
-        'avatar_api_url': '/test-api/users/123/avatar/'
+        'api_url': {
+          'avatar': '/test-api/users/123/avatar/'
+        }
       }
       }
     };
     };
   });
   });

+ 3 - 1
frontend/tests/components/change-avatar/index.js

@@ -59,7 +59,9 @@ describe("Change Avatar Index", function() {
       'user': {
       'user': {
         'id': 123,
         'id': 123,
         'avatar_hash': 'aabbccdd',
         'avatar_hash': 'aabbccdd',
-        'avatar_api_url': '/test-api/users/123/avatar/'
+        'api_url': {
+          'avatar': '/test-api/users/123/avatar/'
+        }
       }
       }
     };
     };
   });
   });

+ 3 - 1
frontend/tests/components/change-avatar/root.js

@@ -54,7 +54,9 @@ describe("Change Avatar", function() {
       'user': {
       'user': {
         'id': 123,
         'id': 123,
         'avatar_hash': 'aabbccdd',
         'avatar_hash': 'aabbccdd',
-        'avatar_api_url': '/test-api/users/123/avatar/'
+        'api_url': {
+          'avatar': '/test-api/users/123/avatar/'
+        }
       }
       }
     };
     };
   });
   });

+ 3 - 1
frontend/tests/components/change-avatar/upload.js

@@ -58,7 +58,9 @@ describe("Upload Avatar", function() {
       'user': {
       'user': {
         'id': 123,
         'id': 123,
         'avatar_hash': 'aabbccdd',
         'avatar_hash': 'aabbccdd',
-        'avatar_api_url': '/test-api/users/123/avatar/'
+        'api_url': {
+          'avatar': '/test-api/users/123/avatar/'
+        }
       }
       }
     };
     };
   });
   });

+ 105 - 0
frontend/tests/components/li.js

@@ -0,0 +1,105 @@
+import assert from 'assert';
+import React from 'react'; // jshint ignore:line
+import Li from 'misago/components/li'; // jshint ignore:line
+import * as testUtils from 'misago/utils/test-utils';
+
+describe("Li", function() {
+  afterEach(function() {
+    testUtils.unmountComponents();
+  });
+
+  it('renders', function() {
+    /* jshint ignore:start */
+    testUtils.render(<Li />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount li');
+    assert.ok(element.length, "component renders");
+  });
+
+  it('renders with class name', function() {
+    /* jshint ignore:start */
+    testUtils.render(<Li className="test-class" />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount li');
+    assert.ok(element.hasClass('test-class'), "component renders with class");
+    assert.ok(!element.hasClass('active'), "component renders with class");
+  });
+
+  it('renders with active class name', function() {
+    window.history.replaceState({}, '', '/test-server/something/');
+
+    /* jshint ignore:start */
+    testUtils.render(<Li className="test-class"
+                         path="/test-server/something/" />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount li');
+    assert.ok(element.hasClass('test-class'), "component renders with class");
+    assert.ok(element.hasClass('active'), "component has active class");
+
+    window.history.replaceState({}, '', '/test-server/something/else-deep/');
+
+    /* jshint ignore:start */
+    testUtils.render(<Li className="test-class"
+                         path="/test-server/something/" />);
+    /* jshint ignore:end */
+
+    element = $('#test-mount li');
+    assert.ok(element.hasClass('test-class'), "component renders with class");
+    assert.ok(element.hasClass('active'), "component has active class");
+
+    window.history.replaceState({}, '', '/test-server/');
+
+    /* jshint ignore:start */
+    testUtils.render(<Li className="test-class"
+                         path="/test-server/something/" />);
+    /* jshint ignore:end */
+
+    element = $('#test-mount li');
+    assert.ok(element.hasClass('test-class'), "component renders with class");
+    assert.ok(!element.hasClass('active'), "component has no active class");
+  });
+
+  it('renders with custom active class', function() {
+    window.history.replaceState({}, '', '/test-server/something/');
+
+    /* jshint ignore:start */
+    testUtils.render(<Li className="test-class"
+                         path="/test-server/something/"
+                         activeClassName="yay" />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount li');
+    assert.ok(element.hasClass('test-class'), "component renders with class");
+    assert.ok(!element.hasClass('active'), "component has no def active class");
+    assert.ok(element.hasClass('yay'), "component has custom active class");
+
+    window.history.replaceState({}, '', '/test-server/something/else-deep/');
+
+    /* jshint ignore:start */
+    testUtils.render(<Li className="test-class"
+                         path="/test-server/something/"
+                         activeClassName="yay" />);
+    /* jshint ignore:end */
+
+    element = $('#test-mount li');
+    assert.ok(element.hasClass('test-class'), "component renders with class");
+    assert.ok(!element.hasClass('active'), "component has no def active class");
+    assert.ok(element.hasClass('yay'), "component has active class");
+
+    window.history.replaceState({}, '', '/test-server/');
+
+    /* jshint ignore:start */
+    testUtils.render(<Li className="test-class"
+                         path="/test-server/something/"
+                         activeClassName="yay" />);
+    /* jshint ignore:end */
+
+    element = $('#test-mount li');
+    assert.ok(element.hasClass('test-class'), "component renders with class");
+    assert.ok(!element.hasClass('active'), "component has no def active class");
+    assert.ok(!element.hasClass('yay'), "component has no active class");
+  });
+});

+ 0 - 0
frontend/tests/components/options/root.js


+ 1 - 1
misago/static/misago/css/misago.css

@@ -1 +1 @@
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */hr,img{border:0}body,figure{margin:0}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}.img-thumbnail,.table,label{max-width:100%}.alerts-snackbar,a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;height:auto}.dropdown-menu .divider,.nav .nav-divider,.sr-only{height:1px;overflow:hidden}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;margin:-1px;padding:0;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:20px}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{display:block;color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{font-style:normal}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.btn,.caret{vertical-align:middle}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px}.media-object.img-thumbnail,.nav>li>a>img{max-width:none}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;line-height:1.3333333}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.btn-block,input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.active,.btn:active,.dropdown-toggle:focus,.modal,.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus,.modal-content,.navbar-toggle:focus,.open>a{outline:0}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;border-radius:0}.alert .alert-link,.close{font-weight:700}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-xs{font-size:12px;line-height:1.5;border-radius:3px}.btn-sm{padding:5px 10px}.btn-xs{padding:1px 5px}.btn-block{display:block}.btn-block+.btn-block{margin-top:5px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.nav>li,.nav>li>a,.open>.dropdown-menu{display:block}.dropdown-menu .divider{margin:9px 0;background-color:#e5e5e5}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-header,.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.nav>li.disabled>a{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav>li,.nav>li>a,.navbar{position:relative}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{margin:9px 0;background-color:#e5e5e5}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{min-height:50px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-striped .progress-bar-info,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.alerts-snackbar,.auth-message{transition:top .3s ease;width:100%}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.affix,.auth-message{position:fixed}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.row:after,.row:before{content:" ";display:table}.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.material-icon,.user-dropdown .dropdown-header strong{font-weight:400}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}.navbar.navbar-misago{min-height:auto}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}.alerts-snackbar p,.navbar .navbar-full .navbar-brand>*{display:inline-block}.auth-message{background-color:#eee;padding:20px 0;top:-100%;left:0;z-index:1070}.auth-message.show{top:0;bottom:auto}.auth-message p{padding:5px 0;color:#222}@media screen and (max-width:991px){.auth-message{text-align:center}.auth-message .btn{padding:10px 16px;font-size:18px}}.alerts-snackbar{position:fixed;top:-100%;z-index:1060;text-align:center;font-size:18px}.alerts-snackbar.in{top:0;transition:top .2s ease}.alerts-snackbar p{border-radius:0 0 4px 4px;margin:0;pointer-events:all}.loader{width:100%;height:49px;text-align:center}.loader-spinning-wheel{width:49px;height:49px;margin:0 auto;border:3px solid #777;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:cssload-spin 575ms infinite linear;-o-animation:cssload-spin 575ms infinite linear;-ms-animation:cssload-spin 575ms infinite linear;-webkit-animation:cssload-spin 575ms infinite linear;-moz-animation:cssload-spin 575ms infinite linear}@keyframes cssload-spin{100%{transform:rotate(360deg)}}@-o-keyframes cssload-spin{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes cssload-spin{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes cssload-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes cssload-spin{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}.navbar{margin-bottom:0}.navbar .navbar-full .navbar-brand img{height:16px}.navbar .navbar-full .nav-guest,.navbar .navbar-full .nav-user{float:right}.navbar .navbar-full .nav-guest .navbar-btn,.navbar .navbar-full .nav-user .navbar-btn{margin-left:15px}.navbar .navbar-full .nav-user .dropdown-toggle{padding:8px}.navbar .navbar-full .nav-user .dropdown-toggle img{width:34px;height:34px}.navbar ul.navbar-compact-nav{margin:0;display:table;width:100%}.navbar ul.navbar-compact-nav>li{display:table-cell}.navbar ul.navbar-compact-nav>li>a,.navbar ul.navbar-compact-nav>li>button{background:0 0;border:none;margin:0;padding-top:10px;padding-bottom:10px;width:100%;color:#777;text-align:center}.navbar ul.navbar-compact-nav>li>a:focus,.navbar ul.navbar-compact-nav>li>a:hover,.navbar ul.navbar-compact-nav>li>button:focus,.navbar ul.navbar-compact-nav>li>button:hover{color:#333;background-color:transparent}.navbar ul.navbar-compact-nav>li>a>img,.navbar ul.navbar-compact-nav>li>button>img{width:24px;height:24px}.navbar ul.navbar-compact-nav>li>button{padding-top:10px;padding-bottom:10px}.navbar ul.navbar-compact-nav>li>a>.material-icon{font-size:24px;line-height:24px}@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:url(../fonts/MaterialIcons-Regular.eot);src:local('Material Icons'),local('MaterialIcons-Regular'),url(../fonts/MaterialIcons-Regular.woff2) format('woff2'),url(../fonts/MaterialIcons-Regular.woff) format('woff'),url(../fonts/MaterialIcons-Regular.ttf) format('truetype')}.material-icon{font-family:'Material Icons';font-style:normal;display:inline-block;width:1em;height:1em;line-height:1;text-align:center;text-transform:none;letter-spacing:normal;vertical-align:middle;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga'}@media screen and (max-width:991px){.modal-message{text-align:center}.modal-message .message-icon{margin:30px}.modal-message .message-icon .material-icon{font-size:160px}}@media screen and (min-width:992px){.modal-message .modal-body{padding-top:20px;padding-bottom:30px}.modal-message .message-icon{float:left}.modal-message .message-icon .material-icon{font-size:50px}.modal-message .message-body{margin-left:75px;margin-top:10px}.modal-message .message-body .lead{margin-bottom:0}}.modal-loader{padding:50px 0}.modal-loader .loader{width:100%;height:80px;text-align:center}.modal-loader .loader-spinning-wheel{width:80px;height:80px}.modal-register .modal-footer a{float:left;margin-top:6.67px}@media screen and (max-width:991px){.modal-register .modal-footer{text-align:center}.modal-register .modal-footer a{display:block}.modal-register .modal-footer .btn{display:block;float:none;margin-top:10px;width:100%}}.has-feedback .material-icon.form-control-feedback{top:6px;right:24px;font-size:1.42857143;line-height:1.42857143}.well.well-form.well-done{font-size:18px;text-align:center}.well.well-form.well-done .message-icon{margin-bottom:10px;font-size:90px;line-height:90px}.well.well-form.well-done .message-body{margin-bottom:6.67px}.well.well-form.well-noscript{font-size:18px;text-align:center}.well.well-form.well-noscript .message-icon{margin-bottom:10px;font-size:90px;line-height:90px}input.hidden-file-upload{position:absolute;top:-9999px;left:-9999px}.btn.btn-loading,.btn.btn-loading:active,.btn.btn-loading:focus,.btn.btn-loading:hover,.btn.btn-loading:link,.btn.btn-loading:visited{color:transparent}.btn.btn-loading .loader,.btn.btn-loading:active .loader,.btn.btn-loading:focus .loader,.btn.btn-loading:hover .loader,.btn.btn-loading:link .loader,.btn.btn-loading:visited .loader{height:20px;margin-top:-20px}.btn.btn-loading .loader>div,.btn.btn-loading:active .loader>div,.btn.btn-loading:focus .loader>div,.btn.btn-loading:hover .loader>div,.btn.btn-loading:link .loader>div,.btn.btn-loading:visited .loader>div{width:20px;height:20px}.btn.btn-loading.btn-default .loader>div{border-top-color:#333;border-bottom-color:#333}.btn.btn-loading.btn-danger .loader>div,.btn.btn-loading.btn-info .loader>div,.btn.btn-loading.btn-primary .loader>div,.btn.btn-loading.btn-success .loader>div,.btn.btn-loading.btn-warning .loader>div{border-top-color:#fff;border-bottom-color:#fff}.dropdown-menu>li>.btn-link,.dropdown-menu>li>a{display:block;border:none;clear:both;float:none;padding:4px 20px;width:100%;color:#333;font-weight:400;line-height:1.42857143;text-align:left;white-space:nowrap}.dropdown-menu>li>.btn-link:focus,.dropdown-menu>li>.btn-link:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#f5f5f5;color:#262626;text-decoration:none}.dropdown-menu>li>.btn-link .material-icon,.dropdown-menu>li>a .material-icon{margin:-2px 7px -2px 0;position:relative;bottom:1px;font-size:18px}.dropdown-menu .dropdown-footer{padding:6px 20px}.mobile-dropdown{position:static;margin:0}.mobile-dropdown.open>.dropdown-menu{border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;display:block;margin:0;width:100%;position:static}.user-dropdown .guest-preview{text-align:center}.user-dropdown .guest-preview .row{margin:0}.navbar .user-dropdown{width:240px}.user-dropdown .dropdown-header{padding:6px 20px;font-size:18px}.misago-footer{margin-top:30px;margin-bottom:50px}.misago-footer .footer-content{border-top:1px solid #eee;padding-top:30px}.misago-footer .noscript-message .material-icon{position:relative;bottom:1px;font-size:18px}.modal-change-avatar .modal-avatar-index .avatar-preview{border-radius:6px;margin:0 auto;overflow:hidden;position:relative;width:200px;height:200px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader{display:none;position:absolute;top:50px;height:100px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel{border-width:10px;border-color:#fff transparent;width:100px;height:100px}.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading img{opacity:.33;filter:alpha(opacity=33)}.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading .loader{display:block}@media (max-width:767px){.modal-change-avatar .modal-avatar-index .avatar-preview{margin-bottom:20px;width:150px;height:150px}.modal-change-avatar .modal-avatar-index .avatar-preview img{width:150px;height:150px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader{top:25px;height:100px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel{width:100px;height:100px}}.modal-change-avatar .modal-avatar-index .btn{text-align:left}.modal-change-avatar .modal-avatar-upload{text-align:center}.modal-change-avatar .modal-avatar-upload .btn-pick-file{background:0 0;border:2px solid #eee;border-radius:6px;padding:10px 24px;-webkit-box-shadow:none;box-shadow:none;color:#777;font-size:18px;text-align:center}.modal-change-avatar .modal-avatar-upload .btn-pick-file>.material-icon{display:block;margin:0 auto 13.2px;font-size:50px;width:50px;height:50px}.modal-change-avatar .modal-avatar-upload .btn-pick-file:active,.modal-change-avatar .modal-avatar-upload .btn-pick-file:hover{border-color:#777}.modal-change-avatar .modal-avatar-upload .text-muted{margin-top:13.2px}.modal-change-avatar .modal-avatar-upload .upload-progress img{border-radius:4px;margin-bottom:20px;max-height:80px;width:auto}.modal-change-avatar .modal-avatar-upload .upload-progress .progress{width:70%;margin:0 auto}.modal-avatar-crop .crop-form{margin:0 auto}.modal-avatar-crop .crop-form .cropit-image-zoom-input{margin-top:10px;-webkit-appearance:none;border:1px solid #fff;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-runnable-track{width:100%;height:8px;background:#eee;border:none;border-radius:3px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:20px;width:20px;border-radius:50%;background:#777;margin-top:-6px}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-webkit-slider-runnable-track{background:#eee}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-track{width:100%;height:8px;background:#eee;border:none;border-radius:4px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-thumb{border:none;height:20px;width:20px;border-radius:50%;background:#777}.modal-avatar-crop .crop-form .cropit-image-zoom-input:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-track{width:100%;height:8px;background:0 0;border-color:transparent;border-width:8px 0;color:transparent}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-lower{background:#eee;border-radius:16px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-upper{background:#eee;border-radius:16px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-thumb{border:none;height:20px;width:20px;border-radius:50%;background:#777}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-lower{background:#eee}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-upper{background:#eee}.modal-change-avatar .modal-avatar-gallery{padding-bottom:0}.modal-change-avatar .modal-avatar-gallery .avatars-gallery{margin-bottom:20px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery h3{margin-top:0}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .row{margin-bottom:10px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn{border-radius:6px;border:2px solid #eee;background:0 0;padding:2px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:focus,.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:hover{border-color:#777}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn.avatar-selected,.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:active{border-color:#337ab7}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn img{border-radius:4px;width:100%}@media screen and (max-width:991px){.page-error,.page-message{text-align:center}.page-error .message-icon,.page-message .message-icon{margin:30px}.page-error .message-icon .material-icon,.page-message .message-icon .material-icon{font-size:160px}}@media screen and (min-width:992px){.page-error .message-panel,.page-message .message-panel{margin:60px auto;max-width:779.35px;overflow:auto}.page-error .message-icon,.page-message .message-icon{float:left}.page-error .message-icon .material-icon,.page-message .message-icon .material-icon{font-size:80px}.page-error .message-body,.page-message .message-body{margin-left:100px}}
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */hr,img{border:0}body,figure{margin:0}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}.img-thumbnail,.table,label{max-width:100%}.alerts-snackbar,.form-control-feedback,a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;height:auto}.dropdown-menu .divider,.nav .nav-divider,.sr-only{height:1px;overflow:hidden}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;margin:-1px;padding:0;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}dl,ol,ul{margin-top:0}.lead,address,dl{margin-bottom:20px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{font-size:16px;font-weight:300;line-height:1.4}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;border-bottom:1px solid #eee}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{display:block;color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{font-style:normal}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.btn,.caret{vertical-align:middle}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px}.media-object.img-thumbnail,.nav>li>a>img{max-width:none}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;line-height:1.3333333}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.btn-block,input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle,.btn.active,.btn:active,.dropdown-toggle:focus,.modal,.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus,.modal-content,.navbar-toggle:focus,.open>a{outline:0}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;border-radius:0}.alert .alert-link,.close{font-weight:700}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block}.btn-block+.btn-block{margin-top:5px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.nav>li,.nav>li>a,.open>.dropdown-menu{display:block}.dropdown-menu .divider{margin:9px 0;background-color:#e5e5e5}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-header,.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.nav>li.disabled>a{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav>li,.nav>li>a,.navbar{position:relative}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{margin:9px 0;background-color:#e5e5e5}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{min-height:50px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:4px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}@media (min-width:768px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.progress-bar{float:left}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{top:0;right:0;bottom:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.progress-bar{width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-striped .progress-bar-info,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal{display:none;position:fixed;left:0;z-index:1050;-webkit-overflow-scrolling:touch}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.alerts-snackbar,.auth-message{transition:top .3s ease;width:100%}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.modal-backdrop{position:fixed;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.affix,.auth-message{position:fixed}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.material-icon,.user-dropdown .dropdown-header strong{font-weight:400}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}.navbar.navbar-misago{min-height:auto}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}.alerts-snackbar p,.navbar .navbar-full .navbar-brand>*{display:inline-block}.auth-message{background-color:#eee;padding:20px 0;top:-100%;left:0;z-index:1070}.auth-message.show{top:0;bottom:auto}.auth-message p{padding:5px 0;color:#222}@media screen and (max-width:991px){.auth-message{text-align:center}.auth-message .btn{padding:10px 16px;font-size:18px}}.alerts-snackbar{position:fixed;top:-100%;z-index:1060;text-align:center;font-size:18px}.nav-side>a>.material-icon,.navbar ul.navbar-compact-nav>li>a>.material-icon{font-size:24px;line-height:24px}.alerts-snackbar.in{top:0;transition:top .2s ease}.alerts-snackbar p{border-radius:0 0 4px 4px;margin:0;pointer-events:all}.loader{width:100%;height:49px;text-align:center}.loader-spinning-wheel{width:49px;height:49px;margin:0 auto;border:3px solid #777;border-radius:50%;border-left-color:transparent;border-right-color:transparent;animation:cssload-spin 575ms infinite linear;-o-animation:cssload-spin 575ms infinite linear;-ms-animation:cssload-spin 575ms infinite linear;-webkit-animation:cssload-spin 575ms infinite linear;-moz-animation:cssload-spin 575ms infinite linear}@keyframes cssload-spin{100%{transform:rotate(360deg)}}@-o-keyframes cssload-spin{100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes cssload-spin{100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes cssload-spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes cssload-spin{100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}.navbar{margin-bottom:0}.navbar .navbar-full .navbar-brand img{height:16px}.navbar .navbar-full .nav-guest,.navbar .navbar-full .nav-user{float:right}.navbar .navbar-full .nav-guest .navbar-btn,.navbar .navbar-full .nav-user .navbar-btn{margin-left:15px}.navbar .navbar-full .nav-user .dropdown-toggle{padding:8px}.navbar .navbar-full .nav-user .dropdown-toggle img{width:34px;height:34px}.navbar ul.navbar-compact-nav{margin:0;display:table;width:100%}.navbar ul.navbar-compact-nav>li{display:table-cell}.navbar ul.navbar-compact-nav>li>a,.navbar ul.navbar-compact-nav>li>button{background:0 0;border:none;margin:0;padding-top:10px;padding-bottom:10px;width:100%;color:#777;text-align:center}.navbar ul.navbar-compact-nav>li>a:focus,.navbar ul.navbar-compact-nav>li>a:hover,.navbar ul.navbar-compact-nav>li>button:focus,.navbar ul.navbar-compact-nav>li>button:hover{color:#333;background-color:transparent}.navbar ul.navbar-compact-nav>li>a>img,.navbar ul.navbar-compact-nav>li>button>img{width:24px;height:24px}.navbar ul.navbar-compact-nav>li>button{padding-top:10px;padding-bottom:10px}.nav-side>a>.material-icon{margin:-5px 10px -5px -5px;position:relative;bottom:2px;width:24px;height:24px}@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:url(../fonts/MaterialIcons-Regular.eot);src:local('Material Icons'),local('MaterialIcons-Regular'),url(../fonts/MaterialIcons-Regular.woff2) format('woff2'),url(../fonts/MaterialIcons-Regular.woff) format('woff'),url(../fonts/MaterialIcons-Regular.ttf) format('truetype')}.material-icon{font-family:'Material Icons';font-style:normal;display:inline-block;width:1em;height:1em;line-height:1;text-align:center;text-transform:none;letter-spacing:normal;vertical-align:middle;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:'liga'}@media screen and (max-width:991px){.modal-message{text-align:center}.modal-message .message-icon{margin:30px}.modal-message .message-icon .material-icon{font-size:160px}}@media screen and (min-width:992px){.modal-message .modal-body{padding-top:20px;padding-bottom:30px}.modal-message .message-icon{float:left}.modal-message .message-icon .material-icon{font-size:50px}.modal-message .message-body{margin-left:75px;margin-top:10px}.modal-message .message-body .lead{margin-bottom:0}}.modal-loader{padding:50px 0}.modal-loader .loader{width:100%;height:80px;text-align:center}.modal-loader .loader-spinning-wheel{width:80px;height:80px}.modal-register .modal-footer a{float:left;margin-top:6.67px}@media screen and (max-width:991px){.modal-register .modal-footer{text-align:center}.modal-register .modal-footer a{display:block}.modal-register .modal-footer .btn{display:block;float:none;margin-top:10px;width:100%}}.has-feedback .material-icon.form-control-feedback{top:6px;right:24px;font-size:1.42857143;line-height:1.42857143}.well.well-form.well-done{font-size:18px;text-align:center}.well.well-form.well-done .message-icon{margin-bottom:10px;font-size:90px;line-height:90px}.well.well-form.well-done .message-body{margin-bottom:6.67px}.well.well-form.well-noscript{font-size:18px;text-align:center}.well.well-form.well-noscript .message-icon{margin-bottom:10px;font-size:90px;line-height:90px}.btn.btn-select,.btn.btn-yes-no{background:0 0;border:1px solid #eee}.btn.btn-select .material-icon,.btn.btn-yes-no .material-icon{margin:-4px 8px -4px 0;position:relative;bottom:1px;width:20px;height:20px;font-size:20px;line-height:20px}input.hidden-file-upload{position:absolute;top:-9999px;left:-9999px}.btn.btn-loading,.btn.btn-loading:active,.btn.btn-loading:focus,.btn.btn-loading:hover,.btn.btn-loading:link,.btn.btn-loading:visited{color:transparent}.btn.btn-loading .loader,.btn.btn-loading:active .loader,.btn.btn-loading:focus .loader,.btn.btn-loading:hover .loader,.btn.btn-loading:link .loader,.btn.btn-loading:visited .loader{height:20px;margin-top:-20px}.btn.btn-loading .loader>div,.btn.btn-loading:active .loader>div,.btn.btn-loading:focus .loader>div,.btn.btn-loading:hover .loader>div,.btn.btn-loading:link .loader>div,.btn.btn-loading:visited .loader>div{width:20px;height:20px}.btn.btn-loading.btn-default .loader>div{border-top-color:#333;border-bottom-color:#333}.btn.btn-loading.btn-danger .loader>div,.btn.btn-loading.btn-info .loader>div,.btn.btn-loading.btn-primary .loader>div,.btn.btn-loading.btn-success .loader>div,.btn.btn-loading.btn-warning .loader>div{border-top-color:#fff;border-bottom-color:#fff}.dropdown-menu>li>.btn-link,.dropdown-menu>li>a{display:block;border:none;clear:both;float:none;padding:4px 20px;width:100%;color:#333;font-weight:400;line-height:1.42857143;text-align:left;white-space:nowrap}.dropdown-menu>li>.btn-link:focus,.dropdown-menu>li>.btn-link:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#f5f5f5;color:#262626;text-decoration:none}.dropdown-menu>li>.btn-link .material-icon,.dropdown-menu>li>a .material-icon{margin:-2px 7px -2px 0;position:relative;bottom:1px;font-size:18px}.dropdown-menu .dropdown-footer{padding:6px 20px}.compact-nav,.mobile-dropdown{position:static;margin:0;overflow:auto}.compact-nav.open,.mobile-dropdown.open{margin-top:-20px;margin-bottom:20px}.compact-nav.open>.dropdown-menu,.mobile-dropdown.open>.dropdown-menu{border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none;display:block;margin:0;width:100%;position:static}.user-dropdown .guest-preview{text-align:center}.user-dropdown .guest-preview .row{margin:0}.navbar .user-dropdown{width:240px}.user-dropdown .dropdown-header{padding:6px 20px;font-size:18px}.page-header{margin:0 0 20px}@media screen and (max-width:991px){.container h1{font-size:22.5px}.container>.btn{float:right;margin-top:13px}.container>.btn-dropdown-toggle .material-icon{width:24px;height:24px;font-size:24px;line-height:24px}}.misago-footer{margin-top:30px;margin-bottom:50px}.misago-footer .footer-content{border-top:1px solid #eee;padding-top:30px}.misago-footer .noscript-message .material-icon{position:relative;bottom:1px;font-size:18px}.ui-preview,.ui-preview-img,.ui-preview-text{background:#fafafa;border-radius:5px;color:#fafafa;-webkit-animation:ui-preview-animation 1.5s linear infinite;-o-animation:ui-preview-animation 1.5s linear infinite;animation:ui-preview-animation 1.5s linear infinite}@-webkit-keyframes ui-preview-animation{0%,100%{background:#fafafa;color:#fafafa}50%{background:#e0e0e0;color:#e0e0e0}}@keyframes ui-preview-animation{0%,100%{background:#fafafa;color:#fafafa}50%{background:#e0e0e0;color:#e0e0e0}}.ui-preview-text{border-radius:6px;display:inline-block;height:14px;position:relative;top:3px}.ui-preview .list-group{padding:1px}.ui-preview .list-group>li{border:none;margin-bottom:1px}.ui-preview .list-group>li:last-child{margin-bottom:0}.item-title{color:#333;font-weight:700;text-decoration:none}a.item-title:active,a.item-title:hover,a.item-title:link,a.item-title:visited{color:#333;font-weight:700;text-decoration:underline}.modal-change-avatar .modal-avatar-index .avatar-preview{border-radius:6px;margin:0 auto;overflow:hidden;position:relative;width:200px;height:200px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader{display:none;position:absolute;top:50px;height:100px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel{border-width:10px;border-color:#fff transparent;width:100px;height:100px}.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading img{opacity:.33;filter:alpha(opacity=33)}.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading .loader{display:block}@media (max-width:767px){.modal-change-avatar .modal-avatar-index .avatar-preview{margin-bottom:20px;width:150px;height:150px}.modal-change-avatar .modal-avatar-index .avatar-preview img{width:150px;height:150px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader{top:25px;height:100px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel{width:100px;height:100px}}.modal-change-avatar .modal-avatar-index .btn{text-align:left}.modal-change-avatar .modal-avatar-upload{text-align:center}.modal-change-avatar .modal-avatar-upload .btn-pick-file{background:0 0;border:2px solid #eee;border-radius:6px;padding:10px 24px;-webkit-box-shadow:none;box-shadow:none;color:#777;font-size:18px;text-align:center}.modal-change-avatar .modal-avatar-upload .btn-pick-file>.material-icon{display:block;margin:0 auto 13.2px;font-size:50px;width:50px;height:50px}.modal-change-avatar .modal-avatar-upload .btn-pick-file:active,.modal-change-avatar .modal-avatar-upload .btn-pick-file:hover{border-color:#777}.modal-change-avatar .modal-avatar-upload .text-muted{margin-top:13.2px}.modal-change-avatar .modal-avatar-upload .upload-progress img{border-radius:4px;margin-bottom:20px;max-height:80px;width:auto}.modal-change-avatar .modal-avatar-upload .upload-progress .progress{width:70%;margin:0 auto}.modal-avatar-crop .crop-form{margin:0 auto}.modal-avatar-crop .crop-form .cropit-image-zoom-input{margin-top:10px;-webkit-appearance:none;border:1px solid #fff;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-runnable-track{width:100%;height:8px;background:#eee;border:none;border-radius:3px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:20px;width:20px;border-radius:50%;background:#777;margin-top:-6px}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-webkit-slider-runnable-track{background:#eee}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-track{width:100%;height:8px;background:#eee;border:none;border-radius:4px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-thumb{border:none;height:20px;width:20px;border-radius:50%;background:#777}.modal-avatar-crop .crop-form .cropit-image-zoom-input:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-track{width:100%;height:8px;background:0 0;border-color:transparent;border-width:8px 0;color:transparent}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-lower{background:#eee;border-radius:16px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-upper{background:#eee;border-radius:16px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-thumb{border:none;height:20px;width:20px;border-radius:50%;background:#777}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-lower{background:#eee}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-upper{background:#eee}.modal-change-avatar .modal-avatar-gallery{padding-bottom:0}.modal-change-avatar .modal-avatar-gallery .avatars-gallery{margin-bottom:20px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery h3{margin-top:0}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .row{margin-bottom:10px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn{border-radius:6px;border:2px solid #eee;background:0 0;padding:2px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:focus,.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:hover{border-color:#777}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn.avatar-selected,.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:active{border-color:#337ab7}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn img{border-radius:4px;width:100%}@media screen and (max-width:991px){.page-error,.page-message{text-align:center}.page-error .message-icon,.page-message .message-icon{margin:30px}.page-error .message-icon .material-icon,.page-message .message-icon .material-icon{font-size:160px}}@media screen and (min-width:992px){.page-error .message-panel,.page-message .message-panel{margin:60px auto;max-width:779.35px;overflow:auto}.page-error .message-icon,.page-message .message-icon{float:left}.page-error .message-icon .material-icon,.page-message .message-icon .material-icon{font-size:80px}.page-error .message-body,.page-message .message-body{margin-left:100px}}.username-history .username-change-avatar{float:left}.username-history .username-change-avatar .user-avatar{margin-right:10px}.username-history .username-change-avatar .user-avatar img{width:42px;height:42px}.username-history .username-change .material-icon{margin:0 7px}.username-history .username-change-date{color:#777;font-size:12px}@media screen and (min-width:992px){.username-history li{overflow:auto}.username-history li.empty-message{text-align:center}.username-history .username-change-avatar{float:left}.username-history .username-change-avatar .user-avatar{margin-right:10px}.username-history .username-change-avatar .user-avatar img{width:18px;height:18px;position:relative;bottom:1px}.username-history .username-change-author{float:left;width:30%}.username-history .username-change{float:left;width:40%}.username-history .username-change-date{float:left;width:20%}.username-history.ui-ready .username-change-date{position:relative;top:2px}}

+ 6 - 4
misago/static/misago/js/misago.js

@@ -1,5 +1,7 @@
-!function e(t,n,a){function r(s,i){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!i&&u)return u(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return r(n?n:e)},c,c.exports,e,t,n,a)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s<a.length;s++)r(a[s]);return r}({1:[function(e,t,n){(function(t){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Misago=void 0;var s=e("../../../../documents/misago/frontend/src/utils/ordered-list"),i=a(s),u=n.Misago=function(){function e(){r(this,e),this._initializers=[],this._context={}}return o(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e;var n=new i["default"](this._initializers).orderedValues();n.forEach(function(e){e(t)})}},{key:"has",value:function(e){return this._context.hasOwnProperty(e)}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}}]),e}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../../../documents/misago/frontend/src/utils/ordered-list":67}],2:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){u["default"].init(s["default"].get("CSRF_COOKIE_NAME"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=a(i);s["default"].addInitializer({name:"ajax",initializer:r})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/ajax":53}],3:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){(0,d["default"])((0,o.connect)(u.select)(l["default"]),"auth-message-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("react-redux"),s=e("../../../../../documents/misago/frontend/src/index"),i=a(s),u=e("../../../../../documents/misago/frontend/src/components/auth-message"),l=a(u),c=e("../../../../../documents/misago/frontend/src/utils/mount-component"),d=a(c);i["default"].addInitializer({name:"component:auth-message",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/components/auth-message":24,"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/utils/mount-component":66,"react-redux":"react-redux"}],4:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){c["default"].addReducer("auth",u["default"],Object.assign({isAuthenticated:e.get("isAuthenticated"),isAnonymous:!e.get("isAuthenticated"),user:e.get("user")},i.initialState))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/reducers/auth"),u=a(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:auth",initializer:r,before:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/reducers/auth":49,"../../../../../documents/misago/frontend/src/services/store":61}],5:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){u["default"].init(f["default"],m["default"],c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/auth"),u=a(i),l=e("../../../../../documents/misago/frontend/src/services/modal"),c=a(l),d=e("../../../../../documents/misago/frontend/src/services/store"),f=a(d),p=e("../../../../../documents/misago/frontend/src/services/local-storage"),m=a(p);s["default"].addInitializer({name:"auth",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/auth":54,"../../../../../documents/misago/frontend/src/services/local-storage":57,"../../../../../documents/misago/frontend/src/services/modal":59,"../../../../../documents/misago/frontend/src/services/store":61}],6:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){e.get("BAN_MESSAGE")&&(0,u["default"])(e.get("BAN_MESSAGE"),!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/utils/banned-page"),u=a(i);s["default"].addInitializer({name:"component:baned-page",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/utils/banned-page":63}],7:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){c["default"].init(e,u["default"],f["default"],m["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=a(i),l=e("../../../../../documents/misago/frontend/src/services/captcha"),c=a(l),d=e("../../../../../documents/misago/frontend/src/services/include"),f=a(d),p=e("../../../../../documents/misago/frontend/src/services/snackbar"),m=a(p);s["default"].addInitializer({name:"captcha",initializer:r})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/ajax":53,"../../../../../documents/misago/frontend/src/services/captcha":55,"../../../../../documents/misago/frontend/src/services/include":56,"../../../../../documents/misago/frontend/src/services/snackbar":60}],8:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){u["default"].init(e.get("STATIC_URL"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/include"),u=a(i);s["default"].addInitializer({name:"include",initializer:r})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/include":56}],9:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){u["default"].init("misago_")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/local-storage"),u=a(i);s["default"].addInitializer({name:"local-storage",initializer:r})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/local-storage":57}],10:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){var e=document.getElementById("mobile-navbar-dropdown-mount");e&&u["default"].init(e)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown"),u=a(i);s["default"].addInitializer({name:"dropdown",initializer:r,before:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown":58}],11:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){var e=document.getElementById("modal-mount");e&&u["default"].init(e)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/modal"),u=a(i);s["default"].addInitializer({name:"modal",initializer:r,before:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/modal":59}],12:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){s["default"].locale($("html").attr("lang"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("moment"),s=a(o),i=e("../../../../../documents/misago/frontend/src/index"),u=a(i);u["default"].addInitializer({name:"moment",initializer:r})},{"../../../../../documents/misago/frontend/src/index":48,moment:"moment"}],13:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){document.getElementById("request-activation-link-mount")&&(0,c["default"])(u["default"],"request-activation-link-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/components/request-activation-link"),u=a(i),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=a(l);s["default"].addInitializer({name:"component:request-activation-link",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/components/request-activation-link":40,"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/utils/mount-component":66}],14:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){document.getElementById("request-password-reset-mount")&&(0,c["default"])(u["default"],"request-password-reset-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/components/request-password-reset"),u=a(i),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=a(l);s["default"].addInitializer({name:"component:request-password-reset",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/components/request-password-reset":41,"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/utils/mount-component":66}],15:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){document.getElementById("reset-password-form-mount")&&(0,c["default"])(u["default"],"reset-password-form-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/components/reset-password-form"),u=a(i),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=a(l);s["default"].addInitializer({name:"component:reset-password-form",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/components/reset-password-form":42,"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/utils/mount-component":66}],16:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){(0,c["default"])((0,o.connect)(u.select)(u.Snackbar),"snackbar-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("react-redux"),s=e("../../../../../documents/misago/frontend/src/index"),i=a(s),u=e("../../../../../documents/misago/frontend/src/components/snackbar"),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=a(l);i["default"].addInitializer({name:"component:snackbar",initializer:r,after:"snackbar"})},{"../../../../../documents/misago/frontend/src/components/snackbar":44,"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/utils/mount-component":66,"react-redux":"react-redux"}],17:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){c["default"].addReducer("snackbar",u["default"],i.initialState)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/reducers/snackbar"),u=a(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:snackbar",initializer:r,before:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/reducers/snackbar":50,"../../../../../documents/misago/frontend/src/services/store":61}],18:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){u["default"].init(c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/snackbar"),u=a(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"snackbar",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/snackbar":60,"../../../../../documents/misago/frontend/src/services/store":61}],19:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){u["default"].init()}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/store"),u=a(i);s["default"].addInitializer({name:"store",initializer:r,before:"_end"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/store":61}],20:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){c["default"].addReducer("tick",u["default"],i.initialState)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/reducers/tick"),u=a(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:tick",initializer:r,before:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/reducers/tick":51,"../../../../../documents/misago/frontend/src/services/store":61}],21:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){window.setInterval(function(){l["default"].dispatch((0,i.doTick)())},c)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/reducers/tick"),u=e("../../../../../documents/misago/frontend/src/services/store"),l=a(u),c=5e4;s["default"].addInitializer({name:"tick-start",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/reducers/tick":51,"../../../../../documents/misago/frontend/src/services/store":61}],22:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){(0,c["default"])((0,o.connect)(u.select)(u.UserMenu),"user-menu-mount"),(0,c["default"])((0,o.connect)(u.select)(u.CompactUserMenu),"user-menu-compact-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("react-redux"),s=e("../../../../../documents/misago/frontend/src/index"),i=a(s),u=e("../../../../../documents/misago/frontend/src/components/user-menu/root"),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=a(l);i["default"].addInitializer({name:"component:user-menu",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/components/user-menu/root":46,"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/utils/mount-component":66,"react-redux":"react-redux"}],23:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){c["default"].init(u["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../documents/misago/frontend/src/index"),s=a(o),i=e("../../../../../documents/misago/frontend/src/services/include"),u=a(i),l=e("../../../../../documents/misago/frontend/src/services/zxcvbn"),c=a(l);s["default"].addInitializer({name:"zxcvbn",initializer:r})},{"../../../../../documents/misago/frontend/src/index":48,"../../../../../documents/misago/frontend/src/services/include":56,"../../../../../documents/misago/frontend/src/services/zxcvbn":62}],24:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}function i(e){return{user:e.auth.user,signedIn:e.auth.signedIn,signedOut:e.auth.signedOut}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i;var l=e("react"),c=a(l),d=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"refresh",value:function(){window.location.reload()}},{key:"getMessage",value:function(){return this.props.signedIn?interpolate(gettext("You have signed in as %(username)s. Please refresh the page before continuing."),{username:this.props.signedIn.username},!0):this.props.signedOut?interpolate(gettext("%(username)s, you have been signed out. Please refresh the page before continuing."),{username:this.props.user.username},!0):void 0}},{key:"getClassName",value:function(){return this.props.signedIn||this.props.signedOut?"auth-message show":"auth-message"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"container"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-default",onClick:this.refresh},gettext("Reload page"))," ",c["default"].createElement("span",{className:"hidden-xs hidden-sm text-muted"},gettext("or press F5 key.")))))}}]),t}(c["default"].Component);n["default"]=d},{react:"react"}],25:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=$("base").attr("href")+"user-avatar/",d=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getSrc",value:function(){var e=this.props.size||100,t=c;return t+=this.props.user&&this.props.user.id?this.props.user.avatar_hash+"/"+e+"/"+this.props.user.id+".png":e+".png"}},{key:"render",value:function(){return l["default"].createElement("img",{src:this.getSrc(),className:this.props.className||"user-avatar",title:gettext("User avatar")})}}]),t}(l["default"].Component);n["default"]=d},{react:"react"}],26:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("moment"),l=a(u),c=e("react"),d=a(c),f=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getReasonMessage",value:function(){return this.props.message.html?d["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.message.html}}):d["default"].createElement("p",{className:"lead"},this.props.message.plain)}},{key:"getExpirationMessage",value:function(){return this.props.expires?this.props.expires.isAfter((0,l["default"])())?interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.props.expires.fromNow()},!0):gettext("This ban has expired."):gettext("This ban is permanent.")}},{key:"render",value:function(){return d["default"].createElement("div",{className:"page page-error page-error-banned"},d["default"].createElement("div",{className:"container"},d["default"].createElement("div",{className:"message-panel"},d["default"].createElement("div",{className:"message-icon"},d["default"].createElement("span",{className:"material-icon"},"highlight_off")),d["default"].createElement("div",{className:"message-body"},this.getReasonMessage(),d["default"].createElement("p",{className:"message-footnote"},this.getExpirationMessage())))))}}]),t}(d["default"].Component);n["default"]=f},{moment:"moment",react:"react"}],27:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("./loader"),d=a(c),f=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e="btn "+this.props.className,t=this.props.disabled;return this.props.loading&&(e+=" btn-loading",t=!0),l["default"].createElement("button",{type:this.props.onClick?"button":"submit",className:e,disabled:t,onClick:this.props.onClick},this.props.children,this.props.loading?l["default"].createElement(d["default"],null):null)}}]),t}(l["default"].Component);n["default"]=f,f.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},{"./loader":35,react:"react"}],28:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("../avatar"),d=(a(c),e("../button")),f=a(d),p=e("../../services/ajax"),m=a(p),h=e("../../services/snackbar"),v=a(h),g=$("base").attr("href")+"user-avatar",b=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.cropAvatar=function(){if(n.state.isLoading)return!1;n.setState({isLoading:!0});var e=n.props.upload?"crop_tmp":"crop_org",t=$(".crop-form");m["default"].post(n.props.user.avatar_api_url,{avatar:e,crop:{offset:t.cropit("offset"),zoom:t.cropit("zoom")}}).then(function(e){n.props.onComplete(e.avatar_hash,e.options),v["default"].success(e.detail)},function(e){400===e.status?(v["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)})},n.state={isLoading:!1},n}return s(t,e),i(t,[{key:"getAvatarSize",value:function(){return this.props.upload?this.props.options.crop_tmp.size:this.props.options.crop_org.size}},{key:"getAvatarSecret",value:function(){return this.props.upload?this.props.options.crop_tmp.secret:this.props.options.crop_org.secret}},{key:"getAvatarHash",value:function(){return this.props.upload||this.props.user.avatar_hash}},{key:"getImagePath",value:function(){return[g,this.getAvatarSecret()+":"+this.getAvatarHash(),this.props.user.id+".png"].join("/")}},{key:"componentDidMount",value:function(){var e=this,t=$(".crop-form");t.width(this.getAvatarSize()),t.cropit({width:this.getAvatarSize(),height:this.getAvatarSize(),imageState:{src:this.getImagePath()},onImageLoaded:function(){if(e.props.upload){var n=t.cropit("zoom"),a=t.cropit("imageSize");if(a.width>a.height){var r=a.width*n,o=(r-e.getAvatarSize())/-2;t.cropit("offset",{x:o,y:0})}else if(a.width<a.height){var s=a.height*n,i=(s-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}}else{var u=e.props.options.crop_org.crop;u&&(t.cropit("zoom",u.zoom),t.cropit("offset",{x:u.x,y:u.y}))}}})}},{key:"componentWillUnmount",value:function(){$(".crop-form").cropit("disable")}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-crop"},l["default"].createElement("div",{className:"crop-form"},l["default"].createElement("div",{className:"cropit-image-preview"}),l["default"].createElement("input",{type:"range",className:"cropit-image-zoom-input"}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(f["default"],{onClick:this.cropAvatar,loading:this.state.isLoading,className:"btn-primary btn-block"},this.props.upload?gettext("Set avatar"):gettext("Crop image")),l["default"].createElement(f["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel")))))}}]),t}(l["default"].Component);n["default"]=b},{"../../services/ajax":53,"../../services/snackbar":60,"../avatar":25,"../button":27,react:"react"}],29:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Gallery=n.GalleryItem=void 0;var u=e("react"),l=a(u),c=e("../button"),d=a(c),f=e("../../index"),p=a(f),m=e("../../services/ajax"),h=a(m),v=e("../../services/snackbar"),g=a(v),b=e("../../utils/batch"),y=a(b),_=n.GalleryItem=function(e){function t(){var e,n,a,s;r(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),a.select=function(){a.props.select(a.props.image)},s=n,o(a,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.selection===this.props.image?this.props.disabled?"btn btn-avatar btn-disabled avatar-selected":"btn btn-avatar avatar-selected":this.props.disabled?"btn btn-avatar btn-disabled":"btn btn-avatar"}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},l["default"].createElement("img",{src:p["default"].get("MEDIA_URL")+this.props.image}))}}]),t}(l["default"].Component),w=n.Gallery=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"avatars-gallery"},l["default"].createElement("h3",null,this.props.name),l["default"].createElement("div",{className:"avatars-gallery-images"},(0,y["default"])(this.props.images,4,null).map(function(t,n){return l["default"].createElement("div",{className:"row",key:n},t.map(function(t,n){return l["default"].createElement("div",{className:"col-xs-3",key:n},t?l["default"].createElement(_,{image:t,disabled:e.props.disabled,select:e.props.select,selection:e.props.selection}):l["default"].createElement("div",{className:"blank-avatar"}))}))})))}}]),t}(l["default"].Component),E=function(e){function t(e){
-r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.select=function(e){n.setState({selection:e})},n.save=function(){return n.state.isLoading?!1:(n.setState({isLoading:!0}),void h["default"].post(n.props.user.avatar_api_url,{avatar:"galleries",image:n.state.selection}).then(function(e){n.setState({isLoading:!1}),g["default"].success(e.detail),n.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(g["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)}))},n.state={selection:null,isLoading:!1},n}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-gallery"},this.props.options.galleries.map(function(t,n){return l["default"].createElement(w,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select,key:n})})),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(d["default"],{onClick:this.save,loading:this.state.isLoading,disabled:!this.state.selection,className:"btn-primary btn-block"},this.state.selection?gettext("Save choice"):gettext("Select avatar")),l["default"].createElement(d["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel"))))))}}]),t}(l["default"].Component);n["default"]=E},{"../../index":48,"../../services/ajax":53,"../../services/snackbar":60,"../../utils/batch":64,"../button":27,react:"react"}],30:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("../avatar"),d=a(c),f=e("../button"),p=a(f),m=e("../loader"),h=a(m),v=e("../../services/ajax"),g=a(v),b=e("../../services/snackbar"),y=a(b),_=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.setGravatar=function(){n.callApi("gravatar")},n.setGenerated=function(){n.callApi("generated")},n.state={isLoading:!1},n}return s(t,e),i(t,[{key:"callApi",value:function(e){var t=this;return this.state.isLoading?!1:(this.setState({isLoading:!0}),void g["default"].post(this.props.user.avatar_api_url,{avatar:e}).then(function(e){t.setState({isLoading:!1}),y["default"].success(e.detail),t.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(y["default"].error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))}},{key:"getGravatarButton",value:function(){return this.props.options.gravatar?l["default"].createElement(p["default"],{onClick:this.setGravatar,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gravatar"},gettext("Download my Gravatar")):null}},{key:"getCropButton",value:function(){return this.props.options.crop_org?l["default"].createElement(p["default"],{onClick:this.props.showCrop,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-crop"},gettext("Re-crop uploaded image")):null}},{key:"getUploadButton",value:function(){return this.props.options.upload?l["default"].createElement(p["default"],{onClick:this.props.showUpload,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-upload"},gettext("Upload new image")):null}},{key:"getGalleryButton",value:function(){return this.props.options.galleries?l["default"].createElement(p["default"],{onClick:this.props.showGallery,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gallery"},gettext("Pick avatar from gallery")):null}},{key:"getAvatarPreview",value:function(){return this.state.isLoading?l["default"].createElement("div",{className:"avatar-preview preview-loading"},l["default"].createElement(d["default"],{user:this.props.user,size:"200"}),l["default"].createElement(h["default"],null)):l["default"].createElement("div",{className:"avatar-preview"},l["default"].createElement(d["default"],{user:this.props.user,size:"200"}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-index"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-5"},this.getAvatarPreview()),l["default"].createElement("div",{className:"col-md-7"},this.getGravatarButton(),l["default"].createElement(p["default"],{onClick:this.setGenerated,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-generate"},gettext("Generate my individual avatar")),this.getCropButton(),this.getUploadButton(),this.getGalleryButton())))}}]),t}(l["default"].Component);n["default"]=_},{"../../services/ajax":53,"../../services/snackbar":60,"../avatar":25,"../button":27,"../loader":35,react:"react"}],31:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}function i(e){return{user:e.auth.user}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.ChangeAvatarError=void 0,n.select=i;var l=e("react"),c=a(l),d=e("./index"),f=a(d),p=e("./crop"),m=a(p),h=e("./upload"),v=a(h),g=e("./gallery"),b=a(g),y=e("../modal-loader"),_=a(y),w=e("../../reducers/users"),E=e("../../services/ajax"),k=a(E),O=e("../../services/store"),x=a(O),j=n.ChangeAvatarError=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"getErrorReason",value:function(){return this.props.reason?c["default"].createElement("p",{dangerouslySetInnerHTML:{__html:this.props.reason}}):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"remove_circle_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.props.message),this.getErrorReason()))}}]),t}(c["default"].Component),N=function(e){function t(){var e,n,a,s;r(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),a.showError=function(e){a.setState({error:e})},a.showIndex=function(){a.setState({component:f["default"]})},a.showUpload=function(){a.setState({component:v["default"]})},a.showCrop=function(){a.setState({component:m["default"]})},a.showGallery=function(){a.setState({component:b["default"]})},a.completeFlow=function(e,t){x["default"].dispatch((0,w.updateAvatar)(a.props.user,e)),a.setState({component:f["default"],options:t})},s=n,o(a,s)}return s(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this;k["default"].get(this.props.user.avatar_api_url).then(function(t){e.setState({component:f["default"],options:t,error:null})},function(t){e.showError(t)})}},{key:"getBody",value:function(){return this.state?this.state.error?c["default"].createElement(j,{message:this.state.error.detail,reason:this.state.error.reason}):c["default"].createElement(this.state.component,{options:this.state.options,user:this.props.user,onComplete:this.completeFlow,showError:this.showError,showIndex:this.showIndex,showCrop:this.showCrop,showUpload:this.showUpload,showGallery:this.showGallery}):c["default"].createElement(_["default"],null)}},{key:"getClassName",value:function(){return this.state&&this.state.error?"modal-dialog modal-message modal-change-avatar":"modal-dialog modal-change-avatar"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Change your avatar"))),this.getBody()))}}]),t}(c["default"].Component);n["default"]=N},{"../../reducers/users":52,"../../services/ajax":53,"../../services/store":61,"../modal-loader":36,"./crop":28,"./gallery":29,"./index":30,"./upload":32,react:"react"}],32:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("./crop"),d=a(c),f=e("../button"),p=a(f),m=e("../../services/ajax"),h=a(m),v=e("../../services/snackbar"),g=a(v),b=e("../../utils/file-size"),y=a(b),_=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.pickFile=function(){document.getElementById("avatar-hidden-upload").click()},n.uploadFile=function(){var e=document.getElementById("avatar-hidden-upload").files[0],t=n.validateFile(e);if(t)return void g["default"].error(t);n.setState({image:e,preview:URL.createObjectURL(e),progress:0});var a=new FormData;a.append("avatar","upload"),a.append("image",e),h["default"].upload(n.props.user.avatar_api_url,a,function(e){n.setState({progress:e})}).then(function(e){n.setState({options:e.options,uploaded:e.detail}),g["default"].info(gettext("Your image has been uploaded and you may now crop it."))},function(e){400===e.status?(g["default"].error(e.detail),n.setState({isLoading:!1,image:null,progress:0})):n.props.showError(e)})},n.state={image:null,preview:null,progress:0,uploaded:null},n}return s(t,e),i(t,[{key:"validateFile",value:function(e){if(e.size>this.props.options.upload.limit)return interpolate(gettext("Selected file is too big. (%(filesize)s)"),{filesize:(0,y["default"])(e.size)},!0);var t=gettext("Selected file type is not supported.");if(-1===this.props.options.upload.allowed_mime_types.indexOf(e.type))return t;var n=!1,a=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map(function(e){a.substr(-1*e.length)===e&&(n=!0)}),n?!1:t}},{key:"getUploadRequirements",value:function(e){var t=e.allowed_extensions.map(function(e){return e.substr(1)});return interpolate(gettext("%(files)s files smaller than %(limit)s"),{files:t.join(", "),limit:(0,y["default"])(e.limit)},!0)}},{key:"getUploadButton",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement(p["default"],{className:"btn-pick-file",onClick:this.pickFile},l["default"].createElement("div",{className:"material-icon"},"input"),gettext("Select file")),l["default"].createElement("p",{className:"text-muted"},this.getUploadRequirements(this.props.options.upload)))}},{key:"getUploadProgressLabel",value:function(){return interpolate(gettext("%(progress)s % complete"),{progress:this.state.progress},!0)}},{key:"getUploadProgress",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement("div",{className:"upload-progress"},l["default"].createElement("img",{src:this.state.preview}),l["default"].createElement("div",{className:"progress"},l["default"].createElement("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},l["default"].createElement("span",{className:"sr-only"},this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return l["default"].createElement("div",null,l["default"].createElement("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(p["default"],{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},gettext("Cancel")))))}},{key:"renderCrop",value:function(){return l["default"].createElement(d["default"],{options:this.state.options,user:this.props.user,upload:this.state.uploaded,onComplete:this.props.onComplete,showError:this.props.showError,showIndex:this.props.showIndex})}},{key:"render",value:function(){return this.state.uploaded?this.renderCrop():this.renderUpload()}}]),t}(l["default"].Component);n["default"]=_},{"../../services/ajax":53,"../../services/snackbar":60,"../../utils/file-size":65,"../button":27,"./crop":28,react:"react"}],33:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"isValidated",value:function(){return"undefined"!=typeof this.props.validation}},{key:"getClassName",value:function(){var e="form-group";return this.isValidated()&&(e+=" has-feedback",e+=null===this.props.validation?" has-success":" has-error"),e}},{key:"getFeedback",value:function(){var e=this;return this.props.validation?l["default"].createElement("div",{className:"help-block errors"},this.props.validation.map(function(t,n){return l["default"].createElement("p",{key:e.props["for"]+"FeedbackItem"+n},t)})):null}},{key:"getFeedbackIcon",value:function(){return this.isValidated()?l["default"].createElement("span",{className:"material-icon form-control-feedback","aria-hidden":"true",key:this.props["for"]+"FeedbackIcon"},this.props.validation?"clear":"check"):null}},{key:"getFeedbackDescription",value:function(){return this.isValidated()?l["default"].createElement("span",{id:this.props["for"]+"_status",className:"sr-only"},this.props.validation?gettext("(error)"):gettext("(success)")):null}},{key:"getHelpText",value:function(){return this.props.helpText?l["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("label",{className:"control-label "+(this.props.labelClass||""),htmlFor:this.props["for"]||""},this.props.label+":"),l["default"].createElement("div",{className:this.props.controlClass||""},this.props.children,this.getFeedbackIcon(),this.getFeedbackDescription(),this.getFeedback(),this.getHelpText(),this.props.extra||null))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],34:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("../utils/validators"),d=(0,c.required)(),f=function(e){function t(){var e,n,a,s;r(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),a.bindInput=function(e){return function(t){var n={};n[e]=t.target.value;var r=a.state.errors||{};r[e]=a.validateField(e,n[e]),n.errors=r,a.setState(n)}},a.handleSubmit=function(e){if(e.preventDefault(),!a.state.isLoading&&a.clean()){a.setState({isLoading:!0});var t=a.send();t?t.then(function(e){a.setState({isLoading:!1}),a.handleSuccess(e)},function(e){a.setState({isLoading:!1}),a.handleError(e)}):a.setState({isLoading:!1})}},s=n,o(a,s)}return s(t,e),i(t,[{key:"validate",value:function(){var e={},t={required:this.state.validators.required||this.state.validators,optional:this.state.validators.optional||{}},n=[];for(var a in t.required)t.required.hasOwnProperty(a)&&t.required[a]&&n.push(a);for(var a in t.optional)t.optional.hasOwnProperty(a)&&t.optional[a]&&n.push(a);for(var r in n){var a=n[r],o=this.validateField(a,this.state[a]);null===o?e[a]=null:o&&(e[a]=o)}return e}},{key:"isValid",value:function(){var e=this.validate();for(var t in e)if(e.hasOwnProperty(t)&&null!==e[t])return!1;return!0}},{key:"validateField",value:function(e,t){var n=[],a={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},r=d(t)||!1;if(a.required){if(r)n=[r];else for(var o in a.required){var s=a.required[o](t);s&&n.push(s)}return n.length?n:null}if(r===!1&&a.optional){for(var o in a.optional){var s=a.optional[o](t);s&&n.push(s)}return n.length?n:null}return!1}},{key:"clean",value:function(){return!0}},{key:"send",value:function(){return null}},{key:"handleSuccess",value:function(e){}},{key:"handleError",value:function(e){}}]),t}(l["default"].Component);n["default"]=f},{"../utils/validators":68,react:"react"}],35:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"loader"},l["default"].createElement("div",{className:"loader-spinning-wheel"}))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],36:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("./loader"),d=a(c),f=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body modal-loader"},l["default"].createElement(d["default"],null))}}]),t}(l["default"].Component);n["default"]=f},{"./loader":35,react:"react"}],37:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.LABELS=n.STYLES=void 0;var u=e("react"),l=a(u),c=e("../services/zxcvbn"),d=a(c),f=n.STYLES=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],p=n.LABELS=[gettext("Entered password is very weak."),gettext("Entered password is weak."),gettext("Entered password is average."),gettext("Entered password is strong."),gettext("Entered password is very strong.")],m=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n._score=0,n._password=null,n._inputs=[],n}return s(t,e),i(t,[{key:"getScore",value:function(e,t){var n=this,a=!1;return e.trim()!==this._password&&(a=!0),t.length!==this._inputs.length?a=!0:t.map(function(e,t){e.trim()!==n._inputs[t]&&(a=!0)}),a&&(this._score=d["default"].scorePassword(e,t),this._password=e.trim(),this._inputs=t.map(function(e){return e.trim()})),this._score}},{key:"render",value:function(){var e=this.getScore(this.props.password,this.props.inputs);return l["default"].createElement("div",{className:"help-block password-strength"},l["default"].createElement("div",{className:"progress"},l["default"].createElement("div",{className:"progress-bar "+f[e],style:{width:20+20*e+"%"},role:"progress-bar","aria-valuenow":e,"aria-valuemin":"0","aria-valuemax":"4"},l["default"].createElement("span",{className:"sr-only"},p[e]))),l["default"].createElement("p",{className:"text-small"},p[e]))}}]),t}(l["default"].Component);n["default"]=m},{"../services/zxcvbn":62,react:"react"}],38:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("./loader"),d=a(c),f=e("./register.js"),p=a(f),m=e("../services/captcha"),h=a(m),v=e("../services/modal"),g=a(v),b=e("../services/snackbar"),y=a(b),_=e("../services/zxcvbn"),w=a(_),E=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.showRegisterModal=function(){"closed"===misago.get("SETTINGS").account_activation?y["default"].info(gettext("New registrations are currently disabled.")):n.state.isLoaded?g["default"].show(p["default"]):(n.setState({isLoading:!0}),Promise.all([h["default"].load(),w["default"].load()]).then(function(){n.state.isLoaded||n.setState({isLoading:!1,isLoaded:!1}),g["default"].show(p["default"])}))},n.state={isLoading:!1,isLoaded:!1},n}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showRegisterModal,className:"btn "+this.getClassName(),disabled:this.state.isLoaded},gettext("Register"),this.state.isLoading?l["default"].createElement(d["default"],null):null)}}]),t}(l["default"].Component);n["default"]=E},{"../services/captcha":55,"../services/modal":59,"../services/snackbar":60,"../services/zxcvbn":62,"./loader":35,"./register.js":39,react:"react"}],39:[function(e,t,n){"use strict";function a(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}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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.RegisterComplete=n.RegisterForm=void 0;var l=e("react"),c=r(l),d=e("./button"),f=r(d),p=e("./form"),m=r(p),h=e("./form-group"),v=r(h),g=e("./password-strength"),b=r(g),y=e("../index"),_=r(y),w=e("../services/ajax"),E=r(w),k=e("../services/auth"),O=r(k),x=e("../services/captcha"),j=r(x),N=e("../services/modal"),P=r(N),C=e("../services/snackbar"),S=r(C),M=e("../utils/banned-page"),T=r(M),I=e("../utils/validators"),A=a(I),L=n.RegisterForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,username:"",email:"",password:"",captcha:"",validators:{username:[A.usernameContent(),A.usernameMinLength(_["default"].get("SETTINGS")),A.usernameMaxLength(_["default"].get("SETTINGS"))],email:[A.email()],password:[A.passwordMinLength(_["default"].get("SETTINGS"))],captcha:j["default"].validator()},errors:{}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(S["default"].error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return E["default"].post(_["default"].get("USERS_API"),{username:this.state.username,email:this.state.email,password:this.state.password,captcha:this.state.captcha})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),S["default"].error(gettext("Form contains errors."))):403===e.status&&e.ban?((0,T["default"])(e.ban),P["default"].hide()):S["default"].apiError(e)}},{key:"getLegalFootNote",value:function(){return _["default"].get("TERMS_OF_SERVICE_URL")?c["default"].createElement("a",{href:_["default"].get("TERMS_OF_SERVICE_URL"),target:"_blank"},gettext("By registering you agree to site's terms and conditions.")):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Register"))),c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("input",{type:"type",style:{display:"none"}}),c["default"].createElement("input",{type:"password",style:{display:"none"}}),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(v["default"],{label:gettext("Username"),"for":"id_username",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.username},c["default"].createElement("input",{type:"text",
-id:"id_username",className:"form-control","aria-describedby":"id_username_status",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username})),c["default"].createElement(v["default"],{label:gettext("E-mail"),"for":"id_email",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.email},c["default"].createElement("input",{type:"text",id:"id_email",className:"form-control","aria-describedby":"id_email_status",disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email})),c["default"].createElement(v["default"],{label:gettext("Password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.password,extra:c["default"].createElement(b["default"],{password:this.state.password,inputs:[this.state.username,this.state.email]})},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control","aria-describedby":"id_password_status",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password})),j["default"].component({form:this,labelClass:"col-sm-4",controlClass:"col-sm-8"})),c["default"].createElement("div",{className:"modal-footer"},this.getLegalFootNote(),c["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Register account"))))))}}]),t}(m["default"]),R=n.RegisterComplete=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getLead",value:function(){return"user"===this.props.activation?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===this.props.activation?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):void 0}},{key:"getSubscript",value:function(){return"user"===this.props.activation?gettext("We have sent an e-mail to %(email)s with link that you have to click to activate your account."):"admin"===this.props.activation?gettext("We will send an e-mail to %(email)s when this takes place."):void 0}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-message modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Registration complete"))),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},interpolate(this.getLead(),{username:this.props.username},!0)),c["default"].createElement("p",null,interpolate(this.getSubscript(),{email:this.props.email},!0))))))}}]),t}(c["default"].Component),z=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.completeRegistration=function(e){"active"===e.activation?(P["default"].hide(),O["default"].signIn(e)):n.setState({complete:e})},n.state={complete:!1},n}return i(t,e),u(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(R,{activation:this.state.complete.activation,username:this.state.complete.username,email:this.state.complete.email}):c["default"].createElement(L,{callback:this.completeRegistration})}}]),t}(c["default"].Component);n["default"]=z},{"../index":48,"../services/ajax":53,"../services/auth":54,"../services/captcha":55,"../services/modal":59,"../services/snackbar":60,"../utils/banned-page":63,"../utils/validators":68,"./button":27,"./form":34,"./form-group":33,"./password-strength":37,react:"react"}],40:[function(e,t,n){"use strict";function a(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}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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.LinkSent=n.RequestLinkForm=void 0;var l=e("react"),c=r(l),d=e("../index"),f=r(d),p=e("./button"),m=r(p),h=e("./form"),v=r(h),g=e("../services/ajax"),b=r(g),y=e("../services/snackbar"),_=r(y),w=e("../utils/validators"),E=a(w),k=e("../utils/banned-page"),O=r(k),x=n.RequestLinkForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[E.email()]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(_["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return b["default"].post(f["default"].get("SEND_ACTIVATION_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["already_active","inactive_admin"].indexOf(e.code)>-1?_["default"].info(e.detail):403===e.status&&e.ban?(0,O["default"])(e.ban):_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(m["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(v["default"]),j=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getMessage",value:function(){return interpolate(gettext("Activation link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),N=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.complete=function(e){n.setState({complete:e})},n.reset=function(){n.setState({complete:!1})},n.state={complete:!1},n}return i(t,e),u(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(j,{user:this.state.complete,callback:this.reset}):c["default"].createElement(x,{callback:this.complete})}}]),t}(c["default"].Component);n["default"]=N},{"../index":48,"../services/ajax":53,"../services/snackbar":60,"../utils/banned-page":63,"../utils/validators":68,"./button":27,"./form":34,react:"react"}],41:[function(e,t,n){"use strict";function a(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}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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.AccountInactivePage=n.LinkSent=n.RequestResetForm=void 0;var l=e("react"),c=r(l),d=e("react-dom"),f=r(d),p=e("../index"),m=r(p),h=e("./button"),v=r(h),g=e("./form"),b=r(g),y=e("../services/ajax"),_=r(y),w=e("../services/snackbar"),E=r(w),k=e("../utils/validators"),O=a(k),x=e("../utils/banned-page"),j=r(x),N=n.RequestResetForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[O.email()]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(E["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return _["default"].post(m["default"].get("SEND_PASSWORD_RESET_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["inactive_user","inactive_admin"].indexOf(e.code)>-1?this.props.showInactivePage(e):403===e.status&&e.ban?(0,j["default"])(e.ban):E["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(v["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(b["default"]),P=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getMessage",value:function(){return interpolate(gettext("Reset password link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),C=n.AccountInactivePage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?c["default"].createElement("p",null,c["default"].createElement("a",{href:m["default"].get("REQUEST_ACTIVATION_URL")},gettext("Activate your account."))):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-info page-forgotten-password-inactive"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("Your account is inactive.")),c["default"].createElement("p",null,this.props.message),this.getActivateButton()))))}}]),t}(c["default"].Component),S=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.complete=function(e){n.setState({complete:e})},n.reset=function(){n.setState({complete:!1})},n.state={complete:!1},n}return i(t,e),u(t,[{key:"showInactivePage",value:function(e){f["default"].render(c["default"].createElement(C,{activation:e.code,message:e.detail}),document.getElementById("page-mount"))}},{key:"render",value:function(){return this.state.complete?c["default"].createElement(P,{user:this.state.complete,callback:this.reset}):c["default"].createElement(N,{callback:this.complete,showInactivePage:this.showInactivePage})}}]),t}(c["default"].Component);n["default"]=S},{"../index":48,"../services/ajax":53,"../services/snackbar":60,"../utils/banned-page":63,"../utils/validators":68,"./button":27,"./form":34,react:"react","react-dom":"react-dom"}],42:[function(e,t,n){"use strict";function a(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}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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.PasswordChangedPage=n.ResetPasswordForm=void 0;var l=e("react"),c=r(l),d=e("react-dom"),f=r(d),p=e("../index"),m=r(p),h=e("./button"),v=r(h),g=e("./form"),b=r(g),y=e("./sign-in.js"),_=r(y),w=e("../services/ajax"),E=r(w),k=e("../services/auth"),O=r(k),x=e("../services/modal"),j=r(x),N=e("../services/snackbar"),P=r(N),C=e("../utils/validators"),S=a(C),M=e("../utils/banned-page"),T=r(M),I=n.ResetPasswordForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,password:"",validators:{password:[S.passwordMinLength(m["default"].get("SETTINGS"))]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(this.state.password.trim().length?P["default"].error(this.state.errors.password[0]):P["default"].error(gettext("Enter new password.")),!1)}},{key:"send",value:function(){return E["default"].post(m["default"].get("CHANGE_PASSWORD_API"),{password:this.state.password})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){403===e.status&&e.ban?(0,T["default"])(e.ban):P["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-reset-password"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"password",className:"form-control",placeholder:gettext("Enter new password"),disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement(v["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Change password"))))}}]),t}(b["default"]),A=n.PasswordChangedPage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getMessage",value:function(){return interpolate(gettext("%(username)s, your password has been changed successfully."),{username:this.props.user.username},!0)}},{key:"showSignIn",value:function(){j["default"].show(_["default"])}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-success page-forgotten-password-changed"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,gettext("You will have to sign in using new password before continuing.")),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-primary",onClick:this.showSignIn},gettext("Sign in")))))))}}]),t}(c["default"].Component),L=function(e){function t(){var e,n,a,r;o(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=a=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),a.complete=function(e){O["default"].softSignOut(),$('#hidden-login-form input[name="redirect_to"]').remove(),f["default"].render(c["default"].createElement(A,{user:e}),document.getElementById("page-mount"))},r=n,s(a,r)}return i(t,e),u(t,[{key:"render",value:function(){return c["default"].createElement(I,{callback:this.complete})}}]),t}(c["default"].Component);n["default"]=L},{"../index":48,"../services/ajax":53,"../services/auth":54,"../services/modal":59,"../services/snackbar":60,"../utils/banned-page":63,"../utils/validators":68,"./button":27,"./form":34,"./sign-in.js":43,react:"react","react-dom":"react-dom"}],43:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("../index"),d=a(c),f=e("./button"),p=a(f),m=e("./form"),h=a(m),v=e("../services/ajax"),g=a(v),b=e("../services/modal"),y=a(b),_=e("../services/snackbar"),w=a(_),E=e("../utils/banned-page"),k=a(E),O=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,showActivation:!1,username:"",password:"",validators:{username:[],password:[]}},n}return s(t,e),i(t,[{key:"clean",value:function(){return this.isValid()?!0:(w["default"].error(gettext("Fill out both fields.")),!1)}},{key:"send",value:function(){return g["default"].post(d["default"].get("AUTH_API"),{username:this.state.username,password:this.state.password})}},{key:"handleSuccess",value:function(){var e=$("#hidden-login-form");e.append('<input type="text" name="username" />'),e.append('<input type="password" name="password" />'),e.find('input[type="hidden"]').val(g["default"].getCsrfToken()),e.find('input[name="redirect_to"]').val(window.location.pathname),e.find('input[name="username"]').val(this.state.username),e.find('input[name="password"]').val(this.state.password),e.submit(),this.setState({isLoading:!0})}},{key:"handleError",value:function(e){400===e.status?"inactive_admin"===e.code?w["default"].info(e.detail):"inactive_user"===e.code?(w["default"].info(e.detail),this.setState({showActivation:!0})):"banned"===e.code?((0,k["default"])(e.detail),y["default"].hide()):w["default"].error(e.detail):403===e.status&&e.ban?((0,k["default"])(e.ban),y["default"].hide()):w["default"].apiError(e)}},{key:"getActivationButton",value:function(){return this.state.showActivation?l["default"].createElement("a",{href:d["default"].get("REQUEST_ACTIVATION_URL"),className:"btn btn-success btn-block"},gettext("Activate account")):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Sign in"))),l["default"].createElement("form",{onSubmit:this.handleSubmit},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["default"].createElement("input",{id:"id_username",className:"form-control",type:"text",disabled:this.state.isLoading,placeholder:gettext("Username or e-mail"),onChange:this.bindInput("username"),value:this.state.username}))),l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["default"].createElement("input",{id:"id_password",className:"form-control",type:"password",disabled:this.state.isLoading,placeholder:gettext("Password"),onChange:this.bindInput("password"),value:this.state.password})))),l["default"].createElement("div",{className:"modal-footer"},this.getActivationButton(),l["default"].createElement(p["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Sign in")),l["default"].createElement("a",{href:d["default"].get("FORGOTTEN_PASSWORD_URL"),className:"btn btn-default btn-block"},gettext("Forgot password?"))))))}}]),t}(h["default"]);n["default"]=O},{"../index":48,"../services/ajax":53,"../services/modal":59,"../services/snackbar":60,"../utils/banned-page":63,"./button":27,"./form":34,react:"react"}],44:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}function i(e){return e.snackbar}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Snackbar=void 0,n.select=i;var l=e("react"),c=a(l),d={info:"alert-info",success:"alert-success",warning:"alert-warning",error:"alert-danger"};n.Snackbar=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"getSnackbarClass",value:function(){var e="alerts-snackbar";return e+=this.props.isVisible?" in":" out"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getSnackbarClass()},c["default"].createElement("p",{className:"alert "+d[this.props.type]},this.props.message))}}]),t}(c["default"].Component)},{react:"react"}],45:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactGuestNav=n.GuestNav=n.GuestMenu=void 0;var u=e("react"),l=a(u),c=e("../avatar"),d=a(c),f=e("../register-button"),p=a(f),m=e("../sign-in.js"),h=a(m),v=e("../../services/mobile-navbar-dropdown"),g=a(v),b=e("../../services/modal"),y=a(b),_=n.GuestMenu=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showSignInModal",value:function(){y["default"].show(h["default"])}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},l["default"].createElement("li",{className:"guest-preview"},l["default"].createElement("h4",null,gettext("You are browsing as guest.")),l["default"].createElement("p",null,gettext("Sign in or register to start and participate in discussions.")),l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.showSignInModal},gettext("Sign in"))),l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement(p["default"],{className:"btn-primary btn-block"},gettext("Register"))))))}}]),t}(l["default"].Component);n.GuestNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"nav nav-guest"},l["default"].createElement("button",{type:"button",className:"btn navbar-btn btn-default",onClick:this.showSignInModal},gettext("Sign in")),l["default"].createElement(p["default"],{className:"navbar-btn btn-primary"},gettext("Register")))}}]),t}(_),n.CompactGuestNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showGuestMenu",value:function(){g["default"].show(_)}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showGuestMenu},l["default"].createElement(d["default"],{size:"64"}))}}]),t}(l["default"].Component)},{"../../services/mobile-navbar-dropdown":58,"../../services/modal":59,"../avatar":25,"../register-button":38,"../sign-in.js":43,react:"react"}],46:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}function i(e){return e.auth}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactUserMenu=n.UserMenu=void 0,n.select=i;var l=e("react"),c=a(l),d=e("./guest-nav"),f=e("./user-nav");n.UserMenu=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return this.props.isAuthenticated?c["default"].createElement(f.UserNav,{user:this.props.user}):c["default"].createElement(d.GuestNav,null)}}]),t}(c["default"].Component),n.CompactUserMenu=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return this.props.isAuthenticated?c["default"].createElement(f.CompactUserNav,{user:this.props.user}):c["default"].createElement(d.CompactGuestNav,null)}}]),t}(c["default"].Component)},{"./guest-nav":45,"./user-nav":47,react:"react"}],47:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function 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 s(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)}function i(e){return{user:e.auth.user}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactUserNav=n.UserNav=n.UserMenu=void 0,n.selectUserMenu=i;var l=e("react"),c=a(l),d=e("react-redux"),f=e("../avatar"),p=a(f),m=e("../change-avatar/root"),h=a(m),v=e("../../index"),g=a(v),b=e("../../services/mobile-navbar-dropdown"),y=a(b),_=e("../../services/modal"),w=a(_),E=n.UserMenu=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"logout",value:function(){var e=confirm(gettext("Are you sure you want to sign out?"));e&&$("#hidden-logout-form").submit()}},{key:"changeAvatar",value:function(){w["default"].show((0,d.connect)(m.select)(h["default"]))}},{key:"render",value:function(){return c["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",
-role:"menu"},c["default"].createElement("li",{className:"dropdown-header"},c["default"].createElement("strong",null,this.props.user.username)),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",null,c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement("span",{className:"material-icon"},"account_circle"),gettext("See your profile"))),c["default"].createElement("li",null,c["default"].createElement("a",{href:g["default"].get("USERCP_URL")},c["default"].createElement("span",{className:"material-icon"},"done_all"),gettext("Change options"))),c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.changeAvatar},c["default"].createElement("span",{className:"material-icon"},"face"),gettext("Change avatar"))),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",{className:"dropdown-footer"},c["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.logout},gettext("Log out"))))}}]),t}(c["default"].Component);n.UserNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return c["default"].createElement("ul",{className:"ul nav navbar-nav nav-user"},c["default"].createElement("li",{className:"dropdown"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",role:"button"},c["default"].createElement(p["default"],{user:this.props.user,size:"64"})),c["default"].createElement(E,{user:this.props.user})))}}]),t}(c["default"].Component),n.CompactUserNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"showUserMenu",value:function(){y["default"].showConnected("user-menu",(0,d.connect)(i)(E))}},{key:"render",value:function(){return c["default"].createElement("button",{type:"button",onClick:this.showUserMenu},c["default"].createElement(p["default"],{user:this.props.user,size:"64"}))}}]),t}(c["default"].Component)},{"../../index":48,"../../services/mobile-navbar-dropdown":58,"../../services/modal":59,"../avatar":25,"../change-avatar/root":31,react:"react","react-redux":"react-redux"}],48:[function(e,t,n){(function(t){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Misago=void 0;var s=e("./utils/ordered-list"),i=a(s),u=n.Misago=function(){function e(){r(this,e),this._initializers=[],this._context={}}return o(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e;var n=new i["default"](this._initializers).orderedValues();n.forEach(function(e){e(t)})}},{key:"has",value:function(e){return this._context.hasOwnProperty(e)}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}}]),e}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./utils/ordered-list":67}],49:[function(e,t,n){"use strict";function a(e){return{type:u,user:e}}function r(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];return{type:l,soft:e}}function o(){var e=arguments.length<=0||void 0===arguments[0]?i:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case u:return Object.assign({},e,{signedIn:t.user});case l:return Object.assign({},e,{isAuthenticated:!1,isAnonymous:!0,signedOut:!t.soft});case s.UPDATE_AVATAR:if(e.isAuthenticated&&e.user.id===t.userId){var n=Object.assign({},e);return n.user=Object.assign({},e.user,{avatar_hash:t.avatarHash}),n}return e;default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.SIGN_OUT=n.SIGN_IN=n.initialState=void 0,n.signIn=a,n.signOut=r,n["default"]=o;var s=e("./users"),i=n.initialState={signedIn:!1,signedOut:!1},u=n.SIGN_IN="SIGN_IN",l=n.SIGN_OUT="SIGN_OUT"},{"./users":52}],50:[function(e,t,n){"use strict";function a(e,t){return{type:i,message:e,messageType:t}}function r(){return{type:u}}function o(){var e=arguments.length<=0||void 0===arguments[0]?s:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return t.type===i?{type:t.messageType,message:t.message,isVisible:!0}:t.type===u?Object.assign({},e,{isVisible:!1}):e}Object.defineProperty(n,"__esModule",{value:!0}),n.showSnackbar=a,n.hideSnackbar=r,n["default"]=o;var s=n.initialState={type:"info",message:"",isVisible:!1},i=n.SHOW_SNACKBAR="SHOW_SNACKBAR",u=n.HIDE_SNACKBAR="HIDE_SNACKBAR"},{}],51:[function(e,t,n){"use strict";function a(){return{type:s}}function r(){var e=arguments.length<=0||void 0===arguments[0]?o:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return t.type===s?Object.assign({},e,{tick:e.tick+1}):e}Object.defineProperty(n,"__esModule",{value:!0}),n.doTick=a,n["default"]=r;var o=n.initialState={tick:0},s=n.TICK="TICK"},{}],52:[function(e,t,n){"use strict";function a(e,t){return{type:r,userId:e.id,avatarHash:t}}Object.defineProperty(n,"__esModule",{value:!0}),n.updateAvatar=a;var r=n.UPDATE_AVATAR="UPDATE_AVATAR"},{}],53:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Ajax=function(){function e(){a(this,e),this._cookieName=null,this._csrfToken=null}return r(e,[{key:"init",value:function(e){this._cookieName=e,this._csrfToken=this.getCsrfToken()}},{key:"getCsrfToken",value:function(){if(-1!==document.cookie.indexOf(this._cookieName)){var e=new RegExp(this._cookieName+"=([^;]*)"),t=document.cookie.match(e)[0];return t?t.split("=")[1]:null}return null}},{key:"request",value:function(e,t,n){var a=this;return new Promise(function(r,o){var s={url:t,method:e,headers:{"X-CSRFToken":a._csrfToken},data:n?JSON.stringify(n):null,contentType:"application/json; charset=utf-8",dataType:"json",success:function(e){r(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}},{key:"get",value:function(e){return this.request("GET",e)}},{key:"post",value:function(e,t){return this.request("POST",e,t)}},{key:"patch",value:function(e,t){return this.request("PATCH",e,t)}},{key:"put",value:function(e,t){return this.request("PUT",e,t)}},{key:"delete",value:function(e){return this.request("DELETE",e)}},{key:"upload",value:function(e,t,n){var a=this;return new Promise(function(r,o){var s={url:e,method:"POST",headers:{"X-CSRFToken":a._csrfToken},data:t,contentType:!1,processData:!1,xhr:function i(){var i=new window.XMLHttpRequest;return i.upload.addEventListener("progress",function(e){e.lengthComputable&&n(Math.round(e.loaded/e.total*100))},!1),i},success:function(e){r(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}}]),e}();n["default"]=new o},{}],54:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Auth=void 0;var o=e("../reducers/auth"),s=n.Auth=function(){function e(){a(this,e)}return r(e,[{key:"init",value:function(e,t,n){this._store=e,this._local=t,this._modal=n,this.syncSession(),this.watchState()}},{key:"syncSession",value:function(){var e=this._store.getState().auth;e.isAuthenticated?this._local.set("auth",{isAuthenticated:!0,username:e.user.username}):this._local.set("auth",{isAuthenticated:!1})}},{key:"watchState",value:function(){var e=this;this._local.watch("auth",function(t){t.isAuthenticated?e._store.dispatch((0,o.signIn)({username:t.username})):e._store.dispatch((0,o.signOut)())}),this._modal.hide()}},{key:"signIn",value:function(e){this._store.dispatch((0,o.signIn)(e)),this._local.set("auth",{isAuthenticated:!0,username:e.username}),this._modal.hide()}},{key:"signOut",value:function(){this._store.dispatch((0,o.signOut)()),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}},{key:"softSignOut",value:function(){this._store.dispatch((0,o.signOut)(!0)),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}}]),e}();n["default"]=new s},{"../reducers/auth":49}],55:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(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 o(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)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Captcha=n.ReCaptcha=n.ReCaptchaComponent=n.QACaptcha=n.NoCaptcha=n.BaseCaptcha=void 0;var u=e("react"),l=a(u),c=e("../components/form-group"),d=a(c),f=n.BaseCaptcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,a){this._context=e,this._ajax=t,this._include=n,this._snackbar=a}}]),e}(),p=n.NoCaptcha=function(e){function t(){return s(this,t),r(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return new Promise(function(e){e()})}},{key:"validator",value:function(){return null}},{key:"component",value:function(){return null}}]),t}(f),m=n.QACaptcha=function(e){function t(){return s(this,t),r(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){var e=this;return new Promise(function(t,n){e._ajax.get(e._context.get("CAPTCHA_API_URL")).then(function(n){e.question=n.question,e.helpText=n.help_text,t()},function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),n()})})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["default"].createElement(d["default"],{label:this.question,"for":"id_captcha",labelClass:e.labelClass||"col-sm-4",controlClass:e.controlClass||"col-sm-8",validation:e.form.state.errors.captcha,helpText:this.helpText||null},l["default"].createElement("input",{type:"text",id:"id_captcha",className:"form-control","aria-describedby":"id_captcha_status",disabled:e.form.state.isLoading,onChange:e.form.bindInput("captcha"),value:e.form.state.captcha}))}}]),t}(f),h=n.ReCaptchaComponent=function(e){function t(){return s(this,t),r(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;grecaptcha.render("recaptcha",{sitekey:this.props.siteKey,callback:function(t){e.props.binding({target:{value:t}})}})}},{key:"render",value:function(){return l["default"].createElement("div",{id:"recaptcha"})}}]),t}(l["default"].Component),v=n.ReCaptcha=function(e){function t(){return s(this,t),r(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return this._include.include("https://www.google.com/recaptcha/api.js",!0),new Promise(function(e){var t=function n(){"undefined"==typeof grecaptcha?window.setTimeout(function(){n()},200):e()};t()})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["default"].createElement(d["default"],{label:gettext("Captcha"),"for":"id_captcha",labelClass:e.labelClass||"col-sm-4",controlClass:e.controlClass||"col-sm-8",validation:e.form.state.errors.captcha,helpText:gettext("Please solve the quick test.")},l["default"].createElement(h,{siteKey:this._context.get("SETTINGS").recaptcha_site_key,binding:e.form.bindInput("captcha")}))}}]),t}(f),g=n.Captcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,a){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new p;break;case"qa":this._captcha=new m;break;case"re":this._captcha=new v}this._captcha.init(e,t,n,a)}},{key:"load",value:function(){return this._captcha.load()}},{key:"validator",value:function(){return this._captcha.validator()}},{key:"component",value:function(e){return this._captcha.component(e)}}]),e}();n["default"]=new g},{"../components/form-group":33,react:"react"}],56:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Include=function(){function e(){a(this,e)}return r(e,[{key:"init",value:function(e){this._staticUrl=e,this._included=[]}},{key:"include",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];-1===this._included.indexOf(e)&&(this._included.push(e),this._include(e,t))}},{key:"_include",value:function(e,t){$.ajax({url:(t?"":this._staticUrl)+e,cache:!0,dataType:"script"})}}]),e}();n["default"]=new o},{}],57:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=window.localStorage,s=n.LocalStorage=function(){function e(){a(this,e)}return r(e,[{key:"init",value:function(e){var t=this;this._prefix=e,this._watchers=[],window.addEventListener("storage",function(e){var n=JSON.parse(e.newValue);t._watchers.forEach(function(t){t.key===e.key&&e.oldValue!==e.newValue&&t.callback(n)})})}},{key:"set",value:function(e,t){o.setItem(this._prefix+e,JSON.stringify(t))}},{key:"get",value:function(e){var t=o.getItem(this._prefix+e);return t?JSON.parse(t):null}},{key:"watch",value:function(e,t){this._watchers.push({key:this._prefix+e,callback:t})}}]),e}();n["default"]=new s},{}],58:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.MobileNavbarDropdown=void 0;var s=e("../utils/mount-component"),i=a(s),u=n.MobileNavbarDropdown=function(){function e(){r(this,e)}return o(e,[{key:"init",value:function(e){this._element=e,this._component=null}},{key:"show",value:function(e){this._component===e?this.hide():(this._component=e,(0,i["default"])(e,this._element.id),$(this._element).addClass("open"))}},{key:"showConnected",value:function(e,t){this._component===e?this.hide():(this._component=e,(0,i["default"])(t,this._element.id,!0),$(this._element).addClass("open"))}},{key:"hide",value:function(){$(this._element).removeClass("open"),this._component=null}}]),e}();n["default"]=new u},{"../utils/mount-component":66}],59:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Modal=void 0;var s=e("react-dom"),i=a(s),u=e("../utils/mount-component"),l=a(u),c=n.Modal=function(){function e(){r(this,e)}return o(e,[{key:"init",value:function(e){var t=this;this._element=e,this._modal=$(e).modal({show:!1}),this._modal.on("hidden.bs.modal",function(){i["default"].unmountComponentAtNode(t._element)})}},{key:"show",value:function(e){(0,l["default"])(e,this._element.id),this._modal.modal("show")}},{key:"hide",value:function(){this._modal.modal("hide")}}]),e}();n["default"]=new c},{"../utils/mount-component":66,"react-dom":"react-dom"}],60:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Snackbar=void 0;var o=e("../reducers/snackbar"),s=300,i=5e3,u=n.Snackbar=function(){function e(){a(this,e)}return r(e,[{key:"init",value:function(e){this._store=e,this._timeout=null}},{key:"alert",value:function(e,t){var n=this;this._timeout?(window.clearTimeout(this._timeout),this._store.dispatch((0,o.hideSnackbar)()),this._timeout=window.setTimeout(function(){n._timeout=null,n.alert(e,t)},s)):(this._store.dispatch((0,o.showSnackbar)(e,t)),this._timeout=window.setTimeout(function(){n._store.dispatch((0,o.hideSnackbar)()),n._timeout=null},i))}},{key:"info",value:function(e){this.alert(e,"info")}},{key:"success",value:function(e){this.alert(e,"success")}},{key:"warning",value:function(e){this.alert(e,"warning")}},{key:"error",value:function(e){this.alert(e,"error")}},{key:"apiError",value:function(e){var t=gettext("Unknown error has occured.");0===e.status&&(t=e.detail),400===e.status&&e.detail&&(t=e.detail),403===e.status&&(t=e.detail,"Permission denied"===t&&(t=gettext("You don't have permission to perform this action."))),404===e.status&&(t=gettext("Action link is invalid.")),this.error(t)}}]),e}();n["default"]=new u},{"../reducers/snackbar":50}],61:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.StoreWrapper=void 0;var o=e("redux"),s=n.StoreWrapper=function(){function e(){a(this,e),this._store=null,this._reducers={},this._initialState={}}return r(e,[{key:"addReducer",value:function(e,t,n){this._reducers[e]=t,this._initialState[e]=n}},{key:"init",value:function(){this._store=(0,o.createStore)((0,o.combineReducers)(this._reducers),this._initialState)}},{key:"getStore",value:function(){return this._store}},{key:"getState",value:function(){return this._store.getState()}},{key:"dispatch",value:function(e){return this._store.dispatch(e)}}]),e}();n["default"]=new s},{redux:"redux"}],62:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Zxcvbn=function(){function e(){a(this,e)}return r(e,[{key:"init",value:function(e){this._include=e}},{key:"scorePassword",value:function(e,t){return zxcvbn(e,t).score}},{key:"load",value:function(){return"undefined"==typeof zxcvbn?(this._include.include("misago/js/zxcvbn.js"),this._loadingPromise()):this._loadedPromise()}},{key:"_loadingPromise",value:function(){return new Promise(function(e){var t=function n(){"undefined"==typeof zxcvbn?window.setTimeout(function(){n()},200):e()};t()})}},{key:"_loadedPromise",value:function(){return new Promise(function(e){e()})}}]),e}();n["default"]=new o},{}],63:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){if(l["default"].render(i["default"].createElement(c.Provider,{store:v["default"].getStore()},i["default"].createElement(b,{message:e.message,expires:e.expires_on?(0,o["default"])(e.expires_on):null})),document.getElementById("page-mount")),"undefined"==typeof t||t){var n=m["default"].get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+n,window.history.pushState({},"",m["default"].get("BANNED_URL"))}};var r=e("moment"),o=a(r),s=e("react"),i=a(s),u=e("react-dom"),l=a(u),c=e("react-redux"),d=e("../components/banned-page"),f=a(d),p=e("../index"),m=a(p),h=e("../services/store"),v=a(h),g=function(e){return e.tick},b=(0,c.connect)(g)(f["default"])},{"../components/banned-page":26,"../index":48,"../services/store":61,moment:"moment",react:"react","react-dom":"react-dom","react-redux":"react-redux"}],64:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],a=[],r=[];if(e.forEach(function(e){r.push(e),r.length===t&&(a.push(r),r=[])}),n!==!1&&r.length>0&&r.length<t)for(var o=r.length;t>o;o++)r.push(n);return r.length&&a.push(r),a}},{}],65:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){return e>1e9?Math.round(100*e/1e9)/100+" GB":e>1e6?Math.round(100*e/1e6)/100+" MB":e>1e3?Math.round(100*e/1e3)/100+" KB":Math.round(100*e)/100+" B"}},{}],66:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!0:arguments[2],a=document.getElementById(t);a&&(n?i["default"].render(o["default"].createElement(u.Provider,{store:c["default"].getStore()},o["default"].createElement(e,null)),a):i["default"].render(o["default"].createElement(e,null),a))};var r=e("react"),o=a(r),s=e("react-dom"),i=a(s),u=e("react-redux"),l=e("../services/store"),c=a(l)},{"../services/store":61,react:"react","react-dom":"react-dom","react-redux":"react-redux"}],67:[function(e,t,n){"use strict";function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(t){a(this,e),this.isOrdered=!1,this._items=t||[]}return r(e,[{key:"add",value:function(e,t,n){this._items.push({key:e,item:t,after:n?n.after||null:null,before:n?n.before||null:null})}},{key:"get",value:function(e,t){for(var n=0;n<this._items.length;n++)if(this._items[n].key===e)return this._items[n].item;return t}},{key:"has",value:function(e){return void 0!==this.get(e)}},{key:"values",value:function t(){for(var t=[],e=0;e<this._items.length;e++)t.push(this._items[e].item);return t}},{key:"order",value:function(e){return this.isOrdered||(this._items=this._order(this._items),this.isOrdered=!0),e||"undefined"==typeof e?this.values():this._items}},{key:"orderedValues",value:function(){return this.order(!0)}},{key:"_order",value:function(e){function t(e){var t=-1;-1===r.indexOf(e.key)&&(e.after?(t=r.indexOf(e.after),-1!==t&&(t+=1)):e.before&&(t=r.indexOf(e.before)),-1!==t&&(a.splice(t,0,e),r.splice(t,0,e.key)))}var n=[];e.forEach(function(e){n.push(e.key)});var a=[],r=[];e.forEach(function(e){e.after||e.before||(a.push(e),r.push(e.key))}),e.forEach(function(e){"_end"===e.before&&(a.push(e),r.push(e.key))});for(var o=200;o>0&&n.length!==r.length;)o-=1,e.forEach(t);return a}}]),e}();n["default"]=o},{}],68:[function(e,t,n){"use strict";function a(){return function(e){return 0===$.trim(e).length?gettext("This field is required."):void 0}}function r(e){return function(t){return d.test(t)?void 0:e||gettext("Enter a valid email address.")}}function o(e,t){return function(n){var a="",r=$.trim(n).length;return e>r?(a=t?t(e,r):ngettext("Ensure this value has at least %(limit_value)s character (it has %(show_value)s).","Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).",e),interpolate(a,{limit_value:e,show_value:r},!0)):void 0}}function s(e,t){return function(n){var a="",r=$.trim(n).length;return r>e?(a=t?t(e,r):ngettext("Ensure this value has at most %(limit_value)s character (it has %(show_value)s).","Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).",e),interpolate(a,{limit_value:e,show_value:r},!0)):void 0}}function i(e){var t=function(e){return ngettext("Username must be at least %(limit_value)s character long.","Username must be at least %(limit_value)s characters long.",e)};return this.minLength(e.username_length_min,t)}function u(e){var t=function(e){return ngettext("Username cannot be longer than %(limit_value)s character.","Username cannot be longer than %(limit_value)s characters.",e)};return this.maxLength(e.username_length_max,t)}function l(){return function(e){return f.test($.trim(e))?void 0:gettext("Username can only contain latin alphabet letters and digits.")}}function c(e){var t=function(e){return ngettext("Valid password must be at least %(limit_value)s character long.","Valid password must be at least %(limit_value)s characters long.",e)};return this.minLength(e.password_length_min,t)}Object.defineProperty(n,"__esModule",{value:!0}),n.required=a,n.email=r,n.minLength=o,n.maxLength=s,n.usernameMinLength=i,n.usernameMaxLength=u,n.usernameContent=l,n.passwordMinLength=c;var d=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,f=new RegExp("^[0-9a-z]+$","i")},{}]},{},[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]);
+!function e(t,n,r){function a(s,i){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!i&&u)return u(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return a(n?n:e)},c,c.exports,e,t,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s<r.length;s++)a(r[s]);return a}({1:[function(e,t,n){function r(){c=!1,i.length?l=i.concat(l):d=-1,l.length&&a()}function a(){if(!c){var e=setTimeout(r);c=!0;for(var t=l.length;t;){for(i=l,l=[];++d<t;)i&&i[d].run();d=-1,t=l.length}i=null,c=!1,clearTimeout(e)}}function o(e,t){this.fun=e,this.array=t}function s(){}var i,u=t.exports={},l=[],c=!1,d=-1;u.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new o(e,t)),1!==l.length||c||setTimeout(a,0)},o.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=s,u.addListener=s,u.once=s,u.off=s,u.removeListener=s,u.removeAllListeners=s,u.emit=s,u.binding=function(e){throw new Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(e){throw new Error("process.chdir is not supported")},u.umask=function(){return 0}},{}],2:[function(e,t,n){(function(t){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Misago=void 0;var s=e("../../../../documents/misago/frontend/src/utils/ordered-list"),i=r(s),u=n.Misago=function(){function e(){a(this,e),this._initializers=[],this._context={}}return o(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e;var n=new i["default"](this._initializers).orderedValues();n.forEach(function(e){e(t)})}},{key:"has",value:function(e){return this._context.hasOwnProperty(e)}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}}]),e}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../../../documents/misago/frontend/src/utils/ordered-list":97}],3:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(s["default"].get("CSRF_COOKIE_NAME"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=r(i);s["default"].addInitializer({name:"ajax",initializer:a})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/ajax":83}],4:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,d["default"])((0,o.connect)(u.select)(l["default"]),"auth-message-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../documents/misago/frontend/src/components/auth-message"),l=r(u),c=e("../../../../../documents/misago/frontend/src/utils/mount-component"),d=r(c);i["default"].addInitializer({name:"component:auth-message",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/components/auth-message":45,"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/utils/mount-component":96,"react-redux":"react-redux"}],5:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){c["default"].addReducer("auth",u["default"],Object.assign({isAuthenticated:e.get("isAuthenticated"),isAnonymous:!e.get("isAuthenticated"),user:e.get("user")},i.initialState))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/reducers/auth"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:auth",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/reducers/auth":78,"../../../../../documents/misago/frontend/src/services/store":91}],6:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(f["default"],m["default"],c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/auth"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/modal"),c=r(l),d=e("../../../../../documents/misago/frontend/src/services/store"),f=r(d),p=e("../../../../../documents/misago/frontend/src/services/local-storage"),m=r(p);s["default"].addInitializer({name:"auth",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/auth":84,"../../../../../documents/misago/frontend/src/services/local-storage":87,"../../../../../documents/misago/frontend/src/services/modal":89,"../../../../../documents/misago/frontend/src/services/store":91}],7:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.get("BAN_MESSAGE")&&(0,u["default"])(e.get("BAN_MESSAGE"),!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/utils/banned-page"),u=r(i);s["default"].addInitializer({name:"component:baned-page",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/utils/banned-page":93}],8:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){c["default"].init(e,u["default"],f["default"],m["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/ajax"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/captcha"),c=r(l),d=e("../../../../../documents/misago/frontend/src/services/include"),f=r(d),p=e("../../../../../documents/misago/frontend/src/services/snackbar"),m=r(p);s["default"].addInitializer({name:"captcha",initializer:a})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/ajax":83,"../../../../../documents/misago/frontend/src/services/captcha":85,"../../../../../documents/misago/frontend/src/services/include":86,"../../../../../documents/misago/frontend/src/services/snackbar":90}],9:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){u["default"].init(e.get("STATIC_URL"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/include"),u=r(i);s["default"].addInitializer({name:"include",initializer:a})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/include":86}],10:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init("misago_")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/local-storage"),u=r(i);s["default"].addInitializer({name:"local-storage",initializer:a})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/local-storage":87}],11:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=document.getElementById("mobile-navbar-dropdown-mount");e&&u["default"].init(e)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown"),u=r(i);s["default"].addInitializer({name:"dropdown",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown":88}],12:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=document.getElementById("modal-mount");e&&u["default"].init(e)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/modal"),u=r(i);s["default"].addInitializer({name:"modal",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/modal":89}],13:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){s["default"].locale($("html").attr("lang"))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("moment"),s=r(o),i=e("../../../../../documents/misago/frontend/src/index"),u=r(i);u["default"].addInitializer({name:"moment",initializer:a})},{"../../../../../documents/misago/frontend/src/index":77,moment:"moment"}],14:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){e.get("USER_OPTIONS")&&(0,d["default"])({root:i["default"].get("USERCP_URL"),component:o.Options,paths:(0,o.paths)(l["default"])})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/components/options/root"),s=e("../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../documents/misago/frontend/src/services/store"),l=r(u),c=e("../../../../../documents/misago/frontend/src/utils/routed-component"),d=r(c);i["default"].addInitializer({name:"component:options",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/components/options/root":62,"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/store":91,"../../../../../documents/misago/frontend/src/utils/routed-component":99}],15:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("request-activation-link-mount")&&(0,c["default"])(u["default"],"request-activation-link-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/components/request-activation-link"),u=r(i),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:request-activation-link",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/components/request-activation-link":67,"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/utils/mount-component":96}],16:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("request-password-reset-mount")&&(0,c["default"])(u["default"],"request-password-reset-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/components/request-password-reset"),u=r(i),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:request-password-reset",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/components/request-password-reset":68,"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/utils/mount-component":96}],17:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){document.getElementById("reset-password-form-mount")&&(0,c["default"])(u["default"],"reset-password-form-mount",!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/components/reset-password-form"),u=r(i),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);s["default"].addInitializer({name:"component:reset-password-form",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/components/reset-password-form":69,"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/utils/mount-component":96}],18:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,c["default"])((0,o.connect)(u.select)(u.Snackbar),"snackbar-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../documents/misago/frontend/src/components/snackbar"),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);i["default"].addInitializer({name:"component:snackbar",initializer:a,after:"snackbar"})},{"../../../../../documents/misago/frontend/src/components/snackbar":72,"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/utils/mount-component":96,"react-redux":"react-redux"}],19:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("snackbar",u["default"],i.initialState)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/reducers/snackbar"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:snackbar",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/reducers/snackbar":79,"../../../../../documents/misago/frontend/src/services/store":91}],20:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init(c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/snackbar"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"snackbar",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/snackbar":90,"../../../../../documents/misago/frontend/src/services/store":91}],21:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){u["default"].init()}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/store"),u=r(i);s["default"].addInitializer({name:"store",initializer:a,before:"_end"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/store":91}],22:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("tick",u["default"],i.initialState)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/reducers/tick"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:tick",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/reducers/tick":80,"../../../../../documents/misago/frontend/src/services/store":91}],23:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){window.setInterval(function(){l["default"].dispatch((0,i.doTick)())},c)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/reducers/tick"),u=e("../../../../../documents/misago/frontend/src/services/store"),l=r(u),c=5e4;s["default"].addInitializer({name:"tick-start",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/reducers/tick":80,"../../../../../documents/misago/frontend/src/services/store":91}],24:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){(0,c["default"])((0,o.connect)(u.select)(u.UserMenu),"user-menu-mount"),(0,c["default"])((0,o.connect)(u.select)(u.CompactUserMenu),"user-menu-compact-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("react-redux"),s=e("../../../../../documents/misago/frontend/src/index"),i=r(s),u=e("../../../../../documents/misago/frontend/src/components/user-menu/root"),l=e("../../../../../documents/misago/frontend/src/utils/mount-component"),c=r(l);i["default"].addInitializer({name:"component:user-menu",initializer:a,after:"store"})},{"../../../../../documents/misago/frontend/src/components/user-menu/root":74,"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/utils/mount-component":96,"react-redux":"react-redux"}],25:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].addReducer("username-history",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/reducers/username-history"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/store"),c=r(l);s["default"].addInitializer({name:"reducer:username-history",initializer:a,before:"store"})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/reducers/username-history":81,"../../../../../documents/misago/frontend/src/services/store":91}],26:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){c["default"].init(u["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=a;var o=e("../../../../../documents/misago/frontend/src/index"),s=r(o),i=e("../../../../../documents/misago/frontend/src/services/include"),u=r(i),l=e("../../../../../documents/misago/frontend/src/services/zxcvbn"),c=r(l);s["default"].addInitializer({name:"zxcvbn",initializer:a})},{"../../../../../documents/misago/frontend/src/index":77,"../../../../../documents/misago/frontend/src/services/include":86,"../../../../../documents/misago/frontend/src/services/zxcvbn":92}],27:[function(e,t,n){function r(e){return null===e||void 0===e}function a(e){return e&&"object"==typeof e&&"number"==typeof e.length?"function"!=typeof e.copy||"function"!=typeof e.slice?!1:e.length>0&&"number"!=typeof e[0]?!1:!0:!1}function o(e,t,n){var o,c;if(r(e)||r(t))return!1;if(e.prototype!==t.prototype)return!1;if(u(e))return u(t)?(e=s.call(e),t=s.call(t),l(e,t,n)):!1;if(a(e)){if(!a(t))return!1;if(e.length!==t.length)return!1;for(o=0;o<e.length;o++)if(e[o]!==t[o])return!1;return!0}try{var d=i(e),f=i(t)}catch(p){return!1}if(d.length!=f.length)return!1;for(d.sort(),f.sort(),o=d.length-1;o>=0;o--)if(d[o]!=f[o])return!1;for(o=d.length-1;o>=0;o--)if(c=d[o],!l(e[c],t[c],n))return!1;return typeof e==typeof t}var s=Array.prototype.slice,i=e("./lib/keys.js"),u=e("./lib/is_arguments.js"),l=t.exports=function(e,t,n){return n||(n={}),e===t?!0:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:o(e,t,n)}},{"./lib/is_arguments.js":28,"./lib/keys.js":29}],28:[function(e,t,n){function r(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function a(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();n=t.exports=o?r:a,n.supported=r,n.unsupported=a},{}],29:[function(e,t,n){function r(e){var t=[];for(var n in e)t.push(n);return t}n=t.exports="function"==typeof Object.keys?Object.keys:r,n.shim=r},{}],30:[function(e,t,n){"use strict";n.__esModule=!0;var r="PUSH";n.PUSH=r;var a="REPLACE";n.REPLACE=a;var o="POP";n.POP=o,n["default"]={PUSH:r,REPLACE:a,POP:o}},{}],31:[function(e,t,n){"use strict";function r(e,t,n){function r(){s=!0,n.apply(this,arguments)}function a(){s||(e>o?t.call(this,o++,a,r):r.apply(this,arguments))}var o=0,s=!1;a()}n.__esModule=!0,n.loopAsync=r},{}],32:[function(e,t,n){(function(t){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return l+e}function o(e,n){try{window.sessionStorage.setItem(a(e),JSON.stringify(n))}catch(r){if(r.name===d)return void("production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to save state; sessionStorage is not available due to security settings"):void 0);if(r.name===c&&0===window.sessionStorage.length)return void("production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to save state; sessionStorage is not available in Safari private mode"):void 0);throw r}}function s(e){var n=void 0;try{n=window.sessionStorage.getItem(a(e))}catch(r){if(r.name===d)return"production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to read state; sessionStorage is not available due to security settings"):void 0,null}if(n)try{return JSON.parse(n)}catch(r){}return null}n.__esModule=!0,n.saveState=o,n.readState=s;var i=e("warning"),u=r(i),l="@@History/",c="QuotaExceededError",d="SecurityError"}).call(this,e("_process"))},{_process:1,warning:44}],33:[function(e,t,n){"use strict";function r(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function a(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on"+t,n)}function o(){return window.location.href.split("#")[1]||""}function s(e){window.location.replace(window.location.pathname+window.location.search+"#"+e)}function i(){return window.location.pathname+window.location.search+window.location.hash}function u(e){e&&window.history.go(e)}function l(e,t){t(window.confirm(e))}function c(){var e=navigator.userAgent;return-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone")?-1!==e.indexOf("CriOS")?!1:window.history&&"pushState"in window.history:!1}function d(){var e=navigator.userAgent;return-1===e.indexOf("Firefox")}n.__esModule=!0,n.addEventListener=r,n.removeEventListener=a,n.getHashPath=o,n.replaceHashPath=s,n.getWindowPath=i,n.go=u,n.getUserConfirmation=l,n.supportsHistory=c,n.supportsGoWithoutReloadUsingHash=d},{}],34:[function(e,t,n){"use strict";n.__esModule=!0;var r=!("undefined"==typeof window||!window.document||!window.document.createElement);n.canUseDOM=r},{}],35:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(){function e(e){e=e||window.history.state||{};var t=d.getWindowPath(),n=e,r=n.key,a=void 0;r?a=f.readState(r):(a=null,r=_.createKey(),b&&window.history.replaceState(s({},e,{key:r}),null,t));var o=v["default"](t);return _.createLocation(s({},o,{state:a}),void 0,r)}function t(t){function n(t){void 0!==t.state&&r(e(t.state))}var r=t.transitionTo;return d.addEventListener(window,"popstate",n),function(){d.removeEventListener(window,"popstate",n)}}function n(e){var t=e.basename,n=e.pathname,r=e.search,a=e.hash,o=e.state,s=e.action,i=e.key;if(s!==l.POP){f.saveState(i,o);var u=(t||"")+n+r+a,c={key:i};if(s===l.PUSH){if(y)return window.location.href=u,!1;window.history.pushState(c,null,u)}else{if(y)return window.location.replace(u),!1;window.history.replaceState(c,null,u)}}}function a(e){1===++w&&(E=t(_));var n=_.listenBefore(e);return function(){n(),0===--w&&E()}}function o(e){1===++w&&(E=t(_));var n=_.listen(e);return function(){n(),0===--w&&E()}}function i(e){1===++w&&(E=t(_)),_.registerTransitionHook(e)}function p(e){_.unregisterTransitionHook(e),0===--w&&E()}var h=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];c.canUseDOM?void 0:"production"!==r.env.NODE_ENV?u["default"](!1,"Browser history needs a DOM"):u["default"](!1);var g=h.forceRefresh,b=d.supportsHistory(),y=!b||g,_=m["default"](s({},h,{getCurrentLocation:e,finishTransition:n,saveState:f.saveState})),w=0,E=void 0;return s({},_,{listenBefore:a,listen:o,registerTransitionHook:i,unregisterTransitionHook:p})}n.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=e("invariant"),u=a(i),l=e("./Actions"),c=e("./ExecutionEnvironment"),d=e("./DOMUtils"),f=e("./DOMStateStorage"),p=e("./createDOMHistory"),m=a(p),h=e("./parsePath"),v=a(h);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./Actions":30,"./DOMStateStorage":32,"./DOMUtils":33,"./ExecutionEnvironment":34,"./createDOMHistory":36,"./parsePath":41,_process:1,invariant:43}],36:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e){function t(e){return l.canUseDOM?void 0:"production"!==r.env.NODE_ENV?u["default"](!1,"DOM history needs a DOM"):u["default"](!1),n.listen(e)}var n=f["default"](s({getUserConfirmation:c.getUserConfirmation},e,{go:c.go}));return s({},n,{listen:t})}n.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=e("invariant"),u=a(i),l=e("./ExecutionEnvironment"),c=e("./DOMUtils"),d=e("./createHistory"),f=a(d);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./DOMUtils":33,"./ExecutionEnvironment":34,"./createHistory":37,_process:1,invariant:43}],37:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return Math.random().toString(36).substr(2,e)}function o(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.key===t.key&&l["default"](e.state,t.state)}function s(){function e(e){return U.push(e),function(){U=U.filter(function(t){return t!==e})}}function t(){return B&&B.action===d.POP?z.indexOf(B.key):D?z.indexOf(D.key):-1}function n(e){var n=t();D=e,D.action===d.PUSH?z=[].concat(z.slice(0,n+1),[D.key]):D.action===d.REPLACE&&(z[n]=D.key),H.forEach(function(e){e(D)})}function r(e){if(H.push(e),D)e(D);else{var t=M();z=[t.key],n(t)}return function(){H=H.filter(function(t){return t!==e})}}function s(e,t){c.loopAsync(U.length,function(t,n,r){h["default"](U[t],e,function(e){null!=e?r(e):n()})},function(e){R&&"string"==typeof e?R(e,function(e){t(e!==!1)}):t(e!==!1)})}function u(e){D&&o(D,e)||(B=e,s(e,function(t){if(B===e)if(t){if(e.action===d.PUSH){var r=w(D),a=w(e);a===r&&(e.action=d.REPLACE)}T(e)!==!1&&n(e)}else if(D&&e.action===d.POP){var o=z.indexOf(D.key),s=z.indexOf(e.key);-1!==o&&-1!==s&&A(o-s)}}))}function l(e){u(O(e,d.PUSH,b()))}function f(e){u(O(e,d.REPLACE,b()))}function m(){A(-1)}function v(){A(1)}function b(){return a(I)}function w(e){if(null==e||"string"==typeof e)return e;var t=e.pathname,n=e.search,r=e.hash,a=t;return n&&(a+=n),r&&(a+=r),a}function E(e){return w(e)}function O(e,t){var n=arguments.length<=2||void 0===arguments[2]?b():arguments[2];return"object"==typeof t&&("string"==typeof e&&(e=g["default"](e)),e=i({},e,{state:t}),t=n,n=arguments[3]||b()),p["default"](e,t,n)}function k(e){D?(x(D,e),n(D)):x(M(),e)}function x(e,t){e.state=i({},e.state,t),L(e.key,e.state)}function j(e){-1===U.indexOf(e)&&U.push(e)}function P(e){U=U.filter(function(t){return t!==e})}function N(e,t){"string"==typeof t&&(t=g["default"](t)),l(i({state:e},t))}function C(e,t){"string"==typeof t&&(t=g["default"](t)),f(i({state:e},t))}var S=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],M=S.getCurrentLocation,T=S.finishTransition,L=S.saveState,A=S.go,I=S.keyLength,R=S.getUserConfirmation;"number"!=typeof I&&(I=_);var U=[],z=[],H=[],D=void 0,B=void 0;return{listenBefore:e,listen:r,transitionTo:u,push:l,replace:f,go:A,goBack:m,goForward:v,createKey:b,createPath:w,createHref:E,createLocation:O,setState:y["default"](k,"setState is deprecated; use location.key to save state instead"),registerTransitionHook:y["default"](j,"registerTransitionHook is deprecated; use listenBefore instead"),unregisterTransitionHook:y["default"](P,"unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead"),pushState:y["default"](N,"pushState is deprecated; use push instead"),replaceState:y["default"](C,"replaceState is deprecated; use replace instead")}}n.__esModule=!0;var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u=e("deep-equal"),l=r(u),c=e("./AsyncUtils"),d=e("./Actions"),f=e("./createLocation"),p=r(f),m=e("./runTransitionHook"),h=r(m),v=e("./parsePath"),g=r(v),b=e("./deprecate"),y=r(b),_=6;n["default"]=s,t.exports=n["default"]},{"./Actions":30,"./AsyncUtils":31,"./createLocation":38,"./deprecate":39,"./parsePath":41,"./runTransitionHook":42,"deep-equal":27}],38:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(){var e=arguments.length<=0||void 0===arguments[0]?"/":arguments[0],t=arguments.length<=1||void 0===arguments[1]?s.POP:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2],r=arguments.length<=3||void 0===arguments[3]?null:arguments[3];"string"==typeof e&&(e=u["default"](e)),"object"==typeof t&&(e=o({},e,{state:t}),t=n||s.POP,n=r);var a=e.pathname||"/",i=e.search||"",l=e.hash||"",c=e.state||null;return{pathname:a,search:i,hash:l,state:c,action:t,key:n}}n.__esModule=!0;var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},s=e("./Actions"),i=e("./parsePath"),u=r(i);n["default"]=a,t.exports=n["default"]},{"./Actions":30,"./parsePath":41}],39:[function(e,t,n){"use strict";function r(e){return e}n.__esModule=!0,n["default"]=r,t.exports=n["default"]},{}],40:[function(e,t,n){"use strict";function r(e){var t=e.match(/^https?:\/\/[^\/]*/);return null==t?e:e.substring(t[0].length)}n.__esModule=!0,n["default"]=r,t.exports=n["default"]},{}],41:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e){var t=l["default"](e),n="",a="";
+"production"!==r.env.NODE_ENV?i["default"](e===t,'A path must be pathname + search + hash only, not a fully qualified URL like "%s"',e):void 0;var o=t.indexOf("#");-1!==o&&(a=t.substring(o),t=t.substring(0,o));var s=t.indexOf("?");return-1!==s&&(n=t.substring(s),t=t.substring(0,s)),""===t&&(t="/"),{pathname:t,search:n,hash:a}}n.__esModule=!0;var s=e("warning"),i=a(s),u=e("./extractPath"),l=a(u);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./extractPath":40,_process:1,warning:44}],42:[function(e,t,n){(function(r){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,n){var a=e(t,n);e.length<2?n(a):"production"!==r.env.NODE_ENV?i["default"](void 0===a,'You should not "return" in a transition hook with a callback argument; call the callback instead'):void 0}n.__esModule=!0;var s=e("warning"),i=a(s);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{_process:1,warning:44}],43:[function(e,t,n){"use strict";var r=function(e,t,n,r,a,o,s,i){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,a,o,s,i],c=0;u=new Error(t.replace(/%s/g,function(){return l[c++]})),u.name="Invariant Violation"}throw u.framesToPop=1,u}};t.exports=r},{}],44:[function(e,t,n){"use strict";var r=function(){};t.exports=r},{}],45:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}function i(e){return{user:e.auth.user,signedIn:e.auth.signedIn,signedOut:e.auth.signedOut}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.select=i;var l=e("react"),c=r(l),d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"refresh",value:function(){window.location.reload()}},{key:"getMessage",value:function(){return this.props.signedIn?interpolate(gettext("You have signed in as %(username)s. Please refresh the page before continuing."),{username:this.props.signedIn.username},!0):this.props.signedOut?interpolate(gettext("%(username)s, you have been signed out. Please refresh the page before continuing."),{username:this.props.user.username},!0):void 0}},{key:"getClassName",value:function(){return this.props.signedIn||this.props.signedOut?"auth-message show":"auth-message"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"container"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-default",onClick:this.refresh},gettext("Reload page"))," ",c["default"].createElement("span",{className:"hidden-xs hidden-sm text-muted"},gettext("or press F5 key.")))))}}]),t}(c["default"].Component);n["default"]=d},{react:"react"}],46:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=$("base").attr("href")+"user-avatar/",d=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getSrc",value:function(){var e=this.props.size||100,t=c;return t+=this.props.user&&this.props.user.id?this.props.user.avatar_hash+"/"+e+"/"+this.props.user.id+".png":e+".png"}},{key:"render",value:function(){return l["default"].createElement("img",{src:this.getSrc(),className:this.props.className||"user-avatar",title:gettext("User avatar")})}}]),t}(l["default"].Component);n["default"]=d},{react:"react"}],47:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("moment"),l=r(u),c=e("react"),d=r(c),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getReasonMessage",value:function(){return this.props.message.html?d["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.message.html}}):d["default"].createElement("p",{className:"lead"},this.props.message.plain)}},{key:"getExpirationMessage",value:function(){return this.props.expires?this.props.expires.isAfter((0,l["default"])())?interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.props.expires.fromNow()},!0):gettext("This ban has expired."):gettext("This ban is permanent.")}},{key:"render",value:function(){return d["default"].createElement("div",{className:"page page-error page-error-banned"},d["default"].createElement("div",{className:"container"},d["default"].createElement("div",{className:"message-panel"},d["default"].createElement("div",{className:"message-icon"},d["default"].createElement("span",{className:"material-icon"},"highlight_off")),d["default"].createElement("div",{className:"message-body"},this.getReasonMessage(),d["default"].createElement("p",{className:"message-footnote"},this.getExpirationMessage())))))}}]),t}(d["default"].Component);n["default"]=f},{moment:"moment",react:"react"}],48:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),d=r(c),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e="btn "+this.props.className,t=this.props.disabled;return this.props.loading&&(e+=" btn-loading",t=!0),l["default"].createElement("button",{type:this.props.onClick?"button":"submit",className:e,disabled:t,onClick:this.props.onClick},this.props.children,this.props.loading?l["default"].createElement(d["default"],null):null)}}]),t}(l["default"].Component);n["default"]=f,f.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},{"./loader":57,react:"react"}],49:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),d=(r(c),e("../button")),f=r(d),p=e("../../services/ajax"),m=r(p),h=e("../../services/snackbar"),v=r(h),g=$("base").attr("href")+"user-avatar",b=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.cropAvatar=function(){if(n.state.isLoading)return!1;n.setState({isLoading:!0});var e=n.props.upload?"crop_tmp":"crop_org",t=$(".crop-form");m["default"].post(n.props.user.api_url.avatar,{avatar:e,crop:{offset:t.cropit("offset"),zoom:t.cropit("zoom")}}).then(function(e){n.props.onComplete(e.avatar_hash,e.options),v["default"].success(e.detail)},function(e){400===e.status?(v["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)})},n.state={isLoading:!1},n}return s(t,e),i(t,[{key:"getAvatarSize",value:function(){return this.props.upload?this.props.options.crop_tmp.size:this.props.options.crop_org.size}},{key:"getAvatarSecret",value:function(){return this.props.upload?this.props.options.crop_tmp.secret:this.props.options.crop_org.secret}},{key:"getAvatarHash",value:function(){return this.props.upload||this.props.user.avatar_hash}},{key:"getImagePath",value:function(){return[g,this.getAvatarSecret()+":"+this.getAvatarHash(),this.props.user.id+".png"].join("/")}},{key:"componentDidMount",value:function(){var e=this,t=$(".crop-form");t.width(this.getAvatarSize()),t.cropit({width:this.getAvatarSize(),height:this.getAvatarSize(),imageState:{src:this.getImagePath()},onImageLoaded:function(){if(e.props.upload){var n=t.cropit("zoom"),r=t.cropit("imageSize");if(r.width>r.height){var a=r.width*n,o=(a-e.getAvatarSize())/-2;t.cropit("offset",{x:o,y:0})}else if(r.width<r.height){var s=r.height*n,i=(s-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}}else{var u=e.props.options.crop_org.crop;u&&(t.cropit("zoom",u.zoom),t.cropit("offset",{x:u.x,y:u.y}))}}})}},{key:"componentWillUnmount",value:function(){$(".crop-form").cropit("disable")}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-crop"},l["default"].createElement("div",{className:"crop-form"},l["default"].createElement("div",{className:"cropit-image-preview"}),l["default"].createElement("input",{type:"range",className:"cropit-image-zoom-input"}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(f["default"],{onClick:this.cropAvatar,loading:this.state.isLoading,className:"btn-primary btn-block"},this.props.upload?gettext("Set avatar"):gettext("Crop image")),l["default"].createElement(f["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel")))))}}]),t}(l["default"].Component);n["default"]=b},{"../../services/ajax":83,"../../services/snackbar":90,"../avatar":46,"../button":48,react:"react"}],50:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Gallery=n.GalleryItem=void 0;var u=e("react"),l=r(u),c=e("../button"),d=r(c),f=e("../../index"),p=r(f),m=e("../../services/ajax"),h=r(m),v=e("../../services/snackbar"),g=r(v),b=e("../../utils/batch"),y=r(b),_=n.GalleryItem=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.select=function(){r.props.select(r.props.image)},s=n,o(r,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.selection===this.props.image?this.props.disabled?"btn btn-avatar btn-disabled avatar-selected":"btn btn-avatar avatar-selected":this.props.disabled?"btn btn-avatar btn-disabled":"btn btn-avatar"}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},l["default"].createElement("img",{src:p["default"].get("MEDIA_URL")+this.props.image}))}}]),t}(l["default"].Component),w=n.Gallery=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"avatars-gallery"},l["default"].createElement("h3",null,this.props.name),l["default"].createElement("div",{className:"avatars-gallery-images"},(0,y["default"])(this.props.images,4,null).map(function(t,n){return l["default"].createElement("div",{className:"row",key:n},t.map(function(t,n){return l["default"].createElement("div",{className:"col-xs-3",key:n},t?l["default"].createElement(_,{image:t,disabled:e.props.disabled,select:e.props.select,selection:e.props.selection}):l["default"].createElement("div",{className:"blank-avatar"}))}))})))}}]),t}(l["default"].Component),E=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.select=function(e){n.setState({selection:e})},n.save=function(){return n.state.isLoading?!1:(n.setState({isLoading:!0}),void h["default"].post(n.props.user.api_url.avatar,{avatar:"galleries",image:n.state.selection}).then(function(e){n.setState({isLoading:!1}),g["default"].success(e.detail),n.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(g["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)}))},n.state={selection:null,isLoading:!1},n}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-gallery"},this.props.options.galleries.map(function(t,n){return l["default"].createElement(w,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select,key:n})})),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(d["default"],{onClick:this.save,loading:this.state.isLoading,disabled:!this.state.selection,className:"btn-primary btn-block"},this.state.selection?gettext("Save choice"):gettext("Select avatar")),l["default"].createElement(d["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel"))))))}}]),t}(l["default"].Component);n["default"]=E},{"../../index":77,"../../services/ajax":83,"../../services/snackbar":90,"../../utils/batch":94,"../button":48,react:"react"}],51:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../avatar"),d=r(c),f=e("../button"),p=r(f),m=e("../loader"),h=r(m),v=e("../../services/ajax"),g=r(v),b=e("../../services/snackbar"),y=r(b),_=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.setGravatar=function(){n.callApi("gravatar")},n.setGenerated=function(){n.callApi("generated")},n.state={isLoading:!1},n}return s(t,e),i(t,[{key:"callApi",value:function(e){var t=this;return this.state.isLoading?!1:(this.setState({isLoading:!0}),void g["default"].post(this.props.user.api_url.avatar,{avatar:e}).then(function(e){t.setState({isLoading:!1}),y["default"].success(e.detail),t.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(y["default"].error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))}},{key:"getGravatarButton",value:function(){return this.props.options.gravatar?l["default"].createElement(p["default"],{onClick:this.setGravatar,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gravatar"},gettext("Download my Gravatar")):null}},{key:"getCropButton",value:function(){return this.props.options.crop_org?l["default"].createElement(p["default"],{onClick:this.props.showCrop,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-crop"},gettext("Re-crop uploaded image")):null}},{key:"getUploadButton",value:function(){return this.props.options.upload?l["default"].createElement(p["default"],{onClick:this.props.showUpload,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-upload"},gettext("Upload new image")):null}},{key:"getGalleryButton",value:function(){return this.props.options.galleries?l["default"].createElement(p["default"],{onClick:this.props.showGallery,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gallery"},gettext("Pick avatar from gallery")):null}},{key:"getAvatarPreview",value:function(){return this.state.isLoading?l["default"].createElement("div",{className:"avatar-preview preview-loading"},l["default"].createElement(d["default"],{user:this.props.user,size:"200"}),l["default"].createElement(h["default"],null)):l["default"].createElement("div",{className:"avatar-preview"},l["default"].createElement(d["default"],{user:this.props.user,size:"200"}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-index"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-5"},this.getAvatarPreview()),l["default"].createElement("div",{className:"col-md-7"},this.getGravatarButton(),l["default"].createElement(p["default"],{onClick:this.setGenerated,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-generate"},gettext("Generate my individual avatar")),this.getCropButton(),this.getUploadButton(),this.getGalleryButton())))}}]),t}(l["default"].Component);n["default"]=_},{"../../services/ajax":83,"../../services/snackbar":90,"../avatar":46,"../button":48,"../loader":57,react:"react"}],52:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}function i(e){return{user:e.auth.user}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.ChangeAvatarError=void 0,n.select=i;var l=e("react"),c=r(l),d=e("./index"),f=r(d),p=e("./crop"),m=r(p),h=e("./upload"),v=r(h),g=e("./gallery"),b=r(g),y=e("../modal-loader"),_=r(y),w=e("../../reducers/users"),E=e("../../services/ajax"),O=r(E),k=e("../../services/store"),x=r(k),j=n.ChangeAvatarError=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"getErrorReason",value:function(){return this.props.reason?c["default"].createElement("p",{dangerouslySetInnerHTML:{__html:this.props.reason}}):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"remove_circle_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.props.message),this.getErrorReason()))}}]),t}(c["default"].Component),P=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.showError=function(e){r.setState({error:e})},r.showIndex=function(){r.setState({component:f["default"]})},r.showUpload=function(){r.setState({component:v["default"]})},r.showCrop=function(){r.setState({component:m["default"]})},r.showGallery=function(){r.setState({component:b["default"]})},r.completeFlow=function(e,t){x["default"].dispatch((0,w.updateAvatar)(r.props.user,e)),r.setState({component:f["default"],options:t})},s=n,o(r,s)}return s(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this;O["default"].get(this.props.user.api_url.avatar).then(function(t){e.setState({component:f["default"],options:t,error:null})},function(t){e.showError(t)})}},{key:"getBody",value:function(){return this.state?this.state.error?c["default"].createElement(j,{message:this.state.error.detail,reason:this.state.error.reason}):c["default"].createElement(this.state.component,{options:this.state.options,user:this.props.user,onComplete:this.completeFlow,showError:this.showError,showIndex:this.showIndex,showCrop:this.showCrop,showUpload:this.showUpload,showGallery:this.showGallery}):c["default"].createElement(_["default"],null)}},{key:"getClassName",value:function(){return this.state&&this.state.error?"modal-dialog modal-message modal-change-avatar":"modal-dialog modal-change-avatar"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Change your avatar"))),this.getBody()))}}]),t}(c["default"].Component);n["default"]=P},{"../../reducers/users":82,"../../services/ajax":83,"../../services/store":91,"../modal-loader":58,"./crop":49,"./gallery":50,"./index":51,"./upload":53,react:"react"}],53:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./crop"),d=r(c),f=e("../button"),p=r(f),m=e("../../services/ajax"),h=r(m),v=e("../../services/snackbar"),g=r(v),b=e("../../utils/file-size"),y=r(b),_=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.pickFile=function(){document.getElementById("avatar-hidden-upload").click()},n.uploadFile=function(){var e=document.getElementById("avatar-hidden-upload").files[0],t=n.validateFile(e);if(t)return void g["default"].error(t);n.setState({image:e,preview:URL.createObjectURL(e),progress:0});var r=new FormData;r.append("avatar","upload"),r.append("image",e),h["default"].upload(n.props.user.api_url.avatar,r,function(e){n.setState({progress:e})}).then(function(e){n.setState({options:e.options,uploaded:e.detail}),g["default"].info(gettext("Your image has been uploaded and you may now crop it."))},function(e){400===e.status?(g["default"].error(e.detail),n.setState({isLoading:!1,image:null,progress:0})):n.props.showError(e)})},n.state={image:null,preview:null,progress:0,uploaded:null},n}return s(t,e),i(t,[{key:"validateFile",value:function(e){if(e.size>this.props.options.upload.limit)return interpolate(gettext("Selected file is too big. (%(filesize)s)"),{filesize:(0,y["default"])(e.size)},!0);var t=gettext("Selected file type is not supported.");if(-1===this.props.options.upload.allowed_mime_types.indexOf(e.type))return t;var n=!1,r=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map(function(e){r.substr(-1*e.length)===e&&(n=!0)}),n?!1:t}},{key:"getUploadRequirements",value:function(e){var t=e.allowed_extensions.map(function(e){return e.substr(1)});return interpolate(gettext("%(files)s files smaller than %(limit)s"),{files:t.join(", "),limit:(0,y["default"])(e.limit)},!0)}},{key:"getUploadButton",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement(p["default"],{className:"btn-pick-file",onClick:this.pickFile},l["default"].createElement("div",{className:"material-icon"},"input"),gettext("Select file")),l["default"].createElement("p",{className:"text-muted"},this.getUploadRequirements(this.props.options.upload)))}},{key:"getUploadProgressLabel",value:function(){return interpolate(gettext("%(progress)s % complete"),{progress:this.state.progress},!0)}},{key:"getUploadProgress",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement("div",{className:"upload-progress"},l["default"].createElement("img",{src:this.state.preview}),l["default"].createElement("div",{className:"progress"},l["default"].createElement("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},l["default"].createElement("span",{className:"sr-only"},this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return l["default"].createElement("div",null,l["default"].createElement("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(p["default"],{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},gettext("Cancel")))))}},{key:"renderCrop",value:function(){return l["default"].createElement(d["default"],{options:this.state.options,user:this.props.user,upload:this.state.uploaded,onComplete:this.props.onComplete,showError:this.props.showError,showIndex:this.props.showIndex})}},{key:"render",value:function(){return this.state.uploaded?this.renderCrop():this.renderUpload()}}]),t}(l["default"].Component);n["default"]=_},{"../../services/ajax":83,"../../services/snackbar":90,"../../utils/file-size":95,"../button":48,"./crop":49,react:"react"}],54:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"isValidated",value:function(){
+return"undefined"!=typeof this.props.validation}},{key:"getClassName",value:function(){var e="form-group";return this.isValidated()&&(e+=" has-feedback",e+=null===this.props.validation?" has-success":" has-error"),e}},{key:"getFeedback",value:function(){var e=this;return this.props.validation?l["default"].createElement("div",{className:"help-block errors"},this.props.validation.map(function(t,n){return l["default"].createElement("p",{key:e.props["for"]+"FeedbackItem"+n},t)})):null}},{key:"getFeedbackIcon",value:function(){return this.isValidated()?l["default"].createElement("span",{className:"material-icon form-control-feedback","aria-hidden":"true",key:this.props["for"]+"FeedbackIcon"},this.props.validation?"clear":"check"):null}},{key:"getFeedbackDescription",value:function(){return this.isValidated()?l["default"].createElement("span",{id:this.props["for"]+"_status",className:"sr-only"},this.props.validation?gettext("(error)"):gettext("(success)")):null}},{key:"getHelpText",value:function(){return this.props.helpText?l["default"].createElement("p",{className:"help-block"},this.props.helpText):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("label",{className:"control-label "+(this.props.labelClass||""),htmlFor:this.props["for"]||""},this.props.label+":"),l["default"].createElement("div",{className:this.props.controlClass||""},this.props.children,this.getFeedbackIcon(),this.getFeedbackDescription(),this.getFeedback(),this.getHelpText(),this.props.extra||null))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],55:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../utils/validators"),d=(0,c.required)(),f=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.bindInput=function(e){return function(t){var n={};n[e]=t.target.value;var a=r.state.errors||{};a[e]=r.validateField(e,n[e]),n.errors=a,r.setState(n)}},r.handleSubmit=function(e){if(e.preventDefault(),!r.state.isLoading&&r.clean()){r.setState({isLoading:!0});var t=r.send();t?t.then(function(e){r.setState({isLoading:!1}),r.handleSuccess(e)},function(e){r.setState({isLoading:!1}),r.handleError(e)}):r.setState({isLoading:!1})}},s=n,o(r,s)}return s(t,e),i(t,[{key:"validate",value:function(){var e={};if(!this.state.validators)return e;var t={required:this.state.validators.required||this.state.validators,optional:this.state.validators.optional||{}},n=[];for(var r in t.required)t.required.hasOwnProperty(r)&&t.required[r]&&n.push(r);for(var r in t.optional)t.optional.hasOwnProperty(r)&&t.optional[r]&&n.push(r);for(var a in n){var r=n[a],o=this.validateField(r,this.state[r]);null===o?e[r]=null:o&&(e[r]=o)}return e}},{key:"isValid",value:function(){var e=this.validate();for(var t in e)if(e.hasOwnProperty(t)&&null!==e[t])return!1;return!0}},{key:"validateField",value:function(e,t){var n=[];if(!this.state.validators)return n;var r={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},a=d(t)||!1;if(r.required){if(a)n=[a];else for(var o in r.required){var s=r.required[o](t);s&&n.push(s)}return n.length?n:null}if(a===!1&&r.optional){for(var o in r.optional){var s=r.optional[o](t);s&&n.push(s)}return n.length?n:null}return!1}},{key:"clean",value:function(){return!0}},{key:"send",value:function(){return null}},{key:"handleSuccess",value:function(e){}},{key:"handleError",value:function(e){}}]),t}(l["default"].Component);n["default"]=f},{"../utils/validators":100,react:"react"}],56:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"isActive",value:function(){return this.props.path?0===document.location.pathname.indexOf(this.props.path):!1}},{key:"getClassName",value:function(){return this.isActive()?(this.props.className||"")+" "+(this.props.activeClassName||"active"):this.props.className||""}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},this.props.children)}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],57:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"loader"},l["default"].createElement("div",{className:"loader-spinning-wheel"}))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],58:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),d=r(c),f=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body modal-loader"},l["default"].createElement(d["default"],null))}}]),t}(l["default"].Component);n["default"]=f},{"./loader":57,react:"react"}],59:[function(e,t,n){"use strict";function r(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}function a(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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.UsernameHistory=void 0;var l=e("react"),c=a(l),d=e("../avatar"),f=a(d),p=e("../../index"),m=a(p),h=e("../../reducers/username-history"),v=e("../../services/ajax"),g=a(v),b=e("../../services/store"),y=a(b),_=e("../../utils/random"),w=r(_),E=n.UsernameHistory=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"renderUserAvatar",value:function(e){return e.changed_by?c["default"].createElement("a",{href:e.changed_by.absolute_url,className:"user-avatar"},c["default"].createElement(f["default"],{user:e.changed_by,size:"100"})):c["default"].createElement("span",{className:"user-avatar"},c["default"].createElement(f["default"],{size:"100"}))}},{key:"renderUsername",value:function(e){return e.changed_by?c["default"].createElement("a",{href:e.changed_by.absolute_url,className:"item-title"},e.changed_by.username):c["default"].createElement("span",{className:"item-title"},e.changed_by_username)}},{key:"renderHistory",value:function(){var e=this;return c["default"].createElement("div",{className:"username-history ui-ready"},c["default"].createElement("ul",{className:"list-group"},this.props.changes.map(function(t,n){return c["default"].createElement("li",{className:"list-group-item",key:n},c["default"].createElement("div",{className:"username-change-avatar"},e.renderUserAvatar(t)),c["default"].createElement("div",{className:"username-change-author"},e.renderUsername(t)),c["default"].createElement("div",{className:"username-change"},t.old_username,c["default"].createElement("span",{className:"material-icon"},"arrow_forward"),t.new_username),c["default"].createElement("div",{className:"username-change-date"},c["default"].createElement("abbr",{title:t.changed_on.format("LLL")},t.changed_on.fromNow())))})))}},{key:"renderEmptyHistory",value:function(){return c["default"].createElement("div",{className:"username-history ui-ready"},c["default"].createElement("ul",{className:"list-group"},c["default"].createElement("li",{className:"list-group-item empty-message"},gettext("No name changes have been recorded for your account."))))}},{key:"renderHistoryPreview",value:function(){return c["default"].createElement("div",{className:"username-history ui-preview"},c["default"].createElement("ul",{className:"list-group"},w.range(3,5).map(function(e){return c["default"].createElement("li",{className:"list-group-item",key:e},c["default"].createElement("div",{className:"username-change-avatar"},c["default"].createElement("span",{className:"user-avatar"},c["default"].createElement(f["default"],{size:"100"}))),c["default"].createElement("div",{className:"username-change-author"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:w["int"](30,100)+"px"}}," ")),c["default"].createElement("div",{className:"username-change"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:w["int"](30,50)+"px"}}," "),c["default"].createElement("span",{className:"material-icon"},"arrow_forward"),c["default"].createElement("span",{className:"ui-preview-text",style:{width:w["int"](30,50)+"px"}}," ")),c["default"].createElement("div",{className:"username-change-date"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:w["int"](50,100)+"px"}}," ")))})))}},{key:"render",value:function(){return this.props.isLoaded?this.props.changes.length?this.renderHistory():this.renderEmptyHistory():this.renderHistoryPreview()}}]),t}(c["default"].Component),O=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoaded:!1,options:null},n}return i(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this;Promise.all([g["default"].get(this.props.user.api_url.username),g["default"].get(m["default"].get("USERNAME_CHANGES_API"),{user:this.props.user.id})]).then(function(t){e.setState({isLoaded:!0,options:t[0]}),y["default"].dispatch((0,h.dehydrate)(t[1].results))})}},{key:"render",value:function(){return c["default"].createElement("div",null,c["default"].createElement(E,{isLoaded:this.state.isLoaded,changes:this.props["username-history"]}))}}]),t}(c["default"].Component);n["default"]=O},{"../../index":77,"../../reducers/username-history":81,"../../services/ajax":83,"../../services/store":91,"../../utils/random":98,"../avatar":46,react:"react"}],60:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../button"),d=r(c),f=e("../form"),p=r(f),m=e("../form-group"),h=r(m),v=e("../select"),g=r(v),b=e("../yes-no-switch"),y=r(b),_=e("../../reducers/auth"),w=e("../../services/ajax"),E=r(w),O=e("../../services/snackbar"),k=r(O),x=e("../../services/store"),j=r(x),P=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,is_hiding_presence:e.user.is_hiding_presence,limits_private_thread_invites_to:e.user.limits_private_thread_invites_to,subscribe_to_started_threads:e.user.subscribe_to_started_threads,subscribe_to_replied_threads:e.user.subscribe_to_replied_threads,errors:{}},n.privateThreadInvitesChoices=[{value:0,icon:"help_outline",label:gettext("Everybody")},{value:1,icon:"done_all",label:gettext("Users I follow")},{value:2,icon:"highlight_off",label:gettext("Nobody")}],n.subscribeToChoices=[{value:0,icon:"bookmark_border",label:gettext("No")},{value:1,icon:"bookmark",label:gettext("Bookmark")},{value:2,icon:"mail",label:gettext("Bookmark with e-mail notification")}],n}return s(t,e),i(t,[{key:"send",value:function(){return E["default"].post(this.props.user.api_url.options,{is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})}},{key:"handleSuccess",value:function(){j["default"].dispatch((0,_.patchUser)({is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})),k["default"].success(gettext("Your forum options have been changed"))}},{key:"handleError",value:function(e){400===e.status?k["default"].error(gettext("Please reload page and try again.")):k["default"].apiError(e)}},{key:"render",value:function(){return l["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change forum options"))),l["default"].createElement("div",{className:"panel-body"},l["default"].createElement("fieldset",null,l["default"].createElement("legend",null,gettext("Privacy settings")),l["default"].createElement(h["default"],{label:gettext("Hide my presence"),helpText:gettext("If you hide your presence, only members with permission to see hidden users will see when you are online."),"for":"id_is_hiding_presence",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(y["default"],{id:"id_is_hiding_presence",disabled:this.state.isLoading,iconOn:"visibility",iconOff:"visibility_off",labelOn:gettext("Show my presence to other users"),labelOff:gettext("Hide my presence from other users"),onChange:this.bindInput("is_hiding_presence"),value:this.state.is_hiding_presence})),l["default"].createElement(h["default"],{label:gettext("Private thread invitations"),"for":"id_limits_private_thread_invites_to",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(g["default"],{id:"id_limits_private_thread_invites_to",disabled:this.state.isLoading,onChange:this.bindInput("limits_private_thread_invites_to"),value:this.state.limits_private_thread_invites_to,choices:this.privateThreadInvitesChoices}))),l["default"].createElement("fieldset",null,l["default"].createElement("legend",null,gettext("Automatic subscriptions")),l["default"].createElement(h["default"],{label:gettext("Threads I start"),"for":"id_subscribe_to_started_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(g["default"],{id:"id_subscribe_to_started_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_started_threads"),value:this.state.subscribe_to_started_threads,choices:this.subscribeToChoices})),l["default"].createElement(h["default"],{label:gettext("Threads I reply to"),"for":"id_subscribe_to_replied_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(g["default"],{id:"id_subscribe_to_replied_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_replied_threads"),value:this.state.subscribe_to_replied_threads,choices:this.subscribeToChoices})))),l["default"].createElement("div",{className:"panel-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},l["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes")))))))}}]),t}(p["default"]);n["default"]=P},{"../../reducers/auth":78,"../../services/ajax":83,"../../services/snackbar":90,"../../services/store":91,"../button":48,"../form":55,"../form-group":54,"../select":70,"../yes-no-switch":76,react:"react"}],61:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactNav=n.SideNav=void 0;var u=e("react"),l=r(u),c=e("react-router"),d=e("../li"),f=r(d),p=e("../../index"),m=r(p);n.SideNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"list-group nav-side"},m["default"].get("USER_OPTIONS").map(function(e,t){return l["default"].createElement(c.Link,{to:m["default"].get("USERCP_URL")+e.component+"/",className:"list-group-item",activeClassName:"active",key:t},l["default"].createElement("span",{className:"material-icon"},e.icon),e.name)}))}}]),t}(l["default"].Component),n.CompactNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},m["default"].get("USER_OPTIONS").map(function(e,t){return l["default"].createElement(f["default"],{path:m["default"].get("USERCP_URL")+e.component+"/",key:t},l["default"].createElement(c.Link,{to:m["default"].get("USERCP_URL")+e.component+"/"},l["default"].createElement("span",{className:"material-icon"},e.icon),e.name))}))}}]),t}(l["default"].Component)},{"../../index":77,"../li":56,react:"react","react-router":"react-router"}],62:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}function i(e){return{tick:e.tick.tick,user:e.auth.user,"username-history":e["username-history"]}}function u(){return[{path:w["default"].get("USERCP_URL")+"forum-options/",component:(0,f.connect)(i)(h["default"])},{path:w["default"].get("USERCP_URL")+"change-username/",component:(0,f.connect)(i)(g["default"])},{path:w["default"].get("USERCP_URL")+"sign-in-credentials/",component:(0,f.connect)(i)(y["default"])}]}var l=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Options=void 0,n.select=i,n.paths=u;var c=e("react"),d=r(c),f=e("react-redux"),p=e("./navs"),m=e("./forum-options"),h=r(m),v=e("./change-username"),g=r(v),b=e("./sign-in-credentials"),y=r(b),_=e("../../index"),w=r(_);n.Options=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.toggleNav=function(){n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:!0})},n.state={dropdown:!1},n}return s(t,e),l(t,[{key:"getToggleNavClassName",value:function(){return this.state.dropdown?"btn btn-default btn-icon open":"btn btn-default btn-icon"}},{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}},{key:"render",value:function(){return d["default"].createElement("div",null,d["default"].createElement("div",{className:"page-header"},d["default"].createElement("div",{className:"container"},d["default"].createElement("h1",{className:"pull-left"},gettext("Change your options")),d["default"].createElement("button",{className:"btn btn-default btn-icon btn-dropdown-toggle hidden-md hidden-lg",type:"button",onClick:this.toggleNav,"aria-haspopup":"true","aria-expanded":this.state.dropdown?"true":"false"},d["default"].createElement("i",{className:"material-icon"},"menu")))),d["default"].createElement("div",{className:this.getCompactNavClassName()},d["default"].createElement(p.CompactNav,null)),d["default"].createElement("div",{className:"container"},d["default"].createElement("div",{className:"row"},d["default"].createElement("div",{className:"col-md-3 hidden-xs hidden-sm"},d["default"].createElement(p.SideNav,null)),d["default"].createElement("div",{className:"col-md-9"},this.props.children))))}}]),t}(d["default"].Component)},{"../../index":77,"./change-username":59,"./forum-options":60,"./navs":61,"./sign-in-credentials":63,react:"react","react-redux":"react-redux"}],63:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("p",null,"Would you liek to change email or password?")}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],64:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.LABELS=n.STYLES=void 0;var u=e("react"),l=r(u),c=e("../services/zxcvbn"),d=r(c),f=n.STYLES=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],p=n.LABELS=[gettext("Entered password is very weak."),gettext("Entered password is weak."),gettext("Entered password is average."),gettext("Entered password is strong."),gettext("Entered password is very strong.")],m=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n._score=0,n._password=null,n._inputs=[],n}return s(t,e),i(t,[{key:"getScore",value:function(e,t){var n=this,r=!1;return e.trim()!==this._password&&(r=!0),t.length!==this._inputs.length?r=!0:t.map(function(e,t){e.trim()!==n._inputs[t]&&(r=!0)}),r&&(this._score=d["default"].scorePassword(e,t),this._password=e.trim(),this._inputs=t.map(function(e){return e.trim()})),this._score}},{key:"render",value:function(){var e=this.getScore(this.props.password,this.props.inputs);return l["default"].createElement("div",{className:"help-block password-strength"},l["default"].createElement("div",{className:"progress"},l["default"].createElement("div",{className:"progress-bar "+f[e],style:{width:20+20*e+"%"},role:"progress-bar","aria-valuenow":e,"aria-valuemin":"0","aria-valuemax":"4"},l["default"].createElement("span",{className:"sr-only"},p[e]))),l["default"].createElement("p",{className:"text-small"},p[e]))}}]),t}(l["default"].Component);n["default"]=m},{"../services/zxcvbn":92,react:"react"}],65:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("./loader"),d=r(c),f=e("./register.js"),p=r(f),m=e("../services/captcha"),h=r(m),v=e("../services/modal"),g=r(v),b=e("../services/snackbar"),y=r(b),_=e("../services/zxcvbn"),w=r(_),E=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.showRegisterModal=function(){"closed"===misago.get("SETTINGS").account_activation?y["default"].info(gettext("New registrations are currently disabled.")):n.state.isLoaded?g["default"].show(p["default"]):(n.setState({isLoading:!0}),Promise.all([h["default"].load(),w["default"].load()]).then(function(){n.state.isLoaded||n.setState({isLoading:!1,isLoaded:!1}),g["default"].show(p["default"])}))},n.state={isLoading:!1,isLoaded:!1},n}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showRegisterModal,className:"btn "+this.getClassName(),disabled:this.state.isLoaded},gettext("Register"),this.state.isLoading?l["default"].createElement(d["default"],null):null)}}]),t}(l["default"].Component);n["default"]=E},{"../services/captcha":85,"../services/modal":89,"../services/snackbar":90,"../services/zxcvbn":92,"./loader":57,"./register.js":66,react:"react"}],66:[function(e,t,n){"use strict";function r(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}function a(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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.RegisterComplete=n.RegisterForm=void 0;var l=e("react"),c=a(l),d=e("./button"),f=a(d),p=e("./form"),m=a(p),h=e("./form-group"),v=a(h),g=e("./password-strength"),b=a(g),y=e("../index"),_=a(y),w=e("../services/ajax"),E=a(w),O=e("../services/auth"),k=a(O),x=e("../services/captcha"),j=a(x),P=e("../services/modal"),N=a(P),C=e("../services/snackbar"),S=a(C),M=e("../utils/banned-page"),T=a(M),L=e("../utils/validators"),A=r(L),I=n.RegisterForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,username:"",email:"",password:"",captcha:"",validators:{username:[A.usernameContent(),A.usernameMinLength(_["default"].get("SETTINGS")),A.usernameMaxLength(_["default"].get("SETTINGS"))],email:[A.email()],password:[A.passwordMinLength(_["default"].get("SETTINGS"))],captcha:j["default"].validator()},errors:{}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(S["default"].error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return E["default"].post(_["default"].get("USERS_API"),{username:this.state.username,email:this.state.email,password:this.state.password,captcha:this.state.captcha})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),S["default"].error(gettext("Form contains errors."))):403===e.status&&e.ban?((0,T["default"])(e.ban),N["default"].hide()):S["default"].apiError(e)}},{key:"getLegalFootNote",value:function(){return _["default"].get("TERMS_OF_SERVICE_URL")?c["default"].createElement("a",{href:_["default"].get("TERMS_OF_SERVICE_URL"),target:"_blank"},gettext("By registering you agree to site's terms and conditions.")):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Register"))),c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("input",{type:"type",style:{display:"none"}}),c["default"].createElement("input",{type:"password",style:{display:"none"}}),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(v["default"],{label:gettext("Username"),"for":"id_username",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.username},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control","aria-describedby":"id_username_status",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username})),c["default"].createElement(v["default"],{label:gettext("E-mail"),"for":"id_email",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.email},c["default"].createElement("input",{type:"text",id:"id_email",className:"form-control","aria-describedby":"id_email_status",disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email})),c["default"].createElement(v["default"],{label:gettext("Password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.password,extra:c["default"].createElement(b["default"],{password:this.state.password,inputs:[this.state.username,this.state.email]})},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control","aria-describedby":"id_password_status",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password})),j["default"].component({form:this,labelClass:"col-sm-4",controlClass:"col-sm-8"})),c["default"].createElement("div",{className:"modal-footer"},this.getLegalFootNote(),c["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Register account"))))))}}]),t}(m["default"]),R=n.RegisterComplete=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getLead",value:function(){return"user"===this.props.activation?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===this.props.activation?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):void 0}},{key:"getSubscript",value:function(){return"user"===this.props.activation?gettext("We have sent an e-mail to %(email)s with link that you have to click to activate your account."):"admin"===this.props.activation?gettext("We will send an e-mail to %(email)s when this takes place."):void 0}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-message modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Registration complete"))),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},interpolate(this.getLead(),{username:this.props.username},!0)),c["default"].createElement("p",null,interpolate(this.getSubscript(),{email:this.props.email},!0))))))}}]),t}(c["default"].Component),U=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.completeRegistration=function(e){"active"===e.activation?(N["default"].hide(),k["default"].signIn(e)):n.setState({complete:e})},n.state={complete:!1},n}return i(t,e),u(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(R,{activation:this.state.complete.activation,username:this.state.complete.username,email:this.state.complete.email}):c["default"].createElement(I,{callback:this.completeRegistration})}}]),t}(c["default"].Component);n["default"]=U},{"../index":77,"../services/ajax":83,"../services/auth":84,"../services/captcha":85,"../services/modal":89,"../services/snackbar":90,"../utils/banned-page":93,"../utils/validators":100,"./button":48,"./form":55,"./form-group":54,"./password-strength":64,react:"react"}],67:[function(e,t,n){"use strict";function r(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}function a(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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.LinkSent=n.RequestLinkForm=void 0;var l=e("react"),c=a(l),d=e("../index"),f=a(d),p=e("./button"),m=a(p),h=e("./form"),v=a(h),g=e("../services/ajax"),b=a(g),y=e("../services/snackbar"),_=a(y),w=e("../utils/validators"),E=r(w),O=e("../utils/banned-page"),k=a(O),x=n.RequestLinkForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[E.email()]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(_["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return b["default"].post(f["default"].get("SEND_ACTIVATION_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["already_active","inactive_admin"].indexOf(e.code)>-1?_["default"].info(e.detail):403===e.status&&e.ban?(0,k["default"])(e.ban):_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(m["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(v["default"]),j=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getMessage",value:function(){return interpolate(gettext("Activation link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),P=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.complete=function(e){n.setState({complete:e})},n.reset=function(){n.setState({complete:!1})},n.state={complete:!1},n}return i(t,e),u(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(j,{user:this.state.complete,callback:this.reset}):c["default"].createElement(x,{callback:this.complete})}}]),t}(c["default"].Component);n["default"]=P},{"../index":77,"../services/ajax":83,"../services/snackbar":90,"../utils/banned-page":93,"../utils/validators":100,"./button":48,"./form":55,react:"react"}],68:[function(e,t,n){"use strict";function r(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}function a(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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.AccountInactivePage=n.LinkSent=n.RequestResetForm=void 0;var l=e("react"),c=a(l),d=e("react-dom"),f=a(d),p=e("../index"),m=a(p),h=e("./button"),v=a(h),g=e("./form"),b=a(g),y=e("../services/ajax"),_=a(y),w=e("../services/snackbar"),E=a(w),O=e("../utils/validators"),k=r(O),x=e("../utils/banned-page"),j=a(x),P=n.RequestResetForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[k.email()]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(E["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return _["default"].post(m["default"].get("SEND_PASSWORD_RESET_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["inactive_user","inactive_admin"].indexOf(e.code)>-1?this.props.showInactivePage(e):403===e.status&&e.ban?(0,j["default"])(e.ban):E["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(v["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(b["default"]),N=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getMessage",value:function(){return interpolate(gettext("Reset password link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),C=n.AccountInactivePage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?c["default"].createElement("p",null,c["default"].createElement("a",{href:m["default"].get("REQUEST_ACTIVATION_URL")},gettext("Activate your account."))):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-info page-forgotten-password-inactive"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("Your account is inactive.")),c["default"].createElement("p",null,this.props.message),this.getActivateButton()))))}}]),t}(c["default"].Component),S=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.complete=function(e){n.setState({complete:e})},n.reset=function(){n.setState({complete:!1})},n.state={complete:!1},n}return i(t,e),u(t,[{key:"showInactivePage",value:function(e){f["default"].render(c["default"].createElement(C,{activation:e.code,message:e.detail}),document.getElementById("page-mount"))}},{key:"render",value:function(){return this.state.complete?c["default"].createElement(N,{user:this.state.complete,callback:this.reset}):c["default"].createElement(P,{callback:this.complete,showInactivePage:this.showInactivePage})}}]),t}(c["default"].Component);n["default"]=S},{"../index":77,"../services/ajax":83,"../services/snackbar":90,"../utils/banned-page":93,"../utils/validators":100,"./button":48,"./form":55,react:"react","react-dom":"react-dom"}],69:[function(e,t,n){"use strict";function r(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}function a(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 s(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)}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.PasswordChangedPage=n.ResetPasswordForm=void 0;var l=e("react"),c=a(l),d=e("react-dom"),f=a(d),p=e("../index"),m=a(p),h=e("./button"),v=a(h),g=e("./form"),b=a(g),y=e("./sign-in.js"),_=a(y),w=e("../services/ajax"),E=a(w),O=e("../services/auth"),k=a(O),x=e("../services/modal"),j=a(x),P=e("../services/snackbar"),N=a(P),C=e("../utils/validators"),S=r(C),M=e("../utils/banned-page"),T=a(M),L=n.ResetPasswordForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,password:"",validators:{password:[S.passwordMinLength(m["default"].get("SETTINGS"))]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(this.state.password.trim().length?N["default"].error(this.state.errors.password[0]):N["default"].error(gettext("Enter new password.")),!1)}},{key:"send",value:function(){return E["default"].post(m["default"].get("CHANGE_PASSWORD_API"),{password:this.state.password})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){403===e.status&&e.ban?(0,T["default"])(e.ban):N["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-reset-password"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"password",className:"form-control",placeholder:gettext("Enter new password"),disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement(v["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Change password"))))}}]),t}(b["default"]),A=n.PasswordChangedPage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getMessage",value:function(){return interpolate(gettext("%(username)s, your password has been changed successfully."),{username:this.props.user.username},!0)}},{key:"showSignIn",value:function(){j["default"].show(_["default"])}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-success page-forgotten-password-changed"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,gettext("You will have to sign in using new password before continuing.")),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-primary",onClick:this.showSignIn},gettext("Sign in")))))))}}]),t}(c["default"].Component),I=function(e){function t(){var e,n,r,a;o(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.complete=function(e){k["default"].softSignOut(),$('#hidden-login-form input[name="redirect_to"]').remove(),f["default"].render(c["default"].createElement(A,{user:e}),document.getElementById("page-mount"))},a=n,s(r,a)}return i(t,e),u(t,[{key:"render",value:function(){return c["default"].createElement(L,{callback:this.complete})}}]),t}(c["default"].Component);n["default"]=I},{"../index":77,"../services/ajax":83,"../services/auth":84,"../services/modal":89,"../services/snackbar":90,"../utils/banned-page":93,"../utils/validators":100,"./button":48,"./form":55,"./sign-in.js":71,react:"react","react-dom":"react-dom"}],70:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.change=function(e){return function(){r.props.onChange({target:{value:e}})}},s=n,o(r,s)}return s(t,e),i(t,[{key:"getChoice",value:function(){var e=this,t=null;return this.props.choices.map(function(n){n.value===e.props.value&&(t=n)}),t}},{key:"getIcon",value:function(){return this.getChoice().icon}},{key:"getLabel",value:function(){return this.getChoice().label}},{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"btn-group btn-select-group"},l["default"].createElement("button",{type:"button",className:"btn btn-select dropdown-toggle",id:this.props.id||null,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel()),l["default"].createElement("ul",{className:"dropdown-menu"},this.props.choices.map(function(t,n){return l["default"].createElement("li",{key:n},l["default"].createElement("button",{type:"button",className:"btn-link",onClick:e.change(t.value)},l["default"].createElement("span",{className:"material-icon"},t.icon),t.label))})))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],71:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=e("../index"),d=r(c),f=e("./button"),p=r(f),m=e("./form"),h=r(m),v=e("../services/ajax"),g=r(v),b=e("../services/modal"),y=r(b),_=e("../services/snackbar"),w=r(_),E=e("../utils/banned-page"),O=r(E),k=function(e){function t(e){a(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,showActivation:!1,username:"",password:"",validators:{username:[],password:[]}},n}return s(t,e),i(t,[{key:"clean",value:function(){return this.isValid()?!0:(w["default"].error(gettext("Fill out both fields.")),!1)}},{key:"send",value:function(){return g["default"].post(d["default"].get("AUTH_API"),{username:this.state.username,password:this.state.password})}},{key:"handleSuccess",value:function(){var e=$("#hidden-login-form");e.append('<input type="text" name="username" />'),e.append('<input type="password" name="password" />'),e.find('input[type="hidden"]').val(g["default"].getCsrfToken()),e.find('input[name="redirect_to"]').val(window.location.pathname),e.find('input[name="username"]').val(this.state.username),e.find('input[name="password"]').val(this.state.password),e.submit(),this.setState({isLoading:!0})}},{key:"handleError",value:function(e){400===e.status?"inactive_admin"===e.code?w["default"].info(e.detail):"inactive_user"===e.code?(w["default"].info(e.detail),this.setState({showActivation:!0})):"banned"===e.code?((0,O["default"])(e.detail),y["default"].hide()):w["default"].error(e.detail):403===e.status&&e.ban?((0,O["default"])(e.ban),y["default"].hide()):w["default"].apiError(e)}},{key:"getActivationButton",value:function(){return this.state.showActivation?l["default"].createElement("a",{href:d["default"].get("REQUEST_ACTIVATION_URL"),className:"btn btn-success btn-block"},gettext("Activate account")):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Sign in"))),l["default"].createElement("form",{onSubmit:this.handleSubmit},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["default"].createElement("input",{id:"id_username",className:"form-control",type:"text",disabled:this.state.isLoading,placeholder:gettext("Username or e-mail"),onChange:this.bindInput("username"),value:this.state.username}))),l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["default"].createElement("input",{id:"id_password",className:"form-control",type:"password",disabled:this.state.isLoading,placeholder:gettext("Password"),onChange:this.bindInput("password"),value:this.state.password})))),l["default"].createElement("div",{className:"modal-footer"},this.getActivationButton(),l["default"].createElement(p["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Sign in")),l["default"].createElement("a",{href:d["default"].get("FORGOTTEN_PASSWORD_URL"),className:"btn btn-default btn-block"},gettext("Forgot password?"))))))}}]),t}(h["default"]);n["default"]=k},{"../index":77,"../services/ajax":83,"../services/modal":89,"../services/snackbar":90,"../utils/banned-page":93,"./button":48,"./form":55,react:"react"}],72:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}function i(e){return e.snackbar}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Snackbar=void 0,n.select=i;var l=e("react"),c=r(l),d={info:"alert-info",success:"alert-success",warning:"alert-warning",error:"alert-danger"};n.Snackbar=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"getSnackbarClass",value:function(){var e="alerts-snackbar";return e+=this.props.isVisible?" in":" out"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getSnackbarClass()},c["default"].createElement("p",{className:"alert "+d[this.props.type]},this.props.message))}}]),t}(c["default"].Component)},{react:"react"}],73:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactGuestNav=n.GuestNav=n.GuestMenu=void 0;var u=e("react"),l=r(u),c=e("../avatar"),d=r(c),f=e("../register-button"),p=r(f),m=e("../sign-in.js"),h=r(m),v=e("../../services/mobile-navbar-dropdown"),g=r(v),b=e("../../services/modal"),y=r(b),_=n.GuestMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showSignInModal",value:function(){y["default"].show(h["default"])}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},l["default"].createElement("li",{className:"guest-preview"},l["default"].createElement("h4",null,gettext("You are browsing as guest.")),l["default"].createElement("p",null,gettext("Sign in or register to start and participate in discussions.")),l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.showSignInModal},gettext("Sign in"))),l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement(p["default"],{className:"btn-primary btn-block"},gettext("Register"))))))}}]),t}(l["default"].Component);n.GuestNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"nav nav-guest"},l["default"].createElement("button",{type:"button",className:"btn navbar-btn btn-default",onClick:this.showSignInModal},gettext("Sign in")),l["default"].createElement(p["default"],{className:"navbar-btn btn-primary"},gettext("Register")))}}]),t}(_),n.CompactGuestNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showGuestMenu",value:function(){g["default"].show(_)}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showGuestMenu},l["default"].createElement(d["default"],{size:"64"}))}}]),t}(l["default"].Component)},{"../../services/mobile-navbar-dropdown":88,"../../services/modal":89,"../avatar":46,"../register-button":65,"../sign-in.js":71,react:"react"}],74:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}function i(e){return e.auth}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactUserMenu=n.UserMenu=void 0,n.select=i;var l=e("react"),c=r(l),d=e("./guest-nav"),f=e("./user-nav");n.UserMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return this.props.isAuthenticated?c["default"].createElement(f.UserNav,{user:this.props.user}):c["default"].createElement(d.GuestNav,null)}}]),t}(c["default"].Component),n.CompactUserMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return this.props.isAuthenticated?c["default"].createElement(f.CompactUserNav,{user:this.props.user}):c["default"].createElement(d.CompactGuestNav,null)}}]),t}(c["default"].Component)},{"./guest-nav":73,"./user-nav":75,react:"react"}],75:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}function i(e){return{user:e.auth.user}}var u=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.CompactUserNav=n.UserNav=n.UserMenu=void 0,n.selectUserMenu=i;var l=e("react"),c=r(l),d=e("react-redux"),f=e("../avatar"),p=r(f),m=e("../change-avatar/root"),h=r(m),v=e("../../index"),g=r(v),b=e("../../services/mobile-navbar-dropdown"),y=r(b),_=e("../../services/modal"),w=r(_),E=n.UserMenu=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"logout",value:function(){var e=confirm(gettext("Are you sure you want to sign out?"));e&&$("#hidden-logout-form").submit()}},{key:"changeAvatar",value:function(){w["default"].show((0,d.connect)(m.select)(h["default"]))}},{key:"render",value:function(){return c["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},c["default"].createElement("li",{className:"dropdown-header"},c["default"].createElement("strong",null,this.props.user.username)),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",null,c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement("span",{className:"material-icon"},"account_circle"),gettext("See your profile"))),c["default"].createElement("li",null,c["default"].createElement("a",{href:g["default"].get("USERCP_URL")},c["default"].createElement("span",{className:"material-icon"},"done_all"),gettext("Change options"))),c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.changeAvatar},c["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Change avatar"))),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",{className:"dropdown-footer"},c["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.logout},gettext("Log out"))))}}]),t}(c["default"].Component);n.UserNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return c["default"].createElement("ul",{className:"ul nav navbar-nav nav-user"},c["default"].createElement("li",{className:"dropdown"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",role:"button"},c["default"].createElement(p["default"],{user:this.props.user,size:"64"})),c["default"].createElement(E,{user:this.props.user})))}}]),t}(c["default"].Component),n.CompactUserNav=function(e){function t(){return a(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"showUserMenu",value:function(){y["default"].showConnected("user-menu",(0,d.connect)(i)(E))}},{key:"render",value:function(){return c["default"].createElement("button",{type:"button",onClick:this.showUserMenu},c["default"].createElement(p["default"],{user:this.props.user,size:"64"}))}}]),t}(c["default"].Component)},{"../../index":77,"../../services/mobile-navbar-dropdown":88,"../../services/modal":89,"../avatar":46,"../change-avatar/root":52,react:"react","react-redux":"react-redux"}],76:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 s(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)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=r(u),c=function(e){function t(){var e,n,r,s;a(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=r=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),r.toggle=function(){r.props.onChange({target:{value:!r.props.value}})},s=n,o(r,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.value?"btn btn-yes-no btn-yes-no-on":"btn btn-yes-no btn-yes-no-off"}},{key:"getIcon",value:function(){return this.props.value?this.props.iconOn||"check_box":this.props.iconOff||"check_box_outline_blank"}},{key:"getLabel",value:function(){return this.props.value?this.props.labelOn||gettext("yes"):this.props.labelOff||gettext("no")}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.toggle,className:this.getClassName(),id:this.props.id||null,"aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],77:[function(e,t,n){(function(t){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Misago=void 0;var s=e("./utils/ordered-list"),i=r(s),u=n.Misago=function(){function e(){a(this,e),this._initializers=[],this._context={}}return o(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e;var n=new i["default"](this._initializers).orderedValues();n.forEach(function(e){e(t)})}},{key:"has",value:function(e){return this._context.hasOwnProperty(e)}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}}]),e}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./utils/ordered-list":97}],78:[function(e,t,n){"use strict";function r(e){return{type:l,patch:e}}function a(e){return{type:c,user:e}}function o(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];return{type:d,soft:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?u:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case l:var n=Object.assign({},e);return n.user=Object.assign({},e.user,t.patch),n;case c:return Object.assign({},e,{signedIn:t.user});case d:return Object.assign({},e,{isAuthenticated:!1,isAnonymous:!0,signedOut:!t.soft});case i.UPDATE_AVATAR:if(e.isAuthenticated&&e.user.id===t.userId){var r=Object.assign({},e);return r.user=Object.assign({},e.user,{avatar_hash:t.avatarHash}),r}return e;default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.SIGN_OUT=n.SIGN_IN=n.PATCH_USER=n.initialState=void 0,n.patchUser=r,n.signIn=a,n.signOut=o,n["default"]=s;var i=e("./users"),u=n.initialState={signedIn:!1,signedOut:!1},l=n.PATCH_USER="PATCH_USER",c=n.SIGN_IN="SIGN_IN",d=n.SIGN_OUT="SIGN_OUT"},{"./users":82}],79:[function(e,t,n){"use strict";function r(e,t){return{type:i,message:e,messageType:t}}function a(){return{type:u}}function o(){var e=arguments.length<=0||void 0===arguments[0]?s:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return t.type===i?{type:t.messageType,message:t.message,isVisible:!0}:t.type===u?Object.assign({},e,{isVisible:!1}):e}Object.defineProperty(n,"__esModule",{value:!0}),n.showSnackbar=r,n.hideSnackbar=a,n["default"]=o;var s=n.initialState={type:"info",message:"",isVisible:!1},i=n.SHOW_SNACKBAR="SHOW_SNACKBAR",u=n.HIDE_SNACKBAR="HIDE_SNACKBAR"},{}],80:[function(e,t,n){"use strict";function r(){return{type:s}}function a(){var e=arguments.length<=0||void 0===arguments[0]?o:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];return t.type===s?Object.assign({},e,{tick:e.tick+1}):e}Object.defineProperty(n,"__esModule",{value:!0}),n.doTick=r,n["default"]=a;var o=n.initialState={tick:0},s=n.TICK="TICK"},{}],81:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e){return{type:l,items:e}}function o(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case l:return t.items.map(function(e){return Object.assign({},e,{changed_on:(0,u["default"])(e.changed_on)})});case s.UPDATE_AVATAR:return e.map(function(e){return e.changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{avatar_hash:t.avatarHash})),Object.assign({},e)});default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.DEHYDRATE_RESULT=void 0,n.dehydrate=a,n["default"]=o;var s=e("./users"),i=e("moment"),u=r(i),l=n.DEHYDRATE_RESULT="DEHYDRATE_RESULT"},{"./users":82,moment:"moment"}],82:[function(e,t,n){"use strict";function r(e,t){return{type:a,userId:e.id,avatarHash:t}}Object.defineProperty(n,"__esModule",{value:!0}),n.updateAvatar=r;var a=n.UPDATE_AVATAR="UPDATE_AVATAR"},{}],83:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Ajax=function(){function e(){r(this,e),this._cookieName=null,this._csrfToken=null}return a(e,[{key:"init",value:function(e){this._cookieName=e,this._csrfToken=this.getCsrfToken()}},{key:"getCsrfToken",value:function(){if(-1!==document.cookie.indexOf(this._cookieName)){var e=new RegExp(this._cookieName+"=([^;]*)"),t=document.cookie.match(e)[0];return t?t.split("=")[1]:null}return null}},{key:"request",value:function(e,t,n){var r=this;return new Promise(function(a,o){var s={url:t,method:e,headers:{"X-CSRFToken":r._csrfToken},data:n?JSON.stringify(n):null,contentType:"application/json; charset=utf-8",dataType:"json",success:function(e){a(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}},{key:"get",value:function(e,t){return t&&(e+="?"+$.param(t)),this.request("GET",e)}},{key:"post",value:function(e,t){return this.request("POST",e,t)}},{key:"patch",value:function(e,t){return this.request("PATCH",e,t)}},{key:"put",value:function(e,t){return this.request("PUT",e,t)}},{key:"delete",value:function(e){return this.request("DELETE",e)}},{key:"upload",value:function(e,t,n){var r=this;return new Promise(function(a,o){var s={url:e,method:"POST",headers:{"X-CSRFToken":r._csrfToken},data:t,contentType:!1,processData:!1,xhr:function i(){var i=new window.XMLHttpRequest;return i.upload.addEventListener("progress",function(e){e.lengthComputable&&n(Math.round(e.loaded/e.total*100))},!1),i},success:function(e){a(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}}]),e}();n["default"]=new o},{}],84:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Auth=void 0;var o=e("../reducers/auth"),s=n.Auth=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e,t,n){this._store=e,this._local=t,this._modal=n,this.syncSession(),this.watchState()}},{key:"syncSession",value:function(){var e=this._store.getState().auth;e.isAuthenticated?this._local.set("auth",{isAuthenticated:!0,username:e.user.username}):this._local.set("auth",{isAuthenticated:!1})}},{key:"watchState",value:function(){var e=this;this._local.watch("auth",function(t){t.isAuthenticated?e._store.dispatch((0,o.signIn)({username:t.username})):e._store.dispatch((0,o.signOut)())}),this._modal.hide()}},{key:"signIn",value:function(e){this._store.dispatch((0,o.signIn)(e)),this._local.set("auth",{isAuthenticated:!0,username:e.username}),this._modal.hide()}},{key:"signOut",value:function(){this._store.dispatch((0,o.signOut)()),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}},{key:"softSignOut",value:function(){this._store.dispatch((0,o.signOut)(!0)),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}}]),e}();n["default"]=new s},{"../reducers/auth":78}],85:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(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 o(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)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Captcha=n.ReCaptcha=n.ReCaptchaComponent=n.QACaptcha=n.NoCaptcha=n.BaseCaptcha=void 0;var u=e("react"),l=r(u),c=e("../components/form-group"),d=r(c),f=n.BaseCaptcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,r){this._context=e,this._ajax=t,this._include=n,this._snackbar=r}}]),e}(),p=n.NoCaptcha=function(e){function t(){return s(this,t),a(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return new Promise(function(e){e()})}},{key:"validator",value:function(){return null}},{key:"component",value:function(){return null}}]),t}(f),m=n.QACaptcha=function(e){function t(){return s(this,t),a(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){var e=this;return new Promise(function(t,n){e._ajax.get(e._context.get("CAPTCHA_API_URL")).then(function(n){e.question=n.question,e.helpText=n.help_text,t()},function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),n()})})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["default"].createElement(d["default"],{label:this.question,"for":"id_captcha",labelClass:e.labelClass||"col-sm-4",controlClass:e.controlClass||"col-sm-8",validation:e.form.state.errors.captcha,helpText:this.helpText||null},l["default"].createElement("input",{type:"text",id:"id_captcha",className:"form-control","aria-describedby":"id_captcha_status",disabled:e.form.state.isLoading,onChange:e.form.bindInput("captcha"),value:e.form.state.captcha}))}}]),t}(f),h=n.ReCaptchaComponent=function(e){function t(){return s(this,t),a(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;grecaptcha.render("recaptcha",{sitekey:this.props.siteKey,callback:function(t){e.props.binding({target:{value:t}})}})}},{key:"render",value:function(){return l["default"].createElement("div",{id:"recaptcha"})}}]),t}(l["default"].Component),v=n.ReCaptcha=function(e){function t(){return s(this,t),a(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return this._include.include("https://www.google.com/recaptcha/api.js",!0),new Promise(function(e){var t=function n(){"undefined"==typeof grecaptcha?window.setTimeout(function(){n()},200):e()};t()})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["default"].createElement(d["default"],{label:gettext("Captcha"),"for":"id_captcha",labelClass:e.labelClass||"col-sm-4",controlClass:e.controlClass||"col-sm-8",validation:e.form.state.errors.captcha,helpText:gettext("Please solve the quick test.")},l["default"].createElement(h,{siteKey:this._context.get("SETTINGS").recaptcha_site_key,binding:e.form.bindInput("captcha")}))}}]),t}(f),g=n.Captcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,r){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new p;break;case"qa":this._captcha=new m;break;case"re":this._captcha=new v}this._captcha.init(e,t,n,r)}},{key:"load",value:function(){return this._captcha.load()}},{key:"validator",value:function(){return this._captcha.validator()}},{key:"component",value:function(e){return this._captcha.component(e)}}]),e}();n["default"]=new g},{"../components/form-group":54,react:"react"}],86:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Include=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e){this._staticUrl=e,this._included=[]}},{key:"include",value:function(e){var t=arguments.length<=1||void 0===arguments[1]?!1:arguments[1];-1===this._included.indexOf(e)&&(this._included.push(e),this._include(e,t))}},{key:"_include",value:function(e,t){$.ajax({url:(t?"":this._staticUrl)+e,cache:!0,dataType:"script"})}}]),e}();n["default"]=new o},{}],87:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=window.localStorage,s=n.LocalStorage=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e){var t=this;this._prefix=e,this._watchers=[],window.addEventListener("storage",function(e){var n=JSON.parse(e.newValue);t._watchers.forEach(function(t){t.key===e.key&&e.oldValue!==e.newValue&&t.callback(n)})})}},{key:"set",value:function(e,t){o.setItem(this._prefix+e,JSON.stringify(t))}},{key:"get",value:function(e){var t=o.getItem(this._prefix+e);return t?JSON.parse(t):null}},{key:"watch",value:function(e,t){this._watchers.push({key:this._prefix+e,callback:t})}}]),e}();n["default"]=new s},{}],88:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.MobileNavbarDropdown=void 0;var s=e("../utils/mount-component"),i=r(s),u=n.MobileNavbarDropdown=function(){function e(){a(this,e)}return o(e,[{key:"init",value:function(e){this._element=e,this._component=null}},{key:"show",value:function(e){this._component===e?this.hide():(this._component=e,(0,i["default"])(e,this._element.id),$(this._element).addClass("open"))}},{key:"showConnected",value:function(e,t){this._component===e?this.hide():(this._component=e,(0,i["default"])(t,this._element.id,!0),$(this._element).addClass("open"))}},{key:"hide",value:function(){$(this._element).removeClass("open"),this._component=null}}]),e}();n["default"]=new u},{"../utils/mount-component":96}],89:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Modal=void 0;var s=e("react-dom"),i=r(s),u=e("../utils/mount-component"),l=r(u),c=n.Modal=function(){function e(){a(this,e)}return o(e,[{key:"init",value:function(e){var t=this;this._element=e,this._modal=$(e).modal({show:!1}),this._modal.on("hidden.bs.modal",function(){i["default"].unmountComponentAtNode(t._element)})}},{key:"show",value:function(e){(0,l["default"])(e,this._element.id),this._modal.modal("show")}},{key:"hide",value:function(){this._modal.modal("hide")}}]),e}();n["default"]=new c},{"../utils/mount-component":96,"react-dom":"react-dom"}],90:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Snackbar=void 0;var o=e("../reducers/snackbar"),s=300,i=5e3,u=n.Snackbar=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e){this._store=e,this._timeout=null}},{key:"alert",value:function(e,t){var n=this;this._timeout?(window.clearTimeout(this._timeout),this._store.dispatch((0,o.hideSnackbar)()),this._timeout=window.setTimeout(function(){n._timeout=null,n.alert(e,t)},s)):(this._store.dispatch((0,o.showSnackbar)(e,t)),this._timeout=window.setTimeout(function(){n._store.dispatch((0,o.hideSnackbar)()),n._timeout=null},i))}},{key:"info",value:function(e){this.alert(e,"info")}},{key:"success",value:function(e){this.alert(e,"success")}},{key:"warning",value:function(e){this.alert(e,"warning")}},{key:"error",value:function(e){this.alert(e,"error")}},{key:"apiError",value:function(e){var t=gettext("Unknown error has occured.");0===e.status&&(t=e.detail),400===e.status&&e.detail&&(t=e.detail),403===e.status&&(t=e.detail,"Permission denied"===t&&(t=gettext("You don't have permission to perform this action."))),404===e.status&&(t=gettext("Action link is invalid.")),this.error(t)}}]),e}();n["default"]=new u},{"../reducers/snackbar":79}],91:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.StoreWrapper=void 0;var o=e("redux"),s=n.StoreWrapper=function(){function e(){r(this,e),this._store=null,this._reducers={},this._initialState={}}return a(e,[{key:"addReducer",value:function(e,t,n){this._reducers[e]=t,this._initialState[e]=n}},{key:"init",value:function(){this._store=(0,o.createStore)((0,o.combineReducers)(this._reducers),this._initialState)}},{key:"getStore",value:function(){return this._store}},{key:"getState",value:function(){return this._store.getState()}},{key:"dispatch",value:function(e){return this._store.dispatch(e)}}]),e}();n["default"]=new s},{redux:"redux"}],92:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=n.Zxcvbn=function(){function e(){r(this,e)}return a(e,[{key:"init",value:function(e){this._include=e}},{key:"scorePassword",value:function(e,t){return zxcvbn(e,t).score}},{key:"load",value:function(){return"undefined"==typeof zxcvbn?(this._include.include("misago/js/zxcvbn.js"),this._loadingPromise()):this._loadedPromise()}},{key:"_loadingPromise",value:function(){return new Promise(function(e){var t=function n(){"undefined"==typeof zxcvbn?window.setTimeout(function(){n()},200):e()};t()})}},{key:"_loadedPromise",value:function(){return new Promise(function(e){e()})}}]),e}();n["default"]=new o},{}],93:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){if(l["default"].render(i["default"].createElement(c.Provider,{store:v["default"].getStore()},i["default"].createElement(b,{message:e.message,expires:e.expires_on?(0,o["default"])(e.expires_on):null})),document.getElementById("page-mount")),"undefined"==typeof t||t){var n=m["default"].get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+n,window.history.pushState({},"",m["default"].get("BANNED_URL"))}};var a=e("moment"),o=r(a),s=e("react"),i=r(s),u=e("react-dom"),l=r(u),c=e("react-redux"),d=e("../components/banned-page"),f=r(d),p=e("../index"),m=r(p),h=e("../services/store"),v=r(h),g=function(e){return e.tick},b=(0,c.connect)(g)(f["default"])},{"../components/banned-page":47,"../index":77,"../services/store":91,moment:"moment",react:"react","react-dom":"react-dom","react-redux":"react-redux"}],94:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{
+value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],r=[],a=[];if(e.forEach(function(e){a.push(e),a.length===t&&(r.push(a),a=[])}),n!==!1&&a.length>0&&a.length<t)for(var o=a.length;t>o;o++)a.push(n);return a.length&&r.push(a),r}},{}],95:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){return e>1e9?Math.round(100*e/1e9)/100+" GB":e>1e6?Math.round(100*e/1e6)/100+" MB":e>1e3?Math.round(100*e/1e3)/100+" KB":Math.round(100*e)/100+" B"}},{}],96:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!0:arguments[2],r=document.getElementById(t);r&&(n?i["default"].render(o["default"].createElement(u.Provider,{store:c["default"].getStore()},o["default"].createElement(e,null)),r):i["default"].render(o["default"].createElement(e,null),r))};var a=e("react"),o=r(a),s=e("react-dom"),i=r(s),u=e("react-redux"),l=e("../services/store"),c=r(l)},{"../services/store":91,react:"react","react-dom":"react-dom","react-redux":"react-redux"}],97:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(t){r(this,e),this.isOrdered=!1,this._items=t||[]}return a(e,[{key:"add",value:function(e,t,n){this._items.push({key:e,item:t,after:n?n.after||null:null,before:n?n.before||null:null})}},{key:"get",value:function(e,t){for(var n=0;n<this._items.length;n++)if(this._items[n].key===e)return this._items[n].item;return t}},{key:"has",value:function(e){return void 0!==this.get(e)}},{key:"values",value:function t(){for(var t=[],e=0;e<this._items.length;e++)t.push(this._items[e].item);return t}},{key:"order",value:function(e){return this.isOrdered||(this._items=this._order(this._items),this.isOrdered=!0),e||"undefined"==typeof e?this.values():this._items}},{key:"orderedValues",value:function(){return this.order(!0)}},{key:"_order",value:function(e){function t(e){var t=-1;-1===a.indexOf(e.key)&&(e.after?(t=a.indexOf(e.after),-1!==t&&(t+=1)):e.before&&(t=a.indexOf(e.before)),-1!==t&&(r.splice(t,0,e),a.splice(t,0,e.key)))}var n=[];e.forEach(function(e){n.push(e.key)});var r=[],a=[];e.forEach(function(e){e.after||e.before||(r.push(e),a.push(e.key))}),e.forEach(function(e){"_end"===e.before&&(r.push(e),a.push(e.key))});for(var o=200;o>0&&n.length!==a.length;)o-=1,e.forEach(t);return r}}]),e}();n["default"]=o},{}],98:[function(e,t,n){"use strict";function r(e,t){return Math.floor(Math.random()*(t+1)+e)}function a(e,t){for(var n=new Array(r(e,t)),a=0;a<n.length;a++)n[a]=a;return n}Object.defineProperty(n,"__esModule",{value:!0}),n["int"]=r,n.range=a},{}],99:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){var t={component:e.component,childRoutes:[{path:e.root,onEnter:function(t,n){n(null,e.paths[0].path)}}].concat(e.paths.map(function(e){return{path:e.path,component:e.component}}))};i["default"].render(o["default"].createElement(u.Provider,{store:p["default"].getStore()},o["default"].createElement(l.Router,{routes:t,history:h})),m)};var a=e("react"),o=r(a),s=e("react-dom"),i=r(s),u=e("react-redux"),l=e("react-router"),c=e("history/lib/createBrowserHistory"),d=r(c),f=e("../services/store"),p=r(f),m=document.getElementById("page-mount"),h=new d["default"]},{"../services/store":91,"history/lib/createBrowserHistory":35,react:"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router"}],100:[function(e,t,n){"use strict";function r(){return function(e){return 0===$.trim(e).length?gettext("This field is required."):void 0}}function a(e){return function(t){return d.test(t)?void 0:e||gettext("Enter a valid email address.")}}function o(e,t){return function(n){var r="",a=$.trim(n).length;return e>a?(r=t?t(e,a):ngettext("Ensure this value has at least %(limit_value)s character (it has %(show_value)s).","Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).",e),interpolate(r,{limit_value:e,show_value:a},!0)):void 0}}function s(e,t){return function(n){var r="",a=$.trim(n).length;return a>e?(r=t?t(e,a):ngettext("Ensure this value has at most %(limit_value)s character (it has %(show_value)s).","Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).",e),interpolate(r,{limit_value:e,show_value:a},!0)):void 0}}function i(e){var t=function(e){return ngettext("Username must be at least %(limit_value)s character long.","Username must be at least %(limit_value)s characters long.",e)};return this.minLength(e.username_length_min,t)}function u(e){var t=function(e){return ngettext("Username cannot be longer than %(limit_value)s character.","Username cannot be longer than %(limit_value)s characters.",e)};return this.maxLength(e.username_length_max,t)}function l(){return function(e){return f.test($.trim(e))?void 0:gettext("Username can only contain latin alphabet letters and digits.")}}function c(e){var t=function(e){return ngettext("Valid password must be at least %(limit_value)s character long.","Valid password must be at least %(limit_value)s characters long.",e)};return this.minLength(e.password_length_min,t)}Object.defineProperty(n,"__esModule",{value:!0}),n.required=r,n.email=a,n.minLength=o,n.maxLength=s,n.usernameMinLength=i,n.usernameMaxLength=u,n.usernameContent=l,n.passwordMinLength=c;var d=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,f=new RegExp("^[0-9a-z]+$","i")},{}]},{},[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]);
 //# sourceMappingURL=misago.js.map
 //# sourceMappingURL=misago.js.map

+ 1 - 1
misago/static/misago/js/misago.js.map

@@ -1 +1 @@
-{"version":3,"sources":["misago.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","global","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","value","Misago","undefined","_orderedList","_orderedList2","this","_initializers","_context","initializer","push","name","item","after","before","context","_this","initOrder","orderedValues","forEach","hasOwnProperty","fallback","has","misago","self","window","../../../../documents/misago/frontend/src/utils/ordered-list",2,"_ajax2","init","_index2","get","_index","_ajax","addInitializer","../../../../../documents/misago/frontend/src/index","../../../../../documents/misago/frontend/src/services/ajax",3,"_mountComponent2","_reactRedux","connect","_authMessage","select","_authMessage2","_mountComponent","../../../../../documents/misago/frontend/src/components/auth-message","../../../../../documents/misago/frontend/src/utils/mount-component","react-redux",4,"_store2","addReducer","_auth2","assign","isAuthenticated","isAnonymous","user","_auth","initialState","_store","../../../../../documents/misago/frontend/src/reducers/auth","../../../../../documents/misago/frontend/src/services/store",5,"_localStorage2","_modal2","_modal","_localStorage","../../../../../documents/misago/frontend/src/services/auth","../../../../../documents/misago/frontend/src/services/local-storage","../../../../../documents/misago/frontend/src/services/modal",6,"_bannedPage2","_bannedPage","../../../../../documents/misago/frontend/src/utils/banned-page",7,"_captcha2","_include2","_snackbar2","_captcha","_include","_snackbar","../../../../../documents/misago/frontend/src/services/captcha","../../../../../documents/misago/frontend/src/services/include","../../../../../documents/misago/frontend/src/services/snackbar",8,9,10,"element","document","getElementById","_mobileNavbarDropdown2","_mobileNavbarDropdown","../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown",11,12,"_moment2","locale","$","attr","_moment","moment",13,"_requestActivationLink2","_requestActivationLink","../../../../../documents/misago/frontend/src/components/request-activation-link",14,"_requestPasswordReset2","_requestPasswordReset","../../../../../documents/misago/frontend/src/components/request-password-reset",15,"_resetPasswordForm2","_resetPasswordForm","../../../../../documents/misago/frontend/src/components/reset-password-form",16,"Snackbar","../../../../../documents/misago/frontend/src/components/snackbar",17,"../../../../../documents/misago/frontend/src/reducers/snackbar",18,19,20,"_tick2","_tick","../../../../../documents/misago/frontend/src/reducers/tick",21,"setInterval","dispatch","doTick","TICK_PERIOD",22,"_root","UserMenu","CompactUserMenu","../../../../../documents/misago/frontend/src/components/user-menu/root",23,"_zxcvbn2","_zxcvbn","../../../../../documents/misago/frontend/src/services/zxcvbn",24,"_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","state","auth","signedIn","signedOut","_react","_react2","_class","_React$Component","getPrototypeOf","apply","arguments","location","reload","interpolate","gettext","username","createElement","className","getClassName","getMessage","type","onClick","refresh","Component","react",25,"BASE_URL","size","url","id","avatar_hash","src","getSrc","title",26,"message","html","dangerouslySetInnerHTML","__html","plain","expires","isAfter","expires_on","fromNow","getReasonMessage","getExpirationMessage",27,"_loader","_loader2","Button","disabled","loading","children","defaultProps","./loader",28,"_avatar","_button","_button2","cropAvatar","isLoading","setState","avatarType","upload","cropit","post","avatar_api_url","avatar","crop","offset","zoom","then","data","onComplete","options","success","detail","rejection","status","error","showError","crop_tmp","crop_org","secret","getAvatarSecret","getAvatarHash","join","_this2","width","getAvatarSize","height","imageState","getImagePath","onImageLoaded","zoomLevel","imageSize","displayedWidth","offsetX","x","y","displayedHeight","offsetY","showIndex","../../services/ajax","../../services/snackbar","../avatar","../button",29,"Gallery","GalleryItem","_batch","_batch2","_Object$getPrototypeO","_temp","_ret","_len","args","Array","_key","concat","image","selection","_React$Component2","_this3","images","map","row","_React$Component3","_this4","save","response","_this5","galleries","../../index","../../utils/batch",30,"_avatar2","setGravatar","callApi","setGenerated","gravatar","showCrop","showUpload","showGallery","getAvatarPreview","getGravatarButton","getCropButton","getUploadButton","getGalleryButton","../loader",31,"ChangeAvatarError","_crop","_crop2","_upload","_upload2","_gallery","_gallery2","_modalLoader","_modalLoader2","_users","reason","getErrorReason","component","completeFlow","avatarHash","updateAvatar","role","data-dismiss","aria-label","aria-hidden","getBody","../../reducers/users","../../services/store","../modal-loader","./crop","./gallery","./index","./upload",32,"_fileSize","_fileSize2","pickFile","click","uploadFile","files","validationError","validateFile","preview","URL","createObjectURL","progress","FormData","append","uploaded","info","limit","filesize","invalidTypeMsg","allowed_mime_types","indexOf","extensionFound","loweredFilename","toLowerCase","allowed_extensions","extension","substr","extensions","getUploadRequirements","aria-valuenow","aria-valuemin","aria-valuemax","style","getUploadProgressLabel","onChange","getUploadProgress","renderCrop","renderUpload","../../utils/file-size",33,"validation","isValidated","helpText","labelClass","htmlFor","label","controlClass","getFeedbackIcon","getFeedbackDescription","getFeedback","getHelpText","extra",34,"_validators","validateRequired","required","bindInput","event","newState","formErrors","errors","validateField","handleSubmit","preventDefault","clean","promise","send","handleSuccess","handleError","validators","optional","validatedFields","fieldErrors","validate","field","requiredError","../utils/validators",35,36,37,"LABELS","STYLES","_score","_password","_inputs","password","inputs","cacheStale","trim","scorePassword","score","getScore","../services/zxcvbn",38,"_register","_register2","showRegisterModal","account_activation","isLoaded","show","Promise","all","load","../services/captcha","../services/modal","../services/snackbar","./register.js",39,"_interopRequireWildcard","newObj","RegisterComplete","RegisterForm","_form","_form2","_formGroup","_formGroup2","_passwordStrength","_passwordStrength2","_Form","email","captcha","usernameContent","usernameMinLength","usernameMaxLength","passwordMinLength","validator","isValid","apiResponse","callback","ban","hide","apiError","href","onSubmit","display","for","aria-describedby","form","getLegalFootNote","activation","getLead","getSubscript","completeRegistration","signIn","complete","../index","../services/ajax","../services/auth","../utils/banned-page","./button","./form","./form-group","./password-strength",40,"LinkSent","RequestLinkForm","placeholder","reset",41,"AccountInactivePage","RequestResetForm","_reactDom","_reactDom2","showInactivePage","getActivateButton","render","react-dom",42,"PasswordChangedPage","ResetPasswordForm","_signIn","_signIn2","showSignIn","softSignOut","remove","./sign-in.js",43,"showActivation","find","val","getCsrfToken","pathname","submit","getActivationButton",44,"snackbar","TYPES_CLASSES","warning","snackbarClass","isVisible","getSnackbarClass",45,"CompactGuestNav","GuestNav","GuestMenu","_registerButton","_registerButton2","showSignInModal","_GuestMenu","showGuestMenu","../../services/mobile-navbar-dropdown","../../services/modal","../register-button","../sign-in.js",46,"_guestNav","_userNav","UserNav","CompactUserNav","./guest-nav","./user-nav",47,"selectUserMenu","_root2","decision","confirm","absolute_url","changeAvatar","logout","data-toggle","aria-haspopup","aria-expanded","showConnected","showUserMenu","../change-avatar/root",48,"./utils/ordered-list",49,"SIGN_IN","signOut","soft","SIGN_OUT","action","UPDATE_AVATAR","userId","./users",50,"showSnackbar","SHOW_SNACKBAR","messageType","hideSnackbar","HIDE_SNACKBAR",51,"TICK","tick",52,53,"Ajax","_cookieName","_csrfToken","cookieName","cookie","cookieRegex","RegExp","match","split","method","resolve","reject","xhr","headers","X-CSRFToken","JSON","stringify","contentType","dataType","jqXHR","responseJSON","statusText","ajax","request","processData","XMLHttpRequest","addEventListener","evt","lengthComputable","Math","round","loaded","total",54,"Auth","store","local","modal","_local","syncSession","watchState","getState","set","watch","../reducers/auth",55,"Captcha","ReCaptcha","ReCaptchaComponent","QACaptcha","NoCaptcha","BaseCaptcha","include","_BaseCaptcha","_BaseCaptcha2","question","help_text","kwargs","grecaptcha","sitekey","siteKey","binding","_BaseCaptcha3","wait","setTimeout","recaptcha_site_key","captcha_type","../components/form-group",56,"Include","staticUrl","_staticUrl","_included","script","remote","cache",57,"storage","localStorage","LocalStorage","prefix","_prefix","_watchers","newValueJson","parse","newValue","watcher","oldValue","setItem","itemString","getItem",58,"MobileNavbarDropdown","_element","_component","addClass","removeClass","../utils/mount-component",59,"Modal","on","unmountComponentAtNode",60,"HIDE_ANIMATION_LENGTH","MESSAGE_SHOW_LENGTH","_timeout","clearTimeout","alert","../reducers/snackbar",61,"StoreWrapper","_redux","_reducers","_initialState","reducer","createStore","combineReducers","redux",62,"Zxcvbn","zxcvbn","_loadingPromise","_loadedPromise",63,"changeState","Provider","getStore","RedrawedBannedPage","forumName","forum_name","history","pushState","../components/banned-page","../services/store",64,"list","rowWidth","padding","rows",65,"bytes",66,"rootElementId","connected","rootElement",67,"OrderedList","items","isOrdered","_items","order","values","values_only","_order","unordered","insertItem","insertAt","ordering","ordered","splice","index","iterations",68,"EMAIL","test","minLength","limitValue","returnMessage","ngettext","limit_value","show_value","maxLength","settings","username_length_min","username_length_max","USERNAME","password_length_min"],"mappings":"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","file":"misago.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n(function (global){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Misago = undefined;\n\nvar _orderedList = require('../../../../documents/misago/frontend/src/utils/ordered-list');\n\nvar _orderedList2 = _interopRequireDefault(_orderedList);\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\nvar Misago = exports.Misago = function () {\n  function Misago() {\n    _classCallCheck(this, Misago);\n\n    this._initializers = [];\n    this._context = {};\n  }\n\n  _createClass(Misago, [{\n    key: 'addInitializer',\n    value: function addInitializer(initializer) {\n      this._initializers.push({\n        key: initializer.name,\n\n        item: initializer.initializer,\n\n        after: initializer.after,\n        before: initializer.before\n      });\n    }\n  }, {\n    key: 'init',\n    value: function init(context) {\n      var _this = this;\n\n      this._context = context;\n\n      var initOrder = new _orderedList2.default(this._initializers).orderedValues();\n      initOrder.forEach(function (initializer) {\n        initializer(_this);\n      });\n    }\n\n    // context accessors\n\n  }, {\n    key: 'has',\n    value: function has(key) {\n      return this._context.hasOwnProperty(key);\n    }\n  }, {\n    key: 'get',\n    value: function get(key, fallback) {\n      if (this.has(key)) {\n        return this._context[key];\n      } else {\n        return fallback || undefined;\n      }\n    }\n  }]);\n\n  return Misago;\n}();\n\n// create  singleton\n\nvar misago = new Misago();\n\n// expose it globally\nglobal.misago = misago;\n\n// and export it for tests and stuff\nexports.default = misago;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../../../../documents/misago/frontend/src/utils/ordered-list\":67}],2:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../../documents/misago/frontend/src/services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _ajax2.default.init(_index2.default.get('CSRF_COOKIE_NAME'));\n}\n\n_index2.default.addInitializer({\n  name: 'ajax',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/ajax\":53}],3:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _reactRedux = require('react-redux');\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _authMessage = require('../../../../../documents/misago/frontend/src/components/auth-message');\n\nvar _authMessage2 = _interopRequireDefault(_authMessage);\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  (0, _mountComponent2.default)((0, _reactRedux.connect)(_authMessage.select)(_authMessage2.default), 'auth-message-mount');\n}\n\n_index2.default.addInitializer({\n  name: 'component:auth-message',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/auth-message\":24,\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/utils/mount-component\":66,\"react-redux\":\"react-redux\"}],4:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../../../../../documents/misago/frontend/src/reducers/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  _store2.default.addReducer('auth', _auth2.default, Object.assign({\n    'isAuthenticated': context.get('isAuthenticated'),\n    'isAnonymous': !context.get('isAuthenticated'),\n\n    'user': context.get('user')\n  }, _auth.initialState));\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:auth',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/reducers/auth\":49,\"../../../../../documents/misago/frontend/src/services/store\":61}],5:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../../../../../documents/misago/frontend/src/services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _modal = require('../../../../../documents/misago/frontend/src/services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _localStorage = require('../../../../../documents/misago/frontend/src/services/local-storage');\n\nvar _localStorage2 = _interopRequireDefault(_localStorage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _auth2.default.init(_store2.default, _localStorage2.default, _modal2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'auth',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/auth\":54,\"../../../../../documents/misago/frontend/src/services/local-storage\":57,\"../../../../../documents/misago/frontend/src/services/modal\":59,\"../../../../../documents/misago/frontend/src/services/store\":61}],6:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bannedPage = require('../../../../../documents/misago/frontend/src/utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.get('BAN_MESSAGE')) {\n    (0, _bannedPage2.default)(context.get('BAN_MESSAGE'), false);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:baned-page',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/utils/banned-page\":63}],7:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../../documents/misago/frontend/src/services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _captcha = require('../../../../../documents/misago/frontend/src/services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _include = require('../../../../../documents/misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _snackbar = require('../../../../../documents/misago/frontend/src/services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  _captcha2.default.init(context, _ajax2.default, _include2.default, _snackbar2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'captcha',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/ajax\":53,\"../../../../../documents/misago/frontend/src/services/captcha\":55,\"../../../../../documents/misago/frontend/src/services/include\":56,\"../../../../../documents/misago/frontend/src/services/snackbar\":60}],8:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../../../../../documents/misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  _include2.default.init(context.get('STATIC_URL'));\n}\n\n_index2.default.addInitializer({\n  name: 'include',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/include\":56}],9:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _localStorage = require('../../../../../documents/misago/frontend/src/services/local-storage');\n\nvar _localStorage2 = _interopRequireDefault(_localStorage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _localStorage2.default.init('misago_');\n}\n\n_index2.default.addInitializer({\n  name: 'local-storage',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/local-storage\":57}],10:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown');\n\nvar _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  var element = document.getElementById('mobile-navbar-dropdown-mount');\n  if (element) {\n    _mobileNavbarDropdown2.default.init(element);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'dropdown',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown\":58}],11:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _modal = require('../../../../../documents/misago/frontend/src/services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  var element = document.getElementById('modal-mount');\n  if (element) {\n    _modal2.default.init(element);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'modal',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/modal\":59}],12:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _moment2.default.locale($('html').attr('lang'));\n}\n\n_index2.default.addInitializer({\n  name: 'moment',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"moment\":\"moment\"}],13:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestActivationLink = require('../../../../../documents/misago/frontend/src/components/request-activation-link');\n\nvar _requestActivationLink2 = _interopRequireDefault(_requestActivationLink);\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  if (document.getElementById('request-activation-link-mount')) {\n    (0, _mountComponent2.default)(_requestActivationLink2.default, 'request-activation-link-mount', false);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:request-activation-link',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/request-activation-link\":40,\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/utils/mount-component\":66}],14:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestPasswordReset = require('../../../../../documents/misago/frontend/src/components/request-password-reset');\n\nvar _requestPasswordReset2 = _interopRequireDefault(_requestPasswordReset);\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  if (document.getElementById('request-password-reset-mount')) {\n    (0, _mountComponent2.default)(_requestPasswordReset2.default, 'request-password-reset-mount', false);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:request-password-reset',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/request-password-reset\":41,\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/utils/mount-component\":66}],15:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _resetPasswordForm = require('../../../../../documents/misago/frontend/src/components/reset-password-form');\n\nvar _resetPasswordForm2 = _interopRequireDefault(_resetPasswordForm);\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  if (document.getElementById('reset-password-form-mount')) {\n    (0, _mountComponent2.default)(_resetPasswordForm2.default, 'reset-password-form-mount', false);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:reset-password-form',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/reset-password-form\":42,\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/utils/mount-component\":66}],16:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _reactRedux = require('react-redux');\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../documents/misago/frontend/src/components/snackbar');\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  (0, _mountComponent2.default)((0, _reactRedux.connect)(_snackbar.select)(_snackbar.Snackbar), 'snackbar-mount');\n}\n\n_index2.default.addInitializer({\n  name: 'component:snackbar',\n  initializer: initializer,\n  after: 'snackbar'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/snackbar\":44,\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/utils/mount-component\":66,\"react-redux\":\"react-redux\"}],17:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../documents/misago/frontend/src/reducers/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.addReducer('snackbar', _snackbar2.default, _snackbar.initialState);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:snackbar',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/reducers/snackbar\":50,\"../../../../../documents/misago/frontend/src/services/store\":61}],18:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../documents/misago/frontend/src/services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _snackbar2.default.init(_store2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'snackbar',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/snackbar\":60,\"../../../../../documents/misago/frontend/src/services/store\":61}],19:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.init();\n}\n\n_index2.default.addInitializer({\n  name: 'store',\n  initializer: initializer,\n  before: '_end'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/store\":61}],20:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../../../../../documents/misago/frontend/src/reducers/tick');\n\nvar _tick2 = _interopRequireDefault(_tick);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.addReducer('tick', _tick2.default, _tick.initialState);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:tick',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/reducers/tick\":51,\"../../../../../documents/misago/frontend/src/services/store\":61}],21:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../../../../../documents/misago/frontend/src/reducers/tick');\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TICK_PERIOD = 50 * 1000; //do the tick every 50s\n\nfunction initializer() {\n  window.setInterval(function () {\n    _store2.default.dispatch((0, _tick.doTick)());\n  }, TICK_PERIOD);\n}\n\n_index2.default.addInitializer({\n  name: 'tick-start',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/reducers/tick\":51,\"../../../../../documents/misago/frontend/src/services/store\":61}],22:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _reactRedux = require('react-redux');\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _root = require('../../../../../documents/misago/frontend/src/components/user-menu/root');\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  (0, _mountComponent2.default)((0, _reactRedux.connect)(_root.select)(_root.UserMenu), 'user-menu-mount');\n  (0, _mountComponent2.default)((0, _reactRedux.connect)(_root.select)(_root.CompactUserMenu), 'user-menu-compact-mount');\n}\n\n_index2.default.addInitializer({\n  name: 'component:user-menu',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/user-menu/root\":46,\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/utils/mount-component\":66,\"react-redux\":\"react-redux\"}],23:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../../../../../documents/misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _zxcvbn = require('../../../../../documents/misago/frontend/src/services/zxcvbn');\n\nvar _zxcvbn2 = _interopRequireDefault(_zxcvbn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _zxcvbn2.default.init(_include2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'zxcvbn',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":48,\"../../../../../documents/misago/frontend/src/services/include\":56,\"../../../../../documents/misago/frontend/src/services/zxcvbn\":62}],24:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.select = select;\n\nvar _react = require(\"react\");\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: \"refresh\",\n    value: function refresh() {\n      window.location.reload();\n    }\n  }, {\n    key: \"getMessage\",\n    value: function getMessage() {\n      if (this.props.signedIn) {\n        return interpolate(gettext(\"You have signed in as %(username)s. Please refresh the page before continuing.\"), { username: this.props.signedIn.username }, true);\n      } else if (this.props.signedOut) {\n        return interpolate(gettext(\"%(username)s, you have been signed out. Please refresh the page before continuing.\"), { username: this.props.user.username }, true);\n      }\n    }\n  }, {\n    key: \"getClassName\",\n    value: function getClassName() {\n      if (this.props.signedIn || this.props.signedOut) {\n        return \"auth-message show\";\n      } else {\n        return \"auth-message\";\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"div\",\n        { className: this.getClassName() },\n        _react2.default.createElement(\n          \"div\",\n          { className: \"container\" },\n          _react2.default.createElement(\n            \"p\",\n            { className: \"lead\" },\n            this.getMessage()\n          ),\n          _react2.default.createElement(\n            \"p\",\n            null,\n            _react2.default.createElement(\n              \"button\",\n              { type: \"button\", className: \"btn btn-default\",\n                onClick: this.refresh },\n              gettext(\"Reload page\")\n            ),\n            \" \",\n            _react2.default.createElement(\n              \"span\",\n              { className: \"hidden-xs hidden-sm text-muted\" },\n              gettext(\"or press F5 key.\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(state) {\n  return {\n    user: state.auth.user,\n    signedIn: state.auth.signedIn,\n    signedOut: state.auth.signedOut\n  };\n}\n\n},{\"react\":\"react\"}],25:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\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 BASE_URL = $('base').attr('href') + 'user-avatar/';\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'getSrc',\n    value: function getSrc() {\n      var size = this.props.size || 100; // jshint ignore:line\n      var url = BASE_URL;\n\n      if (this.props.user && this.props.user.id) {\n        // just avatar hash, size and user id\n        url += this.props.user.avatar_hash + '/' + size + '/' + this.props.user.id + '.png';\n      } else {\n        // just append avatar size to file to produce no-avatar placeholder\n        url += size + '.png';\n      }\n\n      return url;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement('img', { src: this.getSrc(),\n        className: this.props.className || 'user-avatar',\n        title: gettext(\"User avatar\") });\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],26:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = require('react');\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'getReasonMessage',\n    value: function getReasonMessage() {\n      /* jshint ignore:start */\n      if (this.props.message.html) {\n        return _react2.default.createElement('div', { className: 'lead',\n          dangerouslySetInnerHTML: { __html: this.props.message.html } });\n      } else {\n        return _react2.default.createElement(\n          'p',\n          { className: 'lead' },\n          this.props.message.plain\n        );\n      }\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getExpirationMessage',\n    value: function getExpirationMessage() {\n      if (this.props.expires) {\n        if (this.props.expires.isAfter((0, _moment2.default)())) {\n          return interpolate(gettext(\"This ban expires %(expires_on)s.\"), { 'expires_on': this.props.expires.fromNow() }, true);\n        } else {\n          return gettext(\"This ban has expired.\");\n        }\n      } else {\n        return gettext(\"This ban is permanent.\");\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-error page-error-banned' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-panel' },\n            _react2.default.createElement(\n              'div',\n              { className: 'message-icon' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                'highlight_off'\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'message-body' },\n              this.getReasonMessage(),\n              _react2.default.createElement(\n                'p',\n                { className: 'message-footnote' },\n                this.getExpirationMessage()\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"moment\":\"moment\",\"react\":\"react\"}],27:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _loader = require('./loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\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\n// jshint ignore:line\n\nvar Button = function (_React$Component) {\n  _inherits(Button, _React$Component);\n\n  function Button() {\n    _classCallCheck(this, Button);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Button).apply(this, arguments));\n  }\n\n  _createClass(Button, [{\n    key: 'render',\n    value: function render() {\n      var className = 'btn ' + this.props.className;\n      var disabled = this.props.disabled;\n\n      if (this.props.loading) {\n        className += ' btn-loading';\n        disabled = true;\n      }\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: this.props.onClick ? 'button' : 'submit',\n          className: className,\n          disabled: disabled,\n          onClick: this.props.onClick },\n        this.props.children,\n        this.props.loading ? _react2.default.createElement(_loader2.default, null) : null\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Button;\n}(_react2.default.Component);\n\nexports.default = Button;\n\nButton.defaultProps = {\n  className: \"btn-default\",\n\n  type: \"submit\",\n\n  loading: false,\n  disabled: false,\n\n  onClick: null\n};\n\n},{\"./loader\":35,\"react\":\"react\"}],28:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar BASE_URL = $('base').attr('href') + 'user-avatar';\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.cropAvatar = function () {\n      if (_this.state.isLoading) {\n        return false;\n      }\n\n      _this.setState({\n        'isLoading': true\n      });\n\n      var avatarType = _this.props.upload ? 'crop_tmp' : 'crop_org';\n      var cropit = $('.crop-form');\n\n      _ajax2.default.post(_this.props.user.avatar_api_url, {\n        'avatar': avatarType,\n        'crop': {\n          'offset': cropit.cropit('offset'),\n          'zoom': cropit.cropit('zoom')\n        }\n      }).then(function (data) {\n        _this.props.onComplete(data.avatar_hash, data.options);\n        _snackbar2.default.success(data.detail);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this.setState({\n            'isLoading': false\n          });\n        } else {\n          _this.props.showError(rejection);\n        }\n      });\n    };\n\n    _this.state = {\n      'isLoading': false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getAvatarSize',\n    value: function getAvatarSize() {\n      if (this.props.upload) {\n        return this.props.options.crop_tmp.size;\n      } else {\n        return this.props.options.crop_org.size;\n      }\n    }\n  }, {\n    key: 'getAvatarSecret',\n    value: function getAvatarSecret() {\n      if (this.props.upload) {\n        return this.props.options.crop_tmp.secret;\n      } else {\n        return this.props.options.crop_org.secret;\n      }\n    }\n  }, {\n    key: 'getAvatarHash',\n    value: function getAvatarHash() {\n      return this.props.upload || this.props.user.avatar_hash;\n    }\n  }, {\n    key: 'getImagePath',\n    value: function getImagePath() {\n      return [BASE_URL, this.getAvatarSecret() + ':' + this.getAvatarHash(), this.props.user.id + '.png'].join('/');\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      var cropit = $('.crop-form');\n      cropit.width(this.getAvatarSize());\n\n      cropit.cropit({\n        'width': this.getAvatarSize(),\n        'height': this.getAvatarSize(),\n        'imageState': {\n          'src': this.getImagePath()\n        },\n        onImageLoaded: function onImageLoaded() {\n          if (_this2.props.upload) {\n            // center uploaded image\n            var zoomLevel = cropit.cropit('zoom');\n            var imageSize = cropit.cropit('imageSize');\n\n            // is it wider than taller?\n            if (imageSize.width > imageSize.height) {\n              var displayedWidth = imageSize.width * zoomLevel;\n              var offsetX = (displayedWidth - _this2.getAvatarSize()) / -2;\n\n              cropit.cropit('offset', {\n                'x': offsetX,\n                'y': 0\n              });\n            } else if (imageSize.width < imageSize.height) {\n              var displayedHeight = imageSize.height * zoomLevel;\n              var offsetY = (displayedHeight - _this2.getAvatarSize()) / -2;\n\n              cropit.cropit('offset', {\n                'x': 0,\n                'y': offsetY\n              });\n            }\n          } else {\n            // use preserved crop\n            var crop = _this2.props.options.crop_org.crop;\n            if (crop) {\n              cropit.cropit('zoom', crop.zoom);\n              cropit.cropit('offset', {\n                'x': crop.x,\n                'y': crop.y\n              });\n            }\n          }\n        }\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      $('.crop-form').cropit('disable');\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body modal-avatar-crop' },\n          _react2.default.createElement(\n            'div',\n            { className: 'crop-form' },\n            _react2.default.createElement('div', { className: 'cropit-image-preview' }),\n            _react2.default.createElement('input', { type: 'range', className: 'cropit-image-zoom-input' })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-6 col-md-offset-3' },\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.cropAvatar,\n                loading: this.state.isLoading,\n                className: 'btn-primary btn-block' },\n              this.props.upload ? gettext(\"Set avatar\") : gettext(\"Crop image\")\n            ),\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.props.showIndex,\n                disabled: this.state.isLoading,\n                className: 'btn-default btn-block' },\n              gettext(\"Cancel\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":53,\"../../services/snackbar\":60,\"../avatar\":25,\"../button\":27,\"react\":\"react\"}],29:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Gallery = exports.GalleryItem = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _batch = require('../../utils/batch');\n\nvar _batch2 = _interopRequireDefault(_batch);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar GalleryItem = exports.GalleryItem = function (_React$Component) {\n  _inherits(GalleryItem, _React$Component);\n\n  function GalleryItem() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, GalleryItem);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(GalleryItem)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.select = function () {\n      _this.props.select(_this.props.image);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n  /* jshint ignore:start */\n\n  _createClass(GalleryItem, [{\n    key: 'getClassName',\n\n    /* jshint ignore:end */\n\n    value: function getClassName() {\n      if (this.props.selection === this.props.image) {\n        if (this.props.disabled) {\n          return 'btn btn-avatar btn-disabled avatar-selected';\n        } else {\n          return 'btn btn-avatar avatar-selected';\n        }\n      } else if (this.props.disabled) {\n        return 'btn btn-avatar btn-disabled';\n      } else {\n        return 'btn btn-avatar';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button',\n          className: this.getClassName(),\n          disabled: this.props.disabled,\n          onClick: this.select },\n        _react2.default.createElement('img', { src: _index2.default.get('MEDIA_URL') + this.props.image })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return GalleryItem;\n}(_react2.default.Component);\n\nvar Gallery = exports.Gallery = function (_React$Component2) {\n  _inherits(Gallery, _React$Component2);\n\n  function Gallery() {\n    _classCallCheck(this, Gallery);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Gallery).apply(this, arguments));\n  }\n\n  _createClass(Gallery, [{\n    key: 'render',\n    value: function render() {\n      var _this3 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'avatars-gallery' },\n        _react2.default.createElement(\n          'h3',\n          null,\n          this.props.name\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'avatars-gallery-images' },\n          (0, _batch2.default)(this.props.images, 4, null).map(function (row, i) {\n            return _react2.default.createElement(\n              'div',\n              { className: 'row', key: i },\n              row.map(function (item, i) {\n                return _react2.default.createElement(\n                  'div',\n                  { className: 'col-xs-3', key: i },\n                  item ? _react2.default.createElement(GalleryItem, { image: item,\n                    disabled: _this3.props.disabled,\n                    select: _this3.props.select,\n                    selection: _this3.props.selection }) : _react2.default.createElement('div', { className: 'blank-avatar' })\n                );\n              })\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Gallery;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component3) {\n  _inherits(_class, _React$Component3);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this4 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this4.select = function (image) {\n      _this4.setState({\n        selection: image\n      });\n    };\n\n    _this4.save = function () {\n      if (_this4.state.isLoading) {\n        return false;\n      }\n\n      _this4.setState({\n        'isLoading': true\n      });\n\n      _ajax2.default.post(_this4.props.user.avatar_api_url, {\n        avatar: 'galleries',\n        image: _this4.state.selection\n      }).then(function (response) {\n        _this4.setState({\n          'isLoading': false\n        });\n\n        _snackbar2.default.success(response.detail);\n        _this4.props.onComplete(response.avatar_hash, response.options);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this4.setState({\n            'isLoading': false\n          });\n        } else {\n          _this4.props.showError(rejection);\n        }\n      });\n    };\n\n    _this4.state = {\n      'selection': null,\n      'isLoading': false\n    };\n    return _this4;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      var _this5 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body modal-avatar-gallery' },\n          this.props.options.galleries.map(function (item, i) {\n            return _react2.default.createElement(Gallery, { name: item.name,\n              images: item.images,\n              selection: _this5.state.selection,\n              disabled: _this5.state.isLoading,\n              select: _this5.select,\n              key: i });\n          })\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-6 col-md-offset-3' },\n              _react2.default.createElement(\n                _button2.default,\n                { onClick: this.save,\n                  loading: this.state.isLoading,\n                  disabled: !this.state.selection,\n                  className: 'btn-primary btn-block' },\n                this.state.selection ? gettext(\"Save choice\") : gettext(\"Select avatar\")\n              ),\n              _react2.default.createElement(\n                _button2.default,\n                { onClick: this.props.showIndex,\n                  disabled: this.state.isLoading,\n                  className: 'btn-default btn-block' },\n                gettext(\"Cancel\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":48,\"../../services/ajax\":53,\"../../services/snackbar\":60,\"../../utils/batch\":64,\"../button\":27,\"react\":\"react\"}],30:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _loader = require('../loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.setGravatar = function () {\n      _this.callApi('gravatar');\n    };\n\n    _this.setGenerated = function () {\n      _this.callApi('generated');\n    };\n\n    _this.state = {\n      'isLoading': false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'callApi',\n    value: function callApi(avatarType) {\n      var _this2 = this;\n\n      if (this.state.isLoading) {\n        return false;\n      }\n\n      this.setState({\n        'isLoading': true\n      });\n\n      _ajax2.default.post(this.props.user.avatar_api_url, {\n        avatar: avatarType\n      }).then(function (response) {\n        _this2.setState({\n          'isLoading': false\n        });\n\n        _snackbar2.default.success(response.detail);\n        _this2.props.onComplete(response.avatar_hash, response.options);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this2.setState({\n            'isLoading': false\n          });\n        } else {\n          _this2.props.showError(rejection);\n        }\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getGravatarButton',\n\n    /* jshint ignore:end */\n\n    value: function getGravatarButton() {\n      if (this.props.options.gravatar) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.setGravatar,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-gravatar' },\n          gettext(\"Download my Gravatar\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getCropButton',\n    value: function getCropButton() {\n      if (this.props.options.crop_org) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showCrop,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-crop' },\n          gettext(\"Re-crop uploaded image\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getUploadButton',\n    value: function getUploadButton() {\n      if (this.props.options.upload) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showUpload,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-upload' },\n          gettext(\"Upload new image\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getGalleryButton',\n    value: function getGalleryButton() {\n      if (this.props.options.galleries) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showGallery,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-gallery' },\n          gettext(\"Pick avatar from gallery\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getAvatarPreview',\n    value: function getAvatarPreview() {\n      if (this.state.isLoading) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'avatar-preview preview-loading' },\n          _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '200' }),\n          _react2.default.createElement(_loader2.default, null)\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'div',\n            { className: 'avatar-preview' },\n            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '200' })\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-index' },\n        _react2.default.createElement(\n          'div',\n          { className: 'row' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-5' },\n            this.getAvatarPreview()\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-7' },\n            this.getGravatarButton(),\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.setGenerated,\n                disabled: this.state.isLoading,\n                className: 'btn-default btn-block btn-avatar-generate' },\n              gettext(\"Generate my individual avatar\")\n            ),\n            this.getCropButton(),\n            this.getUploadButton(),\n            this.getGalleryButton()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":53,\"../../services/snackbar\":60,\"../avatar\":25,\"../button\":27,\"../loader\":35,\"react\":\"react\"}],31:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ChangeAvatarError = undefined;\nexports.select = select;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _crop = require('./crop');\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _upload = require('./upload');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _gallery = require('./gallery');\n\nvar _gallery2 = _interopRequireDefault(_gallery);\n\nvar _modalLoader = require('../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _users = require('../../reducers/users');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar ChangeAvatarError = exports.ChangeAvatarError = function (_React$Component) {\n  _inherits(ChangeAvatarError, _React$Component);\n\n  function ChangeAvatarError() {\n    _classCallCheck(this, ChangeAvatarError);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(ChangeAvatarError).apply(this, arguments));\n  }\n\n  _createClass(ChangeAvatarError, [{\n    key: 'getErrorReason',\n    value: function getErrorReason() {\n      if (this.props.reason) {\n        /* jshint ignore:start */\n        return _react2.default.createElement('p', { dangerouslySetInnerHTML: { __html: this.props.reason } });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body' },\n        _react2.default.createElement(\n          'div',\n          { className: 'message-icon' },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            'remove_circle_outline'\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'message-body' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.props.message\n          ),\n          this.getErrorReason()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return ChangeAvatarError;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this2, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this2), _this2.showError = function (error) {\n      _this2.setState({\n        error: error\n      });\n    }, _this2.showIndex = function () {\n      _this2.setState({\n        'component': _index2.default\n      });\n    }, _this2.showUpload = function () {\n      _this2.setState({\n        'component': _upload2.default\n      });\n    }, _this2.showCrop = function () {\n      _this2.setState({\n        'component': _crop2.default\n      });\n    }, _this2.showGallery = function () {\n      _this2.setState({\n        'component': _gallery2.default\n      });\n    }, _this2.completeFlow = function (avatarHash, options) {\n      _store2.default.dispatch((0, _users.updateAvatar)(_this2.props.user, avatarHash));\n\n      _this2.setState({\n        'component': _index2.default,\n        options: options\n      });\n    }, _temp), _possibleConstructorReturn(_this2, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this3 = this;\n\n      _ajax2.default.get(this.props.user.avatar_api_url).then(function (options) {\n        _this3.setState({\n          'component': _index2.default,\n          'options': options,\n          'error': null\n        });\n      }, function (rejection) {\n        _this3.showError(rejection);\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getBody',\n\n    /* jshint ignore:end */\n\n    value: function getBody() {\n      if (this.state) {\n        if (this.state.error) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(ChangeAvatarError, { message: this.state.error.detail,\n            reason: this.state.error.reason });\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(this.state.component, { options: this.state.options,\n              user: this.props.user,\n              onComplete: this.completeFlow,\n              showError: this.showError,\n              showIndex: this.showIndex,\n              showCrop: this.showCrop,\n              showUpload: this.showUpload,\n              showGallery: this.showGallery });\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_modalLoader2.default, null);\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.state && this.state.error) {\n        return \"modal-dialog modal-message modal-change-avatar\";\n      } else {\n        return \"modal-dialog modal-change-avatar\";\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getClassName(),\n          role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Change your avatar\")\n            )\n          ),\n          this.getBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(state) {\n  return {\n    'user': state.auth.user\n  };\n}\n\n},{\"../../reducers/users\":52,\"../../services/ajax\":53,\"../../services/store\":61,\"../modal-loader\":36,\"./crop\":28,\"./gallery\":29,\"./index\":30,\"./upload\":32,\"react\":\"react\"}],32:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _crop = require('./crop');\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _fileSize = require('../../utils/file-size');\n\nvar _fileSize2 = _interopRequireDefault(_fileSize);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.pickFile = function () {\n      document.getElementById('avatar-hidden-upload').click();\n    };\n\n    _this.uploadFile = function () {\n      var image = document.getElementById('avatar-hidden-upload').files[0];\n\n      var validationError = _this.validateFile(image);\n      if (validationError) {\n        _snackbar2.default.error(validationError);\n        return;\n      }\n\n      _this.setState({\n        image: image,\n        'preview': URL.createObjectURL(image),\n        'progress': 0\n      });\n\n      var data = new FormData();\n      data.append('avatar', 'upload');\n      data.append('image', image);\n\n      _ajax2.default.upload(_this.props.user.avatar_api_url, data, function (progress) {\n        _this.setState({\n          progress: progress\n        });\n      }).then(function (data) {\n        _this.setState({\n          'options': data.options,\n          'uploaded': data.detail\n        });\n        _snackbar2.default.info(gettext(\"Your image has been uploaded and you may now crop it.\"));\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this.setState({\n            'isLoading': false,\n            'image': null,\n            'progress': 0\n          });\n        } else {\n          _this.props.showError(rejection);\n        }\n      });\n    };\n\n    _this.state = {\n      'image': null,\n      'preview': null,\n      'progress': 0,\n      'uploaded': null\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'validateFile',\n    value: function validateFile(image) {\n      if (image.size > this.props.options.upload.limit) {\n        return interpolate(gettext(\"Selected file is too big. (%(filesize)s)\"), {\n          'filesize': (0, _fileSize2.default)(image.size)\n        }, true);\n      }\n\n      var invalidTypeMsg = gettext(\"Selected file type is not supported.\");\n      if (this.props.options.upload.allowed_mime_types.indexOf(image.type) === -1) {\n        return invalidTypeMsg;\n      }\n\n      var extensionFound = false;\n      var loweredFilename = image.name.toLowerCase();\n      this.props.options.upload.allowed_extensions.map(function (extension) {\n        if (loweredFilename.substr(extension.length * -1) === extension) {\n          extensionFound = true;\n        }\n      });\n\n      if (!extensionFound) {\n        return invalidTypeMsg;\n      }\n\n      return false;\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getUploadRequirements',\n\n    /* jshint ignore:end */\n\n    value: function getUploadRequirements(options) {\n      var extensions = options.allowed_extensions.map(function (extension) {\n        return extension.substr(1);\n      });\n\n      return interpolate(gettext(\"%(files)s files smaller than %(limit)s\"), {\n        'files': extensions.join(', '),\n        'limit': (0, _fileSize2.default)(options.limit)\n      }, true);\n    }\n  }, {\n    key: 'getUploadButton',\n    value: function getUploadButton() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-upload' },\n        _react2.default.createElement(\n          _button2.default,\n          { className: 'btn-pick-file',\n            onClick: this.pickFile },\n          _react2.default.createElement(\n            'div',\n            { className: 'material-icon' },\n            'input'\n          ),\n          gettext(\"Select file\")\n        ),\n        _react2.default.createElement(\n          'p',\n          { className: 'text-muted' },\n          this.getUploadRequirements(this.props.options.upload)\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getUploadProgressLabel',\n    value: function getUploadProgressLabel() {\n      return interpolate(gettext(\"%(progress)s % complete\"), {\n        'progress': this.state.progress\n      }, true);\n    }\n  }, {\n    key: 'getUploadProgress',\n    value: function getUploadProgress() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-upload' },\n        _react2.default.createElement(\n          'div',\n          { className: 'upload-progress' },\n          _react2.default.createElement('img', { src: this.state.preview }),\n          _react2.default.createElement(\n            'div',\n            { className: 'progress' },\n            _react2.default.createElement(\n              'div',\n              { className: 'progress-bar', role: 'progressbar',\n                'aria-valuenow': '{this.state.progress}',\n                'aria-valuemin': '0', 'aria-valuemax': '100',\n                style: { width: this.state.progress + '%' } },\n              _react2.default.createElement(\n                'span',\n                { className: 'sr-only' },\n                this.getUploadProgressLabel()\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderUpload',\n    value: function renderUpload() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement('input', { type: 'file',\n          id: 'avatar-hidden-upload',\n          className: 'hidden-file-upload',\n          onChange: this.uploadFile }),\n        this.state.image ? this.getUploadProgress() : this.getUploadButton(),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-6 col-md-offset-3' },\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.props.showIndex,\n                disabled: !!this.state.image,\n                className: 'btn-default btn-block' },\n              gettext(\"Cancel\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderCrop',\n    value: function renderCrop() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(_crop2.default, { options: this.state.options,\n        user: this.props.user,\n        upload: this.state.uploaded,\n        onComplete: this.props.onComplete,\n        showError: this.props.showError,\n        showIndex: this.props.showIndex });\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return this.state.uploaded ? this.renderCrop() : this.renderUpload();\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":53,\"../../services/snackbar\":60,\"../../utils/file-size\":65,\"../button\":27,\"./crop\":28,\"react\":\"react\"}],33:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'isValidated',\n    value: function isValidated() {\n      return typeof this.props.validation !== \"undefined\";\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      var className = 'form-group';\n      if (this.isValidated()) {\n        className += ' has-feedback';\n        if (this.props.validation === null) {\n          className += ' has-success';\n        } else {\n          className += ' has-error';\n        }\n      }\n      return className;\n    }\n  }, {\n    key: 'getFeedback',\n    value: function getFeedback() {\n      var _this2 = this;\n\n      if (this.props.validation) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'help-block errors' },\n          this.props.validation.map(function (error, i) {\n            return _react2.default.createElement(\n              'p',\n              { key: _this2.props.for + 'FeedbackItem' + i },\n              error\n            );\n          })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFeedbackIcon',\n    value: function getFeedbackIcon() {\n      if (this.isValidated()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'material-icon form-control-feedback',\n            'aria-hidden': 'true', key: this.props.for + 'FeedbackIcon' },\n          this.props.validation ? 'clear' : 'check'\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFeedbackDescription',\n    value: function getFeedbackDescription() {\n      if (this.isValidated()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { id: this.props.for + '_status', className: 'sr-only' },\n          this.props.validation ? gettext('(error)') : gettext('(success)')\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getHelpText',\n    value: function getHelpText() {\n      if (this.props.helpText) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'p',\n          { className: 'help-block' },\n          this.props.helpText\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getClassName() },\n        _react2.default.createElement(\n          'label',\n          { className: 'control-label ' + (this.props.labelClass || ''),\n            htmlFor: this.props.for || '' },\n          this.props.label + ':'\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.props.controlClass || '' },\n          this.props.children,\n          this.getFeedbackIcon(),\n          this.getFeedbackDescription(),\n          this.getFeedback(),\n          this.getHelpText(),\n          this.props.extra || null\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],34:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _validators = require('../utils/validators');\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 validateRequired = (0, _validators.required)();\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.bindInput = function (name) {\n      return function (event) {\n        var newState = {};\n        newState[name] = event.target.value;\n\n        var formErrors = _this.state.errors || {};\n        formErrors[name] = _this.validateField(name, newState[name]);\n        newState.errors = formErrors;\n\n        _this.setState(newState);\n      };\n    }, _this.handleSubmit = function (event) {\n      // we don't reload page on submissions\n      event.preventDefault();\n      if (_this.state.isLoading) {\n        return;\n      }\n\n      if (_this.clean()) {\n        _this.setState({ 'isLoading': true });\n        var promise = _this.send();\n\n        if (promise) {\n          promise.then(function (success) {\n            _this.setState({ 'isLoading': false });\n            _this.handleSuccess(success);\n          }, function (rejection) {\n            _this.setState({ 'isLoading': false });\n            _this.handleError(rejection);\n          });\n        } else {\n          _this.setState({ 'isLoading': false });\n        }\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'validate',\n    value: function validate() {\n      var errors = {};\n\n      var validators = {\n        required: this.state.validators.required || this.state.validators,\n        optional: this.state.validators.optional || {}\n      };\n\n      var validatedFields = [];\n\n      // add required fields to validation\n      for (var name in validators.required) {\n        if (validators.required.hasOwnProperty(name) && validators.required[name]) {\n          validatedFields.push(name);\n        }\n      }\n\n      // add optional fields to validation\n      for (var name in validators.optional) {\n        if (validators.optional.hasOwnProperty(name) && validators.optional[name]) {\n          validatedFields.push(name);\n        }\n      }\n\n      // validate fields values\n      for (var i in validatedFields) {\n        var name = validatedFields[i];\n        var fieldErrors = this.validateField(name, this.state[name]);\n\n        if (fieldErrors === null) {\n          errors[name] = null;\n        } else if (fieldErrors) {\n          errors[name] = fieldErrors;\n        }\n      }\n\n      return errors;\n    }\n  }, {\n    key: 'isValid',\n    value: function isValid() {\n      var errors = this.validate();\n      for (var field in errors) {\n        if (errors.hasOwnProperty(field)) {\n          if (errors[field] !== null) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    }\n  }, {\n    key: 'validateField',\n    value: function validateField(name, value) {\n      var errors = [];\n\n      var validators = {\n        required: (this.state.validators.required || this.state.validators)[name],\n        optional: (this.state.validators.optional || {})[name]\n      };\n\n      var requiredError = validateRequired(value) || false;\n\n      if (validators.required) {\n        if (requiredError) {\n          errors = [requiredError];\n        } else {\n          for (var i in validators.required) {\n            var validationError = validators.required[i](value);\n            if (validationError) {\n              errors.push(validationError);\n            }\n          }\n        }\n\n        return errors.length ? errors : null;\n      } else if (requiredError === false && validators.optional) {\n        for (var i in validators.optional) {\n          var validationError = validators.optional[i](value);\n          if (validationError) {\n            errors.push(validationError);\n          }\n        }\n\n        return errors.length ? errors : null;\n      }\n\n      return false; // false === field wasn't validated\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'clean',\n    value: function clean() {\n      return true;\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return null;\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(success) {\n      return;\n    }\n  }, {\n    key: 'handleError',\n\n    /* jshint ignore:end */\n    value: function handleError(rejection) {\n      return;\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../utils/validators\":68,\"react\":\"react\"}],35:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: \"render\",\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"div\",\n        { className: \"loader\" },\n        _react2.default.createElement(\"div\", { className: \"loader-spinning-wheel\" })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],36:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _loader = require('./loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\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\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-loader' },\n        _react2.default.createElement(_loader2.default, null)\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"./loader\":35,\"react\":\"react\"}],37:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.LABELS = exports.STYLES = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _zxcvbn = require('../services/zxcvbn');\n\nvar _zxcvbn2 = _interopRequireDefault(_zxcvbn);\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 STYLES = exports.STYLES = ['progress-bar-danger', 'progress-bar-warning', 'progress-bar-warning', 'progress-bar-primary', 'progress-bar-success'];\n\nvar LABELS = exports.LABELS = [gettext(\"Entered password is very weak.\"), gettext(\"Entered password is weak.\"), gettext(\"Entered password is average.\"), gettext(\"Entered password is strong.\"), gettext(\"Entered password is very strong.\")];\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this._score = 0;\n    _this._password = null;\n    _this._inputs = [];\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getScore',\n    value: function getScore(password, inputs) {\n      var _this2 = this;\n\n      var cacheStale = false;\n\n      if (password.trim() !== this._password) {\n        cacheStale = true;\n      }\n\n      if (inputs.length !== this._inputs.length) {\n        cacheStale = true;\n      } else {\n        inputs.map(function (value, i) {\n          if (value.trim() !== _this2._inputs[i]) {\n            cacheStale = true;\n          }\n        });\n      }\n\n      if (cacheStale) {\n        this._score = _zxcvbn2.default.scorePassword(password, inputs);\n        this._password = password.trim();\n        this._inputs = inputs.map(function (value) {\n          return value.trim();\n        });\n      }\n\n      return this._score;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      var score = this.getScore(this.props.password, this.props.inputs);\n\n      return _react2.default.createElement(\n        'div',\n        { className: 'help-block password-strength' },\n        _react2.default.createElement(\n          'div',\n          { className: 'progress' },\n          _react2.default.createElement(\n            'div',\n            { className: \"progress-bar \" + STYLES[score],\n              style: { width: 20 + 20 * score + '%' },\n              role: 'progress-bar',\n              'aria-valuenow': score,\n              'aria-valuemin': '0',\n              'aria-valuemax': '4' },\n            _react2.default.createElement(\n              'span',\n              { className: 'sr-only' },\n              LABELS[score]\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'p',\n          { className: 'text-small' },\n          LABELS[score]\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../services/zxcvbn\":62,\"react\":\"react\"}],38:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _loader = require('./loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _register = require('./register.js');\n\nvar _register2 = _interopRequireDefault(_register);\n\nvar _captcha = require('../services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _modal = require('../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _zxcvbn = require('../services/zxcvbn');\n\nvar _zxcvbn2 = _interopRequireDefault(_zxcvbn);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.showRegisterModal = function () {\n      if (misago.get('SETTINGS').account_activation === 'closed') {\n        _snackbar2.default.info(gettext(\"New registrations are currently disabled.\"));\n      } else if (_this.state.isLoaded) {\n        _modal2.default.show(_register2.default);\n      } else {\n        _this.setState({\n          'isLoading': true\n        });\n\n        Promise.all([_captcha2.default.load(), _zxcvbn2.default.load()]).then(function () {\n          if (!_this.state.isLoaded) {\n            _this.setState({\n              'isLoading': false,\n              'isLoaded': false\n            });\n          }\n\n          _modal2.default.show(_register2.default);\n        });\n      }\n    };\n\n    _this.state = {\n      'isLoading': false,\n      'isLoaded': false\n    };\n    return _this;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'getClassName',\n\n    /* jshint ignore:end */\n\n    value: function getClassName() {\n      return this.props.className + (this.state.isLoading ? ' btn-loading' : '');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button', onClick: this.showRegisterModal,\n          className: 'btn ' + this.getClassName(),\n          disabled: this.state.isLoaded },\n        gettext(\"Register\"),\n        this.state.isLoading ? _react2.default.createElement(_loader2.default, null) : null\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../services/captcha\":55,\"../services/modal\":59,\"../services/snackbar\":60,\"../services/zxcvbn\":62,\"./loader\":35,\"./register.js\":39,\"react\":\"react\"}],39:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.RegisterComplete = exports.RegisterForm = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('./form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _passwordStrength = require('./password-strength');\n\nvar _passwordStrength2 = _interopRequireDefault(_passwordStrength);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _auth = require('../services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _captcha = require('../services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _modal = require('../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\n\nvar _validators = require('../utils/validators');\n\nvar validators = _interopRequireWildcard(_validators);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar RegisterForm = exports.RegisterForm = function (_Form) {\n  _inherits(RegisterForm, _Form);\n\n  function RegisterForm(props) {\n    _classCallCheck(this, RegisterForm);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RegisterForm).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'username': '',\n      'email': '',\n      'password': '',\n      'captcha': '',\n\n      'validators': {\n        'username': [validators.usernameContent(), validators.usernameMinLength(_index2.default.get('SETTINGS')), validators.usernameMaxLength(_index2.default.get('SETTINGS'))],\n        'email': [validators.email()],\n        'password': [validators.passwordMinLength(_index2.default.get('SETTINGS'))],\n        'captcha': _captcha2.default.validator()\n      },\n\n      'errors': {}\n    };\n    return _this;\n  }\n\n  _createClass(RegisterForm, [{\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(gettext(\"Form contains errors.\"));\n        this.setState({\n          'errors': this.validate()\n        });\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('USERS_API'), {\n        'username': this.state.username,\n        'email': this.state.email,\n        'password': this.state.password,\n        'captcha': this.state.captcha\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.props.callback(apiResponse);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        this.setState({\n          'errors': Object.assign({}, this.state.errors, rejection)\n        });\n        _snackbar2.default.error(gettext(\"Form contains errors.\"));\n      } else if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n        _modal2.default.hide();\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'getLegalFootNote',\n    value: function getLegalFootNote() {\n      if (_index2.default.get('TERMS_OF_SERVICE_URL')) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: _index2.default.get('TERMS_OF_SERVICE_URL'),\n            target: '_blank' },\n          gettext(\"By registering you agree to site's terms and conditions.\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-dialog modal-register', role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Register\")\n            )\n          ),\n          _react2.default.createElement(\n            'form',\n            { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n            _react2.default.createElement('input', { type: 'type', style: { display: 'none' } }),\n            _react2.default.createElement('input', { type: 'password', style: { display: 'none' } }),\n            _react2.default.createElement(\n              'div',\n              { className: 'modal-body' },\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Username\"), 'for': 'id_username',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n                  validation: this.state.errors.username },\n                _react2.default.createElement('input', { type: 'text', id: 'id_username', className: 'form-control',\n                  'aria-describedby': 'id_username_status',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('username'),\n                  value: this.state.username })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"E-mail\"), 'for': 'id_email',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n                  validation: this.state.errors.email },\n                _react2.default.createElement('input', { type: 'text', id: 'id_email', className: 'form-control',\n                  'aria-describedby': 'id_email_status',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('email'),\n                  value: this.state.email })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Password\"), 'for': 'id_password',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n                  validation: this.state.errors.password,\n                  extra: _react2.default.createElement(_passwordStrength2.default, { password: this.state.password,\n                    inputs: [this.state.username, this.state.email] }) },\n                _react2.default.createElement('input', { type: 'password', id: 'id_password', className: 'form-control',\n                  'aria-describedby': 'id_password_status',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('password'),\n                  value: this.state.password })\n              ),\n              _captcha2.default.component({\n                form: this,\n                labelClass: \"col-sm-4\",\n                controlClass: \"col-sm-8\"\n              })\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'modal-footer' },\n              this.getLegalFootNote(),\n              _react2.default.createElement(\n                _button2.default,\n                { className: 'btn-primary', loading: this.state.isLoading },\n                gettext(\"Register account\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return RegisterForm;\n}(_form2.default);\n\nvar RegisterComplete = exports.RegisterComplete = function (_React$Component) {\n  _inherits(RegisterComplete, _React$Component);\n\n  function RegisterComplete() {\n    _classCallCheck(this, RegisterComplete);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(RegisterComplete).apply(this, arguments));\n  }\n\n  _createClass(RegisterComplete, [{\n    key: 'getLead',\n    value: function getLead() {\n      if (this.props.activation === 'user') {\n        return gettext(\"%(username)s, your account has been created but you need to activate it before you will be able to sign in.\");\n      } else if (this.props.activation === 'admin') {\n        return gettext(\"%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in.\");\n      }\n    }\n  }, {\n    key: 'getSubscript',\n    value: function getSubscript() {\n      if (this.props.activation === 'user') {\n        return gettext(\"We have sent an e-mail to %(email)s with link that you have to click to activate your account.\");\n      } else if (this.props.activation === 'admin') {\n        return gettext(\"We will send an e-mail to %(email)s when this takes place.\");\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-dialog modal-message modal-register',\n          role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Registration complete\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-body' },\n            _react2.default.createElement(\n              'div',\n              { className: 'message-icon' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                'info_outline'\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'message-body' },\n              _react2.default.createElement(\n                'p',\n                { className: 'lead' },\n                interpolate(this.getLead(), { 'username': this.props.username }, true)\n              ),\n              _react2.default.createElement(\n                'p',\n                null,\n                interpolate(this.getSubscript(), { 'email': this.props.email }, true)\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return RegisterComplete;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this3.completeRegistration = function (apiResponse) {\n      if (apiResponse.activation === 'active') {\n        _modal2.default.hide();\n        _auth2.default.signIn(apiResponse);\n      } else {\n        _this3.setState({\n          'complete': apiResponse\n        });\n      }\n    };\n\n    _this3.state = {\n      'complete': false\n    };\n    return _this3;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.state.complete) {\n        return _react2.default.createElement(RegisterComplete, { activation: this.state.complete.activation,\n          username: this.state.complete.username,\n          email: this.state.complete.email });\n      } else {\n        return _react2.default.createElement(RegisterForm, { callback: this.completeRegistration });\n      }\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../index\":48,\"../services/ajax\":53,\"../services/auth\":54,\"../services/captcha\":55,\"../services/modal\":59,\"../services/snackbar\":60,\"../utils/banned-page\":63,\"../utils/validators\":68,\"./button\":27,\"./form\":34,\"./form-group\":33,\"./password-strength\":37,\"react\":\"react\"}],40:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.LinkSent = exports.RequestLinkForm = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _validators = require('../utils/validators');\n\nvar validators = _interopRequireWildcard(_validators);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\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; } // jshint ignore:line\n// jshint ignore:line\n\nvar RequestLinkForm = exports.RequestLinkForm = function (_Form) {\n  _inherits(RequestLinkForm, _Form);\n\n  function RequestLinkForm(props) {\n    _classCallCheck(this, RequestLinkForm);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RequestLinkForm).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'email': '',\n\n      'validators': {\n        'email': [validators.email()]\n      }\n    };\n    return _this;\n  }\n\n  _createClass(RequestLinkForm, [{\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(gettext(\"Enter a valid email address.\"));\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('SEND_ACTIVATION_API'), {\n        'email': this.state.email\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.props.callback(apiResponse);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (['already_active', 'inactive_admin'].indexOf(rejection.code) > -1) {\n        _snackbar2.default.info(rejection.detail);\n      } else if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-request-activation-link' },\n        _react2.default.createElement(\n          'form',\n          { onSubmit: this.handleSubmit },\n          _react2.default.createElement(\n            'div',\n            { className: 'form-group' },\n            _react2.default.createElement(\n              'div',\n              { className: 'control-input' },\n              _react2.default.createElement('input', { type: 'text', className: 'form-control',\n                placeholder: gettext(\"Your e-mail address\"),\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('email'),\n                value: this.state.email })\n            )\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary btn-block',\n              loading: this.state.isLoading },\n            gettext(\"Send link\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return RequestLinkForm;\n}(_form2.default);\n\nvar LinkSent = exports.LinkSent = function (_React$Component) {\n  _inherits(LinkSent, _React$Component);\n\n  function LinkSent() {\n    _classCallCheck(this, LinkSent);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(LinkSent).apply(this, arguments));\n  }\n\n  _createClass(LinkSent, [{\n    key: 'getMessage',\n    value: function getMessage() {\n      return interpolate(gettext(\"Activation link was sent to %(email)s\"), {\n        email: this.props.user.email\n      }, true);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-request-activation-link well-done' },\n        _react2.default.createElement(\n          'div',\n          { className: 'done-message' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-icon' },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'check'\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'message-body' },\n            _react2.default.createElement(\n              'p',\n              null,\n              this.getMessage()\n            )\n          ),\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-primary btn-block',\n              onClick: this.props.callback },\n            gettext(\"Request another link\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return LinkSent;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this3.complete = function (apiResponse) {\n      _this3.setState({\n        complete: apiResponse\n      });\n    };\n\n    _this3.reset = function () {\n      _this3.setState({\n        complete: false\n      });\n    };\n\n    _this3.state = {\n      complete: false\n    };\n    return _this3;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.state.complete) {\n        return _react2.default.createElement(LinkSent, { user: this.state.complete, callback: this.reset });\n      } else {\n        return _react2.default.createElement(RequestLinkForm, { callback: this.complete });\n      };\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../index\":48,\"../services/ajax\":53,\"../services/snackbar\":60,\"../utils/banned-page\":63,\"../utils/validators\":68,\"./button\":27,\"./form\":34,\"react\":\"react\"}],41:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AccountInactivePage = exports.LinkSent = exports.RequestResetForm = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _validators = require('../utils/validators');\n\nvar validators = _interopRequireWildcard(_validators);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar RequestResetForm = exports.RequestResetForm = function (_Form) {\n  _inherits(RequestResetForm, _Form);\n\n  function RequestResetForm(props) {\n    _classCallCheck(this, RequestResetForm);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RequestResetForm).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'email': '',\n\n      'validators': {\n        'email': [validators.email()]\n      }\n    };\n    return _this;\n  }\n\n  _createClass(RequestResetForm, [{\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(gettext(\"Enter a valid email address.\"));\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('SEND_PASSWORD_RESET_API'), {\n        'email': this.state.email\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.props.callback(apiResponse);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (['inactive_user', 'inactive_admin'].indexOf(rejection.code) > -1) {\n        this.props.showInactivePage(rejection);\n      } else if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-request-password-reset' },\n        _react2.default.createElement(\n          'form',\n          { onSubmit: this.handleSubmit },\n          _react2.default.createElement(\n            'div',\n            { className: 'form-group' },\n            _react2.default.createElement(\n              'div',\n              { className: 'control-input' },\n              _react2.default.createElement('input', { type: 'text', className: 'form-control',\n                placeholder: gettext(\"Your e-mail address\"),\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('email'),\n                value: this.state.email })\n            )\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary btn-block',\n              loading: this.state.isLoading },\n            gettext(\"Send link\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return RequestResetForm;\n}(_form2.default);\n\nvar LinkSent = exports.LinkSent = function (_React$Component) {\n  _inherits(LinkSent, _React$Component);\n\n  function LinkSent() {\n    _classCallCheck(this, LinkSent);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(LinkSent).apply(this, arguments));\n  }\n\n  _createClass(LinkSent, [{\n    key: 'getMessage',\n    value: function getMessage() {\n      return interpolate(gettext(\"Reset password link was sent to %(email)s\"), {\n        email: this.props.user.email\n      }, true);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-request-password-reset well-done' },\n        _react2.default.createElement(\n          'div',\n          { className: 'done-message' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-icon' },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'check'\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'message-body' },\n            _react2.default.createElement(\n              'p',\n              null,\n              this.getMessage()\n            )\n          ),\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-primary btn-block',\n              onClick: this.props.callback },\n            gettext(\"Request another link\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return LinkSent;\n}(_react2.default.Component);\n\nvar AccountInactivePage = exports.AccountInactivePage = function (_React$Component2) {\n  _inherits(AccountInactivePage, _React$Component2);\n\n  function AccountInactivePage() {\n    _classCallCheck(this, AccountInactivePage);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(AccountInactivePage).apply(this, arguments));\n  }\n\n  _createClass(AccountInactivePage, [{\n    key: 'getActivateButton',\n    value: function getActivateButton() {\n      if (this.props.activation === 'inactive_user') {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'p',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: _index2.default.get('REQUEST_ACTIVATION_URL') },\n            gettext(\"Activate your account.\")\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-message page-message-info page-forgotten-password-inactive' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-panel' },\n            _react2.default.createElement(\n              'div',\n              { className: 'message-icon' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                'info_outline'\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'message-body' },\n              _react2.default.createElement(\n                'p',\n                { className: 'lead' },\n                gettext(\"Your account is inactive.\")\n              ),\n              _react2.default.createElement(\n                'p',\n                null,\n                this.props.message\n              ),\n              this.getActivateButton()\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return AccountInactivePage;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component3) {\n  _inherits(_class, _React$Component3);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this4 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this4.complete = function (apiResponse) {\n      _this4.setState({\n        complete: apiResponse\n      });\n    };\n\n    _this4.reset = function () {\n      _this4.setState({\n        complete: false\n      });\n    };\n\n    _this4.state = {\n      complete: false\n    };\n    return _this4;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'showInactivePage',\n    value: function showInactivePage(apiResponse) {\n      _reactDom2.default.render(_react2.default.createElement(AccountInactivePage, { activation: apiResponse.code,\n        message: apiResponse.detail }), document.getElementById('page-mount'));\n    }\n    /* jshint ignore:end */\n\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.state.complete) {\n        return _react2.default.createElement(LinkSent, { user: this.state.complete, callback: this.reset });\n      } else {\n        return _react2.default.createElement(RequestResetForm, { callback: this.complete,\n          showInactivePage: this.showInactivePage });\n      };\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../index\":48,\"../services/ajax\":53,\"../services/snackbar\":60,\"../utils/banned-page\":63,\"../utils/validators\":68,\"./button\":27,\"./form\":34,\"react\":\"react\",\"react-dom\":\"react-dom\"}],42:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PasswordChangedPage = exports.ResetPasswordForm = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _signIn = require('./sign-in.js');\n\nvar _signIn2 = _interopRequireDefault(_signIn);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _auth = require('../services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _modal = require('../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _validators = require('../utils/validators');\n\nvar validators = _interopRequireWildcard(_validators);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar ResetPasswordForm = exports.ResetPasswordForm = function (_Form) {\n  _inherits(ResetPasswordForm, _Form);\n\n  function ResetPasswordForm(props) {\n    _classCallCheck(this, ResetPasswordForm);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ResetPasswordForm).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'password': '',\n\n      'validators': {\n        'password': [validators.passwordMinLength(_index2.default.get('SETTINGS'))]\n      }\n    };\n    return _this;\n  }\n\n  _createClass(ResetPasswordForm, [{\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        if (this.state.password.trim().length) {\n          _snackbar2.default.error(this.state.errors.password[0]);\n        } else {\n          _snackbar2.default.error(gettext(\"Enter new password.\"));\n        }\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('CHANGE_PASSWORD_API'), {\n        'password': this.state.password\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.props.callback(apiResponse);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-reset-password' },\n        _react2.default.createElement(\n          'form',\n          { onSubmit: this.handleSubmit },\n          _react2.default.createElement(\n            'div',\n            { className: 'form-group' },\n            _react2.default.createElement(\n              'div',\n              { className: 'control-input' },\n              _react2.default.createElement('input', { type: 'password', className: 'form-control',\n                placeholder: gettext(\"Enter new password\"),\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('password'),\n                value: this.state.password })\n            )\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary btn-block',\n              loading: this.state.isLoading },\n            gettext(\"Change password\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return ResetPasswordForm;\n}(_form2.default);\n\nvar PasswordChangedPage = exports.PasswordChangedPage = function (_React$Component) {\n  _inherits(PasswordChangedPage, _React$Component);\n\n  function PasswordChangedPage() {\n    _classCallCheck(this, PasswordChangedPage);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(PasswordChangedPage).apply(this, arguments));\n  }\n\n  _createClass(PasswordChangedPage, [{\n    key: 'getMessage',\n    value: function getMessage() {\n      return interpolate(gettext(\"%(username)s, your password has been changed successfully.\"), {\n        username: this.props.user.username\n      }, true);\n    }\n  }, {\n    key: 'showSignIn',\n    value: function showSignIn() {\n      _modal2.default.show(_signIn2.default);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-message page-message-success page-forgotten-password-changed' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-panel' },\n            _react2.default.createElement(\n              'div',\n              { className: 'message-icon' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                'check'\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'message-body' },\n              _react2.default.createElement(\n                'p',\n                { className: 'lead' },\n                this.getMessage()\n              ),\n              _react2.default.createElement(\n                'p',\n                null,\n                gettext(\"You will have to sign in using new password before continuing.\")\n              ),\n              _react2.default.createElement(\n                'p',\n                null,\n                _react2.default.createElement(\n                  'button',\n                  { type: 'button', className: 'btn btn-primary', onClick: this.showSignIn },\n                  gettext(\"Sign in\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return PasswordChangedPage;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this3, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this3 = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this3), _this3.complete = function (apiResponse) {\n      _auth2.default.softSignOut();\n\n      // nuke \"redirect_to\" field so we don't end\n      // coming back to error page after sign in\n      $('#hidden-login-form input[name=\"redirect_to\"]').remove();\n\n      _reactDom2.default.render(_react2.default.createElement(PasswordChangedPage, { user: apiResponse }), document.getElementById('page-mount'));\n    }, _temp), _possibleConstructorReturn(_this3, _ret);\n  }\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(ResetPasswordForm, { callback: this.complete });\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../index\":48,\"../services/ajax\":53,\"../services/auth\":54,\"../services/modal\":59,\"../services/snackbar\":60,\"../utils/banned-page\":63,\"../utils/validators\":68,\"./button\":27,\"./form\":34,\"./sign-in.js\":43,\"react\":\"react\",\"react-dom\":\"react-dom\"}],43:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _modal = require('../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\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; } // jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_Form) {\n  _inherits(_class, _Form);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n      'showActivation': false,\n\n      'username': '',\n      'password': '',\n\n      'validators': {\n        'username': [],\n        'password': []\n      }\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'clean',\n    value: function clean() {\n      if (!this.isValid()) {\n        _snackbar2.default.error(gettext(\"Fill out both fields.\"));\n        return false;\n      } else {\n        return true;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('AUTH_API'), {\n        'username': this.state.username,\n        'password': this.state.password\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess() {\n      var form = $('#hidden-login-form');\n\n      form.append('<input type=\"text\" name=\"username\" />');\n      form.append('<input type=\"password\" name=\"password\" />');\n\n      // fill out form with user credentials and submit it, this will tell\n      // Misago to redirect user back to right page, and will trigger browser's\n      // key ring feature\n      form.find('input[type=\"hidden\"]').val(_ajax2.default.getCsrfToken());\n      form.find('input[name=\"redirect_to\"]').val(window.location.pathname);\n      form.find('input[name=\"username\"]').val(this.state.username);\n      form.find('input[name=\"password\"]').val(this.state.password);\n      form.submit();\n\n      // keep form loading\n      this.setState({\n        'isLoading': true\n      });\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        if (rejection.code === 'inactive_admin') {\n          _snackbar2.default.info(rejection.detail);\n        } else if (rejection.code === 'inactive_user') {\n          _snackbar2.default.info(rejection.detail);\n          this.setState({\n            'showActivation': true\n          });\n        } else if (rejection.code === 'banned') {\n          (0, _bannedPage2.default)(rejection.detail);\n          _modal2.default.hide();\n        } else {\n          _snackbar2.default.error(rejection.detail);\n        }\n      } else if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n        _modal2.default.hide();\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'getActivationButton',\n    value: function getActivationButton() {\n      if (this.state.showActivation) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: _index2.default.get('REQUEST_ACTIVATION_URL'),\n            className: 'btn btn-success btn-block' },\n          gettext(\"Activate account\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-dialog modal-sm modal-sign-in',\n          role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Sign in\")\n            )\n          ),\n          _react2.default.createElement(\n            'form',\n            { onSubmit: this.handleSubmit },\n            _react2.default.createElement(\n              'div',\n              { className: 'modal-body' },\n              _react2.default.createElement(\n                'div',\n                { className: 'form-group' },\n                _react2.default.createElement(\n                  'div',\n                  { className: 'control-input' },\n                  _react2.default.createElement('input', { id: 'id_username', className: 'form-control', type: 'text',\n                    disabled: this.state.isLoading,\n                    placeholder: gettext(\"Username or e-mail\"),\n                    onChange: this.bindInput('username'),\n                    value: this.state.username })\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'form-group' },\n                _react2.default.createElement(\n                  'div',\n                  { className: 'control-input' },\n                  _react2.default.createElement('input', { id: 'id_password', className: 'form-control', type: 'password',\n                    disabled: this.state.isLoading,\n                    placeholder: gettext(\"Password\"),\n                    onChange: this.bindInput('password'),\n                    value: this.state.password })\n                )\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'modal-footer' },\n              this.getActivationButton(),\n              _react2.default.createElement(\n                _button2.default,\n                { className: 'btn-primary btn-block',\n                  loading: this.state.isLoading },\n                gettext(\"Sign in\")\n              ),\n              _react2.default.createElement(\n                'a',\n                { href: _index2.default.get('FORGOTTEN_PASSWORD_URL'),\n                  className: 'btn btn-default btn-block' },\n                gettext(\"Forgot password?\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../index\":48,\"../services/ajax\":53,\"../services/modal\":59,\"../services/snackbar\":60,\"../utils/banned-page\":63,\"./button\":27,\"./form\":34,\"react\":\"react\"}],44:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Snackbar = undefined;\nexports.select = select;\n\nvar _react = require('react');\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\n/* jshint ignore:start */\nvar TYPES_CLASSES = {\n  'info': 'alert-info',\n  'success': 'alert-success',\n  'warning': 'alert-warning',\n  'error': 'alert-danger'\n};\n/* jshint ignore:end */\n\nvar Snackbar = exports.Snackbar = function (_React$Component) {\n  _inherits(Snackbar, _React$Component);\n\n  function Snackbar() {\n    _classCallCheck(this, Snackbar);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Snackbar).apply(this, arguments));\n  }\n\n  _createClass(Snackbar, [{\n    key: 'getSnackbarClass',\n    value: function getSnackbarClass() {\n      var snackbarClass = 'alerts-snackbar';\n      if (this.props.isVisible) {\n        snackbarClass += ' in';\n      } else {\n        snackbarClass += ' out';\n      }\n      return snackbarClass;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getSnackbarClass() },\n        _react2.default.createElement(\n          'p',\n          { className: 'alert ' + TYPES_CLASSES[this.props.type] },\n          this.props.message\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Snackbar;\n}(_react2.default.Component);\n\nfunction select(state) {\n  return state.snackbar;\n}\n\n},{\"react\":\"react\"}],45:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactGuestNav = exports.GuestNav = exports.GuestMenu = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _registerButton = require('../register-button');\n\nvar _registerButton2 = _interopRequireDefault(_registerButton);\n\nvar _signIn = require('../sign-in.js');\n\nvar _signIn2 = _interopRequireDefault(_signIn);\n\nvar _mobileNavbarDropdown = require('../../services/mobile-navbar-dropdown');\n\nvar _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);\n\nvar _modal = require('../../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\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; } // jshint ignore:line\n// jshint ignore:line\n\nvar GuestMenu = exports.GuestMenu = function (_React$Component) {\n  _inherits(GuestMenu, _React$Component);\n\n  function GuestMenu() {\n    _classCallCheck(this, GuestMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(GuestMenu).apply(this, arguments));\n  }\n\n  _createClass(GuestMenu, [{\n    key: 'showSignInModal',\n    value: function showSignInModal() {\n      _modal2.default.show(_signIn2.default);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu user-dropdown dropdown-menu-right',\n          role: 'menu' },\n        _react2.default.createElement(\n          'li',\n          { className: 'guest-preview' },\n          _react2.default.createElement(\n            'h4',\n            null,\n            gettext(\"You are browsing as guest.\")\n          ),\n          _react2.default.createElement(\n            'p',\n            null,\n            gettext('Sign in or register to start and participate in discussions.')\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-xs-6' },\n              _react2.default.createElement(\n                'button',\n                { type: 'button', className: 'btn btn-default btn-block',\n                  onClick: this.showSignInModal },\n                gettext(\"Sign in\")\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'col-xs-6' },\n              _react2.default.createElement(\n                _registerButton2.default,\n                { className: 'btn-primary btn-block' },\n                gettext(\"Register\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return GuestMenu;\n}(_react2.default.Component);\n\nvar GuestNav = exports.GuestNav = function (_GuestMenu) {\n  _inherits(GuestNav, _GuestMenu);\n\n  function GuestNav() {\n    _classCallCheck(this, GuestNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(GuestNav).apply(this, arguments));\n  }\n\n  _createClass(GuestNav, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'nav nav-guest' },\n        _react2.default.createElement(\n          'button',\n          { type: 'button', className: 'btn navbar-btn btn-default',\n            onClick: this.showSignInModal },\n          gettext(\"Sign in\")\n        ),\n        _react2.default.createElement(\n          _registerButton2.default,\n          { className: 'navbar-btn btn-primary' },\n          gettext(\"Register\")\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return GuestNav;\n}(GuestMenu);\n\nvar CompactGuestNav = exports.CompactGuestNav = function (_React$Component2) {\n  _inherits(CompactGuestNav, _React$Component2);\n\n  function CompactGuestNav() {\n    _classCallCheck(this, CompactGuestNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactGuestNav).apply(this, arguments));\n  }\n\n  _createClass(CompactGuestNav, [{\n    key: 'showGuestMenu',\n    value: function showGuestMenu() {\n      _mobileNavbarDropdown2.default.show(GuestMenu);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button', onClick: this.showGuestMenu },\n        _react2.default.createElement(_avatar2.default, { size: '64' })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return CompactGuestNav;\n}(_react2.default.Component);\n\n},{\"../../services/mobile-navbar-dropdown\":58,\"../../services/modal\":59,\"../avatar\":25,\"../register-button\":38,\"../sign-in.js\":43,\"react\":\"react\"}],46:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactUserMenu = exports.UserMenu = undefined;\nexports.select = select;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _guestNav = require('./guest-nav');\n\nvar _userNav = require('./user-nav');\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; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar UserMenu = exports.UserMenu = function (_React$Component) {\n  _inherits(UserMenu, _React$Component);\n\n  function UserMenu() {\n    _classCallCheck(this, UserMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserMenu).apply(this, arguments));\n  }\n\n  _createClass(UserMenu, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.props.isAuthenticated) {\n        return _react2.default.createElement(_userNav.UserNav, { user: this.props.user });\n      } else {\n        return _react2.default.createElement(_guestNav.GuestNav, null);\n      }\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return UserMenu;\n}(_react2.default.Component);\n\nvar CompactUserMenu = exports.CompactUserMenu = function (_React$Component2) {\n  _inherits(CompactUserMenu, _React$Component2);\n\n  function CompactUserMenu() {\n    _classCallCheck(this, CompactUserMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactUserMenu).apply(this, arguments));\n  }\n\n  _createClass(CompactUserMenu, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.props.isAuthenticated) {\n        return _react2.default.createElement(_userNav.CompactUserNav, { user: this.props.user });\n      } else {\n        return _react2.default.createElement(_guestNav.CompactGuestNav, null);\n      }\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return CompactUserMenu;\n}(_react2.default.Component);\n\nfunction select(state) {\n  return state.auth;\n}\n\n},{\"./guest-nav\":45,\"./user-nav\":47,\"react\":\"react\"}],47:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactUserNav = exports.UserNav = exports.UserMenu = undefined;\nexports.selectUserMenu = selectUserMenu;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _root = require('../change-avatar/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../../services/mobile-navbar-dropdown');\n\nvar _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);\n\nvar _modal = require('../../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar UserMenu = exports.UserMenu = function (_React$Component) {\n  _inherits(UserMenu, _React$Component);\n\n  function UserMenu() {\n    _classCallCheck(this, UserMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserMenu).apply(this, arguments));\n  }\n\n  _createClass(UserMenu, [{\n    key: 'logout',\n    value: function logout() {\n      var decision = confirm(gettext(\"Are you sure you want to sign out?\"));\n      if (decision) {\n        $('#hidden-logout-form').submit();\n      }\n    }\n  }, {\n    key: 'changeAvatar',\n    value: function changeAvatar() {\n      _modal2.default.show((0, _reactRedux.connect)(_root.select)(_root2.default));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu user-dropdown dropdown-menu-right',\n          role: 'menu' },\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-header' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            this.props.user.username\n          )\n        ),\n        _react2.default.createElement('li', { className: 'divider' }),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: this.props.user.absolute_url },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'account_circle'\n            ),\n            gettext(\"See your profile\")\n          )\n        ),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: _index2.default.get('USERCP_URL') },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'done_all'\n            ),\n            gettext(\"Change options\")\n          )\n        ),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link', onClick: this.changeAvatar },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'face'\n            ),\n            gettext(\"Change avatar\")\n          )\n        ),\n        _react2.default.createElement('li', { className: 'divider' }),\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-footer' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-default btn-block',\n              onClick: this.logout },\n            gettext(\"Log out\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return UserMenu;\n}(_react2.default.Component);\n\nvar UserNav = exports.UserNav = function (_React$Component2) {\n  _inherits(UserNav, _React$Component2);\n\n  function UserNav() {\n    _classCallCheck(this, UserNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserNav).apply(this, arguments));\n  }\n\n  _createClass(UserNav, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'ul nav navbar-nav nav-user' },\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown' },\n          _react2.default.createElement(\n            'a',\n            { href: this.props.user.absolute_url, className: 'dropdown-toggle',\n              'data-toggle': 'dropdown', 'aria-haspopup': 'true', 'aria-expanded': 'false',\n              role: 'button' },\n            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '64' })\n          ),\n          _react2.default.createElement(UserMenu, { user: this.props.user })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return UserNav;\n}(_react2.default.Component);\n\nfunction selectUserMenu(state) {\n  return { user: state.auth.user };\n}\n\nvar CompactUserNav = exports.CompactUserNav = function (_React$Component3) {\n  _inherits(CompactUserNav, _React$Component3);\n\n  function CompactUserNav() {\n    _classCallCheck(this, CompactUserNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactUserNav).apply(this, arguments));\n  }\n\n  _createClass(CompactUserNav, [{\n    key: 'showUserMenu',\n    value: function showUserMenu() {\n      _mobileNavbarDropdown2.default.showConnected('user-menu', (0, _reactRedux.connect)(selectUserMenu)(UserMenu));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button', onClick: this.showUserMenu },\n        _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '64' })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return CompactUserNav;\n}(_react2.default.Component);\n\n},{\"../../index\":48,\"../../services/mobile-navbar-dropdown\":58,\"../../services/modal\":59,\"../avatar\":25,\"../change-avatar/root\":31,\"react\":\"react\",\"react-redux\":\"react-redux\"}],48:[function(require,module,exports){\n(function (global){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Misago = undefined;\n\nvar _orderedList = require('./utils/ordered-list');\n\nvar _orderedList2 = _interopRequireDefault(_orderedList);\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\nvar Misago = exports.Misago = function () {\n  function Misago() {\n    _classCallCheck(this, Misago);\n\n    this._initializers = [];\n    this._context = {};\n  }\n\n  _createClass(Misago, [{\n    key: 'addInitializer',\n    value: function addInitializer(initializer) {\n      this._initializers.push({\n        key: initializer.name,\n\n        item: initializer.initializer,\n\n        after: initializer.after,\n        before: initializer.before\n      });\n    }\n  }, {\n    key: 'init',\n    value: function init(context) {\n      var _this = this;\n\n      this._context = context;\n\n      var initOrder = new _orderedList2.default(this._initializers).orderedValues();\n      initOrder.forEach(function (initializer) {\n        initializer(_this);\n      });\n    }\n\n    // context accessors\n\n  }, {\n    key: 'has',\n    value: function has(key) {\n      return this._context.hasOwnProperty(key);\n    }\n  }, {\n    key: 'get',\n    value: function get(key, fallback) {\n      if (this.has(key)) {\n        return this._context[key];\n      } else {\n        return fallback || undefined;\n      }\n    }\n  }]);\n\n  return Misago;\n}();\n\n// create  singleton\n\nvar misago = new Misago();\n\n// expose it globally\nglobal.misago = misago;\n\n// and export it for tests and stuff\nexports.default = misago;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./utils/ordered-list\":67}],49:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SIGN_OUT = exports.SIGN_IN = exports.initialState = undefined;\nexports.signIn = signIn;\nexports.signOut = signOut;\nexports.default = auth;\n\nvar _users = require('./users');\n\nvar initialState = exports.initialState = {\n  signedIn: false,\n  signedOut: false\n};\n\nvar SIGN_IN = exports.SIGN_IN = 'SIGN_IN';\nvar SIGN_OUT = exports.SIGN_OUT = 'SIGN_OUT';\n\nfunction signIn(user) {\n  return {\n    type: SIGN_IN,\n    user: user\n  };\n}\n\nfunction signOut() {\n  var soft = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0];\n\n  return {\n    type: SIGN_OUT,\n    soft: soft\n  };\n}\n\nfunction auth() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case SIGN_IN:\n      return Object.assign({}, state, {\n        signedIn: action.user\n      });\n\n    case SIGN_OUT:\n      return Object.assign({}, state, {\n        isAuthenticated: false,\n        isAnonymous: true,\n        signedOut: !action.soft\n      });\n\n    case _users.UPDATE_AVATAR:\n      if (state.isAuthenticated && state.user.id === action.userId) {\n        var newState = Object.assign({}, state);\n        newState.user = Object.assign({}, state.user, {\n          'avatar_hash': action.avatarHash\n        });\n        return newState;\n      }\n      return state;\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":52}],50:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.showSnackbar = showSnackbar;\nexports.hideSnackbar = hideSnackbar;\nexports.default = snackbar;\nvar initialState = exports.initialState = {\n  type: 'info',\n  message: '',\n  isVisible: false\n};\n\nvar SHOW_SNACKBAR = exports.SHOW_SNACKBAR = 'SHOW_SNACKBAR';\nvar HIDE_SNACKBAR = exports.HIDE_SNACKBAR = 'HIDE_SNACKBAR';\n\nfunction showSnackbar(message, type) {\n  return {\n    type: SHOW_SNACKBAR,\n    message: message,\n    messageType: type\n  };\n}\n\nfunction hideSnackbar() {\n  return {\n    type: HIDE_SNACKBAR\n  };\n}\n\nfunction snackbar() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  if (action.type === SHOW_SNACKBAR) {\n    return {\n      type: action.messageType,\n      message: action.message,\n      isVisible: true\n    };\n  } else if (action.type === HIDE_SNACKBAR) {\n    return Object.assign({}, state, {\n      isVisible: false\n    });\n  } else {\n    return state;\n  }\n}\n\n},{}],51:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.doTick = doTick;\nexports.default = tick;\nvar initialState = exports.initialState = {\n  tick: 0\n};\n\nvar TICK = exports.TICK = 'TICK';\n\nfunction doTick() {\n  return {\n    type: TICK\n  };\n}\n\nfunction tick() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  if (action.type === TICK) {\n    return Object.assign({}, state, {\n      tick: state.tick + 1\n    });\n  } else {\n    return state;\n  }\n}\n\n},{}],52:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.updateAvatar = updateAvatar;\nvar UPDATE_AVATAR = exports.UPDATE_AVATAR = 'UPDATE_AVATAR';\n\nfunction updateAvatar(user, avatarHash) {\n  return {\n    type: UPDATE_AVATAR,\n    userId: user.id,\n    avatarHash: avatarHash\n  };\n}\n\n},{}],53:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Ajax = exports.Ajax = function () {\n  function Ajax() {\n    _classCallCheck(this, Ajax);\n\n    this._cookieName = null;\n    this._csrfToken = null;\n  }\n\n  _createClass(Ajax, [{\n    key: 'init',\n    value: function init(cookieName) {\n      this._cookieName = cookieName;\n      this._csrfToken = this.getCsrfToken();\n    }\n  }, {\n    key: 'getCsrfToken',\n    value: function getCsrfToken() {\n      if (document.cookie.indexOf(this._cookieName) !== -1) {\n        var cookieRegex = new RegExp(this._cookieName + '\\=([^;]*)');\n        var cookie = document.cookie.match(cookieRegex)[0];\n        return cookie ? cookie.split('=')[1] : null;\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: 'request',\n    value: function request(method, url, data) {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        var xhr = {\n          url: url,\n          method: method,\n          headers: {\n            'X-CSRFToken': self._csrfToken\n          },\n\n          data: data ? JSON.stringify(data) : null,\n          contentType: \"application/json; charset=utf-8\",\n          dataType: 'json',\n\n          success: function success(data) {\n            resolve(data);\n          },\n\n          error: function error(jqXHR) {\n            var rejection = jqXHR.responseJSON || {};\n\n            rejection.status = jqXHR.status;\n\n            if (rejection.status === 0) {\n              rejection.detail = gettext(\"Lost connection with application.\");\n            }\n\n            rejection.statusText = jqXHR.statusText;\n\n            reject(rejection);\n          }\n        };\n\n        $.ajax(xhr);\n      });\n    }\n  }, {\n    key: 'get',\n    value: function get(url) {\n      return this.request('GET', url);\n    }\n  }, {\n    key: 'post',\n    value: function post(url, data) {\n      return this.request('POST', url, data);\n    }\n  }, {\n    key: 'patch',\n    value: function patch(url, data) {\n      return this.request('PATCH', url, data);\n    }\n  }, {\n    key: 'put',\n    value: function put(url, data) {\n      return this.request('PUT', url, data);\n    }\n  }, {\n    key: 'delete',\n    value: function _delete(url) {\n      return this.request('DELETE', url);\n    }\n  }, {\n    key: 'upload',\n    value: function upload(url, data, progress) {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        var xhr = {\n          url: url,\n          method: 'POST',\n          headers: {\n            'X-CSRFToken': self._csrfToken\n          },\n\n          data: data,\n          contentType: false,\n          processData: false,\n\n          xhr: function xhr() {\n            var xhr = new window.XMLHttpRequest();\n            xhr.upload.addEventListener(\"progress\", function (evt) {\n              if (evt.lengthComputable) {\n                progress(Math.round(evt.loaded / evt.total * 100));\n              }\n            }, false);\n            return xhr;\n          },\n\n          success: function success(response) {\n            resolve(response);\n          },\n\n          error: function error(jqXHR) {\n            var rejection = jqXHR.responseJSON || {};\n\n            rejection.status = jqXHR.status;\n\n            if (rejection.status === 0) {\n              rejection.detail = gettext(\"Lost connection with application.\");\n            }\n\n            rejection.statusText = jqXHR.statusText;\n\n            reject(rejection);\n          }\n        };\n\n        $.ajax(xhr);\n      });\n    }\n  }]);\n\n  return Ajax;\n}();\n\nexports.default = new Ajax();\n\n},{}],54:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Auth = undefined;\n\nvar _auth = require('../reducers/auth');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// jshint ignore:line\n\nvar Auth = exports.Auth = function () {\n  function Auth() {\n    _classCallCheck(this, Auth);\n  }\n\n  _createClass(Auth, [{\n    key: 'init',\n    value: function init(store, local, modal) {\n      this._store = store;\n      this._local = local;\n      this._modal = modal;\n\n      // tell other tabs what auth state is because we are most current with it\n      this.syncSession();\n\n      // listen for other tabs to tell us that state changed\n      this.watchState();\n    }\n  }, {\n    key: 'syncSession',\n    value: function syncSession() {\n      var state = this._store.getState().auth;\n      if (state.isAuthenticated) {\n        this._local.set('auth', {\n          isAuthenticated: true,\n          username: state.user.username\n        });\n      } else {\n        this._local.set('auth', {\n          isAuthenticated: false\n        });\n      }\n    }\n  }, {\n    key: 'watchState',\n    value: function watchState() {\n      var _this = this;\n\n      this._local.watch('auth', function (newState) {\n        if (newState.isAuthenticated) {\n          _this._store.dispatch((0, _auth.signIn)({\n            username: newState.username\n          }));\n        } else {\n          _this._store.dispatch((0, _auth.signOut)());\n        }\n      });\n      this._modal.hide();\n    }\n  }, {\n    key: 'signIn',\n    value: function signIn(user) {\n      this._store.dispatch((0, _auth.signIn)(user));\n      this._local.set('auth', {\n        isAuthenticated: true,\n        username: user.username\n      });\n      this._modal.hide();\n    }\n  }, {\n    key: 'signOut',\n    value: function signOut() {\n      this._store.dispatch((0, _auth.signOut)());\n      this._local.set('auth', {\n        isAuthenticated: false\n      });\n      this._modal.hide();\n    }\n  }, {\n    key: 'softSignOut',\n    value: function softSignOut() {\n      this._store.dispatch((0, _auth.signOut)(true));\n      this._local.set('auth', {\n        isAuthenticated: false\n      });\n      this._modal.hide();\n    }\n  }]);\n\n  return Auth;\n}();\n\nexports.default = new Auth();\n\n},{\"../reducers/auth\":49}],55:[function(require,module,exports){\n'use strict';\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; }; }(); /* global grecaptcha */\n// jshint ignore:line\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Captcha = exports.ReCaptcha = exports.ReCaptchaComponent = exports.QACaptcha = exports.NoCaptcha = exports.BaseCaptcha = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _formGroup = require('../components/form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// jshint ignore:line\n\nvar BaseCaptcha = exports.BaseCaptcha = function () {\n  function BaseCaptcha() {\n    _classCallCheck(this, BaseCaptcha);\n  }\n\n  _createClass(BaseCaptcha, [{\n    key: 'init',\n    value: function init(context, ajax, include, snackbar) {\n      this._context = context;\n      this._ajax = ajax;\n      this._include = include;\n      this._snackbar = snackbar;\n    }\n  }]);\n\n  return BaseCaptcha;\n}();\n\nvar NoCaptcha = exports.NoCaptcha = function (_BaseCaptcha) {\n  _inherits(NoCaptcha, _BaseCaptcha);\n\n  function NoCaptcha() {\n    _classCallCheck(this, NoCaptcha);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(NoCaptcha).apply(this, arguments));\n  }\n\n  _createClass(NoCaptcha, [{\n    key: 'load',\n    value: function load() {\n      return new Promise(function (resolve) {\n        // immediately resolve as we don't have anything to validate\n        resolve();\n      });\n    }\n  }, {\n    key: 'validator',\n    value: function validator() {\n      return null;\n    }\n  }, {\n    key: 'component',\n    value: function component() {\n      return null;\n    }\n  }]);\n\n  return NoCaptcha;\n}(BaseCaptcha);\n\nvar QACaptcha = exports.QACaptcha = function (_BaseCaptcha2) {\n  _inherits(QACaptcha, _BaseCaptcha2);\n\n  function QACaptcha() {\n    _classCallCheck(this, QACaptcha);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(QACaptcha).apply(this, arguments));\n  }\n\n  _createClass(QACaptcha, [{\n    key: 'load',\n    value: function load() {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        self._ajax.get(self._context.get('CAPTCHA_API_URL')).then(function (data) {\n          self.question = data.question;\n          self.helpText = data.help_text;\n          resolve();\n        }, function () {\n          self._snackbar.error(gettext(\"Failed to load CAPTCHA.\"));\n          reject();\n        });\n      });\n    }\n  }, {\n    key: 'validator',\n    value: function validator() {\n      return [];\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'component',\n    value: function component(kwargs) {\n      return _react2.default.createElement(\n        _formGroup2.default,\n        { label: this.question, 'for': 'id_captcha',\n          labelClass: kwargs.labelClass || \"col-sm-4\",\n          controlClass: kwargs.controlClass || \"col-sm-8\",\n          validation: kwargs.form.state.errors.captcha,\n          helpText: this.helpText || null },\n        _react2.default.createElement('input', { type: 'text', id: 'id_captcha', className: 'form-control',\n          'aria-describedby': 'id_captcha_status',\n          disabled: kwargs.form.state.isLoading,\n          onChange: kwargs.form.bindInput('captcha'),\n          value: kwargs.form.state.captcha })\n      );\n    }\n    /* jshint ignore:end */\n\n  }]);\n\n  return QACaptcha;\n}(BaseCaptcha);\n\nvar ReCaptchaComponent = exports.ReCaptchaComponent = function (_React$Component) {\n  _inherits(ReCaptchaComponent, _React$Component);\n\n  function ReCaptchaComponent() {\n    _classCallCheck(this, ReCaptchaComponent);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(ReCaptchaComponent).apply(this, arguments));\n  }\n\n  _createClass(ReCaptchaComponent, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this4 = this;\n\n      grecaptcha.render('recaptcha', {\n        'sitekey': this.props.siteKey,\n        'callback': function callback(response) {\n          // fire fakey event to binding\n          _this4.props.binding({\n            target: {\n              value: response\n            }\n          });\n        }\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement('div', { id: 'recaptcha' });\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return ReCaptchaComponent;\n}(_react2.default.Component);\n\nvar ReCaptcha = exports.ReCaptcha = function (_BaseCaptcha3) {\n  _inherits(ReCaptcha, _BaseCaptcha3);\n\n  function ReCaptcha() {\n    _classCallCheck(this, ReCaptcha);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(ReCaptcha).apply(this, arguments));\n  }\n\n  _createClass(ReCaptcha, [{\n    key: 'load',\n    value: function load() {\n      this._include.include('https://www.google.com/recaptcha/api.js', true);\n\n      return new Promise(function (resolve) {\n        var wait = function wait() {\n          if (typeof grecaptcha === \"undefined\") {\n            window.setTimeout(function () {\n              wait();\n            }, 200);\n          } else {\n            resolve();\n          }\n        };\n        wait();\n      });\n    }\n  }, {\n    key: 'validator',\n    value: function validator() {\n      return [];\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'component',\n    value: function component(kwargs) {\n      return _react2.default.createElement(\n        _formGroup2.default,\n        { label: gettext(\"Captcha\"), 'for': 'id_captcha',\n          labelClass: kwargs.labelClass || \"col-sm-4\",\n          controlClass: kwargs.controlClass || \"col-sm-8\",\n          validation: kwargs.form.state.errors.captcha,\n          helpText: gettext(\"Please solve the quick test.\") },\n        _react2.default.createElement(ReCaptchaComponent, { siteKey: this._context.get('SETTINGS').recaptcha_site_key,\n          binding: kwargs.form.bindInput('captcha') })\n      );\n    }\n    /* jshint ignore:end */\n\n  }]);\n\n  return ReCaptcha;\n}(BaseCaptcha);\n\nvar Captcha = exports.Captcha = function () {\n  function Captcha() {\n    _classCallCheck(this, Captcha);\n  }\n\n  _createClass(Captcha, [{\n    key: 'init',\n    value: function init(context, ajax, include, snackbar) {\n      switch (context.get('SETTINGS').captcha_type) {\n        case 'no':\n          this._captcha = new NoCaptcha();\n          break;\n\n        case 'qa':\n          this._captcha = new QACaptcha();\n          break;\n\n        case 're':\n          this._captcha = new ReCaptcha();\n          break;\n      }\n\n      this._captcha.init(context, ajax, include, snackbar);\n    }\n\n    // accessors for underlying strategy\n\n  }, {\n    key: 'load',\n    value: function load() {\n      return this._captcha.load();\n    }\n  }, {\n    key: 'validator',\n    value: function validator() {\n      return this._captcha.validator();\n    }\n  }, {\n    key: 'component',\n    value: function component(kwargs) {\n      return this._captcha.component(kwargs);\n    }\n  }]);\n\n  return Captcha;\n}();\n\nexports.default = new Captcha();\n\n},{\"../components/form-group\":33,\"react\":\"react\"}],56:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Include = exports.Include = function () {\n  function Include() {\n    _classCallCheck(this, Include);\n  }\n\n  _createClass(Include, [{\n    key: 'init',\n    value: function init(staticUrl) {\n      this._staticUrl = staticUrl;\n      this._included = [];\n    }\n  }, {\n    key: 'include',\n    value: function include(script) {\n      var remote = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n\n      if (this._included.indexOf(script) === -1) {\n        this._included.push(script);\n        this._include(script, remote);\n      }\n    }\n  }, {\n    key: '_include',\n    value: function _include(script, remote) {\n      $.ajax({\n        url: (!remote ? this._staticUrl : '') + script,\n        cache: true,\n        dataType: 'script'\n      });\n    }\n  }]);\n\n  return Include;\n}();\n\nexports.default = new Include();\n\n},{}],57:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar storage = window.localStorage;\n\nvar LocalStorage = exports.LocalStorage = function () {\n  function LocalStorage() {\n    _classCallCheck(this, LocalStorage);\n  }\n\n  _createClass(LocalStorage, [{\n    key: 'init',\n    value: function init(prefix) {\n      var _this = this;\n\n      this._prefix = prefix;\n      this._watchers = [];\n\n      window.addEventListener('storage', function (e) {\n        var newValueJson = JSON.parse(e.newValue);\n        _this._watchers.forEach(function (watcher) {\n          if (watcher.key === e.key && e.oldValue !== e.newValue) {\n            watcher.callback(newValueJson);\n          }\n        });\n      });\n    }\n  }, {\n    key: 'set',\n    value: function set(key, value) {\n      storage.setItem(this._prefix + key, JSON.stringify(value));\n    }\n  }, {\n    key: 'get',\n    value: function get(key) {\n      var itemString = storage.getItem(this._prefix + key);\n      if (itemString) {\n        return JSON.parse(itemString);\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: 'watch',\n    value: function watch(key, callback) {\n      this._watchers.push({\n        key: this._prefix + key,\n        callback: callback\n      });\n    }\n  }]);\n\n  return LocalStorage;\n}();\n\nexports.default = new LocalStorage();\n\n},{}],58:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MobileNavbarDropdown = undefined;\n\nvar _mountComponent = require('../utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\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\nvar MobileNavbarDropdown = exports.MobileNavbarDropdown = function () {\n  function MobileNavbarDropdown() {\n    _classCallCheck(this, MobileNavbarDropdown);\n  }\n\n  _createClass(MobileNavbarDropdown, [{\n    key: 'init',\n    value: function init(element) {\n      this._element = element;\n      this._component = null;\n    }\n  }, {\n    key: 'show',\n    value: function show(component) {\n      if (this._component === component) {\n        this.hide();\n      } else {\n        this._component = component;\n        (0, _mountComponent2.default)(component, this._element.id);\n        $(this._element).addClass('open');\n      }\n    }\n  }, {\n    key: 'showConnected',\n    value: function showConnected(name, component) {\n      if (this._component === name) {\n        this.hide();\n      } else {\n        this._component = name;\n        (0, _mountComponent2.default)(component, this._element.id, true);\n        $(this._element).addClass('open');\n      }\n    }\n  }, {\n    key: 'hide',\n    value: function hide() {\n      $(this._element).removeClass('open');\n      this._component = null;\n    }\n  }]);\n\n  return MobileNavbarDropdown;\n}();\n\nexports.default = new MobileNavbarDropdown();\n\n},{\"../utils/mount-component\":66}],59:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Modal = undefined;\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _mountComponent = require('../utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\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\nvar Modal = exports.Modal = function () {\n  function Modal() {\n    _classCallCheck(this, Modal);\n  }\n\n  _createClass(Modal, [{\n    key: 'init',\n    value: function init(element) {\n      var _this = this;\n\n      this._element = element;\n\n      this._modal = $(element).modal({ show: false });\n\n      this._modal.on('hidden.bs.modal', function () {\n        _reactDom2.default.unmountComponentAtNode(_this._element);\n      });\n    }\n  }, {\n    key: 'show',\n    value: function show(component) {\n      (0, _mountComponent2.default)(component, this._element.id);\n      this._modal.modal('show');\n    }\n  }, {\n    key: 'hide',\n    value: function hide() {\n      this._modal.modal('hide');\n    }\n  }]);\n\n  return Modal;\n}();\n\nexports.default = new Modal();\n\n},{\"../utils/mount-component\":66,\"react-dom\":\"react-dom\"}],60:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Snackbar = undefined;\n\nvar _snackbar = require('../reducers/snackbar');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar HIDE_ANIMATION_LENGTH = 300;\nvar MESSAGE_SHOW_LENGTH = 5000;\n\nvar Snackbar = exports.Snackbar = function () {\n  function Snackbar() {\n    _classCallCheck(this, Snackbar);\n  }\n\n  _createClass(Snackbar, [{\n    key: 'init',\n    value: function init(store) {\n      this._store = store;\n      this._timeout = null;\n    }\n  }, {\n    key: 'alert',\n    value: function alert(message, type) {\n      var _this = this;\n\n      if (this._timeout) {\n        window.clearTimeout(this._timeout);\n        this._store.dispatch((0, _snackbar.hideSnackbar)());\n\n        this._timeout = window.setTimeout(function () {\n          _this._timeout = null;\n          _this.alert(message, type);\n        }, HIDE_ANIMATION_LENGTH);\n      } else {\n        this._store.dispatch((0, _snackbar.showSnackbar)(message, type));\n        this._timeout = window.setTimeout(function () {\n          _this._store.dispatch((0, _snackbar.hideSnackbar)());\n          _this._timeout = null;\n        }, MESSAGE_SHOW_LENGTH);\n      }\n    }\n\n    // shorthands for message types\n\n  }, {\n    key: 'info',\n    value: function info(message) {\n      this.alert(message, 'info');\n    }\n  }, {\n    key: 'success',\n    value: function success(message) {\n      this.alert(message, 'success');\n    }\n  }, {\n    key: 'warning',\n    value: function warning(message) {\n      this.alert(message, 'warning');\n    }\n  }, {\n    key: 'error',\n    value: function error(message) {\n      this.alert(message, 'error');\n    }\n\n    // shorthand for api errors\n\n  }, {\n    key: 'apiError',\n    value: function apiError(rejection) {\n      var message = gettext(\"Unknown error has occured.\");\n\n      if (rejection.status === 0) {\n        message = rejection.detail;\n      }\n\n      if (rejection.status === 400 && rejection.detail) {\n        message = rejection.detail;\n      }\n\n      if (rejection.status === 403) {\n        message = rejection.detail;\n        if (message === \"Permission denied\") {\n          message = gettext(\"You don't have permission to perform this action.\");\n        }\n      }\n\n      if (rejection.status === 404) {\n        message = gettext(\"Action link is invalid.\");\n      }\n\n      this.error(message);\n    }\n  }]);\n\n  return Snackbar;\n}();\n\nexports.default = new Snackbar();\n\n},{\"../reducers/snackbar\":50}],61:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.StoreWrapper = undefined;\n\nvar _redux = require('redux');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar StoreWrapper = exports.StoreWrapper = function () {\n  function StoreWrapper() {\n    _classCallCheck(this, StoreWrapper);\n\n    this._store = null;\n    this._reducers = {};\n    this._initialState = {};\n  }\n\n  _createClass(StoreWrapper, [{\n    key: 'addReducer',\n    value: function addReducer(name, reducer, initialState) {\n      this._reducers[name] = reducer;\n      this._initialState[name] = initialState;\n    }\n  }, {\n    key: 'init',\n    value: function init() {\n      this._store = (0, _redux.createStore)((0, _redux.combineReducers)(this._reducers), this._initialState);\n    }\n  }, {\n    key: 'getStore',\n    value: function getStore() {\n      return this._store;\n    }\n\n    // Store API\n\n  }, {\n    key: 'getState',\n    value: function getState() {\n      return this._store.getState();\n    }\n  }, {\n    key: 'dispatch',\n    value: function dispatch(action) {\n      return this._store.dispatch(action);\n    }\n  }]);\n\n  return StoreWrapper;\n}();\n\nexports.default = new StoreWrapper();\n\n},{\"redux\":\"redux\"}],62:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* global zxcvbn */\n\nvar Zxcvbn = exports.Zxcvbn = function () {\n  function Zxcvbn() {\n    _classCallCheck(this, Zxcvbn);\n  }\n\n  _createClass(Zxcvbn, [{\n    key: \"init\",\n    value: function init(include) {\n      this._include = include;\n    }\n  }, {\n    key: \"scorePassword\",\n    value: function scorePassword(password, inputs) {\n      // 0-4 score, the more the stronger password\n      return zxcvbn(password, inputs).score;\n    }\n  }, {\n    key: \"load\",\n    value: function load() {\n      if (typeof zxcvbn === \"undefined\") {\n        this._include.include('misago/js/zxcvbn.js');\n        return this._loadingPromise();\n      } else {\n        return this._loadedPromise();\n      }\n    }\n  }, {\n    key: \"_loadingPromise\",\n    value: function _loadingPromise() {\n      return new Promise(function (resolve) {\n        var wait = function wait() {\n          if (typeof zxcvbn === \"undefined\") {\n            window.setTimeout(function () {\n              wait();\n            }, 200);\n          } else {\n            resolve();\n          }\n        };\n        wait();\n      });\n    }\n  }, {\n    key: \"_loadedPromise\",\n    value: function _loadedPromise() {\n      // we have already loaded zxcvbn.js, resolve away!\n      return new Promise(function (resolve) {\n        resolve();\n      });\n    }\n  }]);\n\n  return Zxcvbn;\n}();\n\nexports.default = new Zxcvbn();\n\n},{}],63:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (ban, changeState) {\n  _reactDom2.default.render(\n  /* jshint ignore:start */\n  _react2.default.createElement(\n    _reactRedux.Provider,\n    { store: _store2.default.getStore() },\n    _react2.default.createElement(RedrawedBannedPage, { message: ban.message,\n      expires: ban.expires_on ? (0, _moment2.default)(ban.expires_on) : null })\n  ),\n  /* jshint ignore:end */\n  document.getElementById('page-mount'));\n\n  if (typeof changeState === 'undefined' || changeState) {\n    var forumName = _index2.default.get('SETTINGS').forum_name;\n    document.title = gettext(\"You are banned\") + ' | ' + forumName;\n    window.history.pushState({}, \"\", _index2.default.get('BANNED_URL'));\n  }\n};\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = require('react-redux');\n\nvar _bannedPage = require('../components/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _store = require('../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// jshint ignore:line\n\n/* jshint ignore:start */\n// jshint ignore:line\n// jshint ignore:line\nvar select = function select(state) {\n  return state.tick;\n}; // jshint ignore:line\n// jshint ignore:line\n\nvar RedrawedBannedPage = (0, _reactRedux.connect)(select)(_bannedPage2.default);\n/* jshint ignore:end */\n\n},{\"../components/banned-page\":26,\"../index\":48,\"../services/store\":61,\"moment\":\"moment\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],64:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (list, rowWidth) {\n  var padding = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];\n\n  var rows = [];\n  var row = [];\n\n  list.forEach(function (element) {\n    row.push(element);\n    if (row.length === rowWidth) {\n      rows.push(row);\n      row = [];\n    }\n  });\n\n  // pad row to required length?\n  if (padding !== false && row.length > 0 && row.length < rowWidth) {\n    for (var i = row.length; i < rowWidth; i++) {\n      row.push(padding);\n    }\n  }\n\n  if (row.length) {\n    rows.push(row);\n  }\n\n  return rows;\n};\n\n},{}],65:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (bytes) {\n  if (bytes > 1000 * 1000 * 1000) {\n    return Math.round(bytes * 100 / (1000 * 1000 * 1000)) / 100 + ' GB';\n  } else if (bytes > 1000 * 1000) {\n    return Math.round(bytes * 100 / (1000 * 1000)) / 100 + ' MB';\n  } else if (bytes > 1000) {\n    return Math.round(bytes * 100 / 1000) / 100 + ' KB';\n  } else {\n    return Math.round(bytes * 100) / 100 + ' B';\n  }\n};\n\n},{}],66:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (Component, rootElementId) {\n  var connected = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2];\n\n  var rootElement = document.getElementById(rootElementId);\n\n  if (rootElement) {\n    if (connected) {\n      _reactDom2.default.render(\n      /* jshint ignore:start */\n      _react2.default.createElement(\n        _reactRedux.Provider,\n        { store: _store2.default.getStore() },\n        _react2.default.createElement(Component, null)\n      ),\n      /* jshint ignore:end */\n      rootElement);\n    } else {\n      _reactDom2.default.render(\n      /* jshint ignore:start */\n      _react2.default.createElement(Component, null),\n      /* jshint ignore:end */\n      rootElement);\n    }\n  }\n};\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = require('react-redux');\n\nvar _store = require('../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n},{\"../services/store\":61,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],67:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OrderedList = function () {\n  function OrderedList(items) {\n    _classCallCheck(this, OrderedList);\n\n    this.isOrdered = false;\n    this._items = items || [];\n  }\n\n  _createClass(OrderedList, [{\n    key: \"add\",\n    value: function add(key, item, order) {\n      this._items.push({\n        key: key,\n        item: item,\n\n        after: order ? order.after || null : null,\n        before: order ? order.before || null : null\n      });\n    }\n  }, {\n    key: \"get\",\n    value: function get(key, value) {\n      for (var i = 0; i < this._items.length; i++) {\n        if (this._items[i].key === key) {\n          return this._items[i].item;\n        }\n      }\n\n      return value;\n    }\n  }, {\n    key: \"has\",\n    value: function has(key) {\n      return this.get(key) !== undefined;\n    }\n  }, {\n    key: \"values\",\n    value: function values() {\n      var values = [];\n      for (var i = 0; i < this._items.length; i++) {\n        values.push(this._items[i].item);\n      }\n      return values;\n    }\n  }, {\n    key: \"order\",\n    value: function order(values_only) {\n      if (!this.isOrdered) {\n        this._items = this._order(this._items);\n        this.isOrdered = true;\n      }\n\n      if (values_only || typeof values_only === 'undefined') {\n        return this.values();\n      } else {\n        return this._items;\n      }\n    }\n  }, {\n    key: \"orderedValues\",\n    value: function orderedValues() {\n      return this.order(true);\n    }\n  }, {\n    key: \"_order\",\n    value: function _order(unordered) {\n      // Index of unordered items\n      var index = [];\n      unordered.forEach(function (item) {\n        index.push(item.key);\n      });\n\n      // Ordered items\n      var ordered = [];\n      var ordering = [];\n\n      // First pass: register items that\n      // don't specify their order\n      unordered.forEach(function (item) {\n        if (!item.after && !item.before) {\n          ordered.push(item);\n          ordering.push(item.key);\n        }\n      });\n\n      // Second pass: register items that\n      // specify their before to \"_end\"\n      unordered.forEach(function (item) {\n        if (item.before === \"_end\") {\n          ordered.push(item);\n          ordering.push(item.key);\n        }\n      });\n\n      // Third pass: keep iterating items\n      // until we hit iterations limit or finish\n      // ordering list\n      function insertItem(item) {\n        var insertAt = -1;\n        if (ordering.indexOf(item.key) === -1) {\n          if (item.after) {\n            insertAt = ordering.indexOf(item.after);\n            if (insertAt !== -1) {\n              insertAt += 1;\n            }\n          } else if (item.before) {\n            insertAt = ordering.indexOf(item.before);\n          }\n\n          if (insertAt !== -1) {\n            ordered.splice(insertAt, 0, item);\n            ordering.splice(insertAt, 0, item.key);\n          }\n        }\n      }\n\n      var iterations = 200;\n      while (iterations > 0 && index.length !== ordering.length) {\n        iterations -= 1;\n        unordered.forEach(insertItem);\n      }\n\n      return ordered;\n    }\n  }]);\n\n  return OrderedList;\n}();\n\nexports.default = OrderedList;\n\n},{}],68:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.required = required;\nexports.email = email;\nexports.minLength = minLength;\nexports.maxLength = maxLength;\nexports.usernameMinLength = usernameMinLength;\nexports.usernameMaxLength = usernameMaxLength;\nexports.usernameContent = usernameContent;\nexports.passwordMinLength = passwordMinLength;\nvar EMAIL = /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\nvar USERNAME = new RegExp('^[0-9a-z]+$', 'i');\n\nfunction required() {\n  return function (value) {\n    if ($.trim(value).length === 0) {\n      return gettext(\"This field is required.\");\n    }\n  };\n}\n\nfunction email(message) {\n  return function (value) {\n    if (!EMAIL.test(value)) {\n      return message || gettext(\"Enter a valid email address.\");\n    }\n  };\n}\n\nfunction minLength(limitValue, message) {\n  return function (value) {\n    var returnMessage = '';\n    var length = $.trim(value).length;\n\n    if (length < limitValue) {\n      if (message) {\n        returnMessage = message(limitValue, length);\n      } else {\n        returnMessage = ngettext(\"Ensure this value has at least %(limit_value)s character (it has %(show_value)s).\", \"Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).\", limitValue);\n      }\n      return interpolate(returnMessage, {\n        limit_value: limitValue,\n        show_value: length\n      }, true);\n    }\n  };\n}\n\nfunction maxLength(limitValue, message) {\n  return function (value) {\n    var returnMessage = '';\n    var length = $.trim(value).length;\n\n    if (length > limitValue) {\n      if (message) {\n        returnMessage = message(limitValue, length);\n      } else {\n        returnMessage = ngettext(\"Ensure this value has at most %(limit_value)s character (it has %(show_value)s).\", \"Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).\", limitValue);\n      }\n      return interpolate(returnMessage, {\n        limit_value: limitValue,\n        show_value: length\n      }, true);\n    }\n  };\n}\n\nfunction usernameMinLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Username must be at least %(limit_value)s character long.\", \"Username must be at least %(limit_value)s characters long.\", limitValue);\n  };\n  return this.minLength(settings.username_length_min, message);\n}\n\nfunction usernameMaxLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Username cannot be longer than %(limit_value)s character.\", \"Username cannot be longer than %(limit_value)s characters.\", limitValue);\n  };\n  return this.maxLength(settings.username_length_max, message);\n}\n\nfunction usernameContent() {\n  return function (value) {\n    if (!USERNAME.test($.trim(value))) {\n      return gettext(\"Username can only contain latin alphabet letters and digits.\");\n    }\n  };\n}\n\nfunction passwordMinLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Valid password must be at least %(limit_value)s character long.\", \"Valid password must be at least %(limit_value)s characters long.\", limitValue);\n  };\n  return this.minLength(settings.password_length_min, message);\n}\n\n},{}]},{},[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]);\n"],"sourceRoot":"/source/"}
+{"version":3,"sources":["misago.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","timeout","setTimeout","len","run","clearTimeout","Item","fun","array","this","noop","process","nextTick","args","Array","arguments","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","cwd","chdir","dir","umask",2,"global","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","value","Misago","undefined","_orderedList","_orderedList2","_initializers","_context","initializer","item","after","before","context","_this","initOrder","orderedValues","forEach","hasOwnProperty","fallback","has","misago","self","window","../../../../documents/misago/frontend/src/utils/ordered-list",3,"_ajax2","init","_index2","get","_index","_ajax","addInitializer","../../../../../documents/misago/frontend/src/index","../../../../../documents/misago/frontend/src/services/ajax",4,"_mountComponent2","_reactRedux","connect","_authMessage","select","_authMessage2","_mountComponent","../../../../../documents/misago/frontend/src/components/auth-message","../../../../../documents/misago/frontend/src/utils/mount-component","react-redux",5,"_store2","addReducer","_auth2","assign","isAuthenticated","isAnonymous","user","_auth","initialState","_store","../../../../../documents/misago/frontend/src/reducers/auth","../../../../../documents/misago/frontend/src/services/store",6,"_localStorage2","_modal2","_modal","_localStorage","../../../../../documents/misago/frontend/src/services/auth","../../../../../documents/misago/frontend/src/services/local-storage","../../../../../documents/misago/frontend/src/services/modal",7,"_bannedPage2","_bannedPage","../../../../../documents/misago/frontend/src/utils/banned-page",8,"_captcha2","_include2","_snackbar2","_captcha","_include","_snackbar","../../../../../documents/misago/frontend/src/services/captcha","../../../../../documents/misago/frontend/src/services/include","../../../../../documents/misago/frontend/src/services/snackbar",9,10,11,"element","document","getElementById","_mobileNavbarDropdown2","_mobileNavbarDropdown","../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown",12,13,"_moment2","locale","$","attr","_moment","moment",14,"_routedComponent2","root","component","_root","Options","paths","_routedComponent","../../../../../documents/misago/frontend/src/components/options/root","../../../../../documents/misago/frontend/src/utils/routed-component",15,"_requestActivationLink2","_requestActivationLink","../../../../../documents/misago/frontend/src/components/request-activation-link",16,"_requestPasswordReset2","_requestPasswordReset","../../../../../documents/misago/frontend/src/components/request-password-reset",17,"_resetPasswordForm2","_resetPasswordForm","../../../../../documents/misago/frontend/src/components/reset-password-form",18,"Snackbar","../../../../../documents/misago/frontend/src/components/snackbar",19,"../../../../../documents/misago/frontend/src/reducers/snackbar",20,21,22,"_tick2","_tick","../../../../../documents/misago/frontend/src/reducers/tick",23,"setInterval","dispatch","doTick","TICK_PERIOD",24,"UserMenu","CompactUserMenu","../../../../../documents/misago/frontend/src/components/user-menu/root",25,"_usernameHistory2","_usernameHistory","../../../../../documents/misago/frontend/src/reducers/username-history",26,"_zxcvbn2","_zxcvbn","../../../../../documents/misago/frontend/src/services/zxcvbn",27,"isUndefinedOrNull","isBuffer","x","copy","slice","objEquiv","b","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","sort","actual","expected","Date","getTime","strict","./lib/is_arguments.js","./lib/keys.js",28,"supported","object","toString","unsupported","propertyIsEnumerable","supportsArgumentsClass",29,"shim","keys",30,"PUSH","REPLACE","POP",31,"loopAsync","turns","work","callback","done","isDone","next","currentTurn",32,"createKey","KeyPrefix","saveState","state","sessionStorage","setItem","JSON","stringify","error","SecurityError","NODE_ENV","_warning2","QuotaExceededError","readState","json","getItem","parse","_warning","_process","warning",33,"addEventListener","node","event","listener","attachEvent","removeEventListener","detachEvent","getHashPath","location","href","split","replaceHashPath","path","replace","pathname","search","getWindowPath","hash","go","history","getUserConfirmation","message","confirm","supportsHistory","ua","navigator","userAgent","indexOf","supportsGoWithoutReloadUsingHash",34,"canUseDOM","createElement",35,"createBrowserHistory","getCurrentLocation","historyState","_DOMUtils","_historyState","_DOMStateStorage","isSupported","replaceState","_extends","_parsePath2","createLocation","startPopStateListener","_ref","popStateListener","transitionTo","finishTransition","basename","action","_Actions","useRefresh","pushState","listenBefore","listenerCount","stopPopStateListener","unlisten","listen","registerTransitionHook","hook","unregisterTransitionHook","options","_ExecutionEnvironment","_invariant2","forceRefresh","_createDOMHistory2","source","_invariant","_createDOMHistory","_parsePath","./Actions","./DOMStateStorage","./DOMUtils","./ExecutionEnvironment","./createDOMHistory","./parsePath","invariant",36,"createDOMHistory","_createHistory2","_createHistory","./createHistory",37,"createRandomKey","Math","random","substr","locationsAreEqual","_deepEqual2","createHistory","transitionHooks","filter","getCurrent","pendingLocation","allKeys","updateLocation","newLocation","current","changeListeners","_location","confirmTransitionTo","_AsyncUtils","index","_runTransitionHook2","result","ok","nextLocation","prevPath","createPath","nextPath","prevIndex","nextIndex","goBack","goForward","keyLength","createHref","_createLocation3","setState","updateLocationState","DefaultKeyLength","_deprecate2","_deepEqual","_createLocation2","_runTransitionHook","_deprecate","./AsyncUtils","./createLocation","./deprecate","./runTransitionHook","deep-equal",38,"_fourthArg",39,"deprecate","fn",40,"extractPath","string","match","substring",41,"parsePath","_extractPath2","hashIndex","searchIndex","_extractPath","./extractPath",42,"runTransitionHook",43,"condition","format","c","d","argIndex","framesToPop",44,45,"_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","auth","signedIn","signedOut","_react","_react2","_class","_React$Component","getPrototypeOf","reload","interpolate","gettext","username","className","getClassName","getMessage","type","onClick","refresh","Component","react",46,"BASE_URL","size","url","id","avatar_hash","src","getSrc",47,"html","dangerouslySetInnerHTML","__html","plain","expires","isAfter","expires_on","fromNow","getReasonMessage","getExpirationMessage",48,"_loader","_loader2","Button","disabled","loading","children","defaultProps","./loader",49,"_avatar","_button","_button2","cropAvatar","isLoading","avatarType","upload","cropit","post","api_url","avatar","crop","offset","zoom","then","data","onComplete","success","detail","rejection","status","showError","crop_tmp","crop_org","secret","getAvatarSecret","getAvatarHash","join","_this2","width","getAvatarSize","height","imageState","getImagePath","onImageLoaded","zoomLevel","imageSize","displayedWidth","offsetX","y","displayedHeight","offsetY","showIndex","../../services/ajax","../../services/snackbar","../avatar","../button",50,"Gallery","GalleryItem","_batch","_batch2","_Object$getPrototypeO","_temp","_ret","_len","_key","image","selection","_React$Component2","_this3","images","map","row","_React$Component3","_this4","save","response","_this5","galleries","../../index","../../utils/batch",51,"_avatar2","setGravatar","callApi","setGenerated","gravatar","showCrop","showUpload","showGallery","getAvatarPreview","getGravatarButton","getCropButton","getUploadButton","getGalleryButton","../loader",52,"ChangeAvatarError","_crop","_crop2","_upload","_upload2","_gallery","_gallery2","_modalLoader","_modalLoader2","_users","reason","getErrorReason","completeFlow","avatarHash","updateAvatar","role","data-dismiss","aria-label","aria-hidden","getBody","../../reducers/users","../../services/store","../modal-loader","./crop","./gallery","./index","./upload",53,"_fileSize","_fileSize2","pickFile","click","uploadFile","files","validationError","validateFile","preview","URL","createObjectURL","progress","FormData","append","uploaded","info","limit","filesize","invalidTypeMsg","allowed_mime_types","extensionFound","loweredFilename","toLowerCase","allowed_extensions","extension","extensions","getUploadRequirements","aria-valuenow","aria-valuemin","aria-valuemax","style","getUploadProgressLabel","onChange","getUploadProgress","renderCrop","renderUpload","../../utils/file-size",54,"validation","isValidated","helpText","labelClass","htmlFor","label","controlClass","getFeedbackIcon","getFeedbackDescription","getFeedback","getHelpText","extra",55,"_validators","validateRequired","required","bindInput","newState","formErrors","errors","validateField","handleSubmit","preventDefault","clean","promise","send","handleSuccess","handleError","validators","optional","validatedFields","fieldErrors","validate","field","requiredError","../utils/validators",56,"isActive","activeClassName",57,58,59,"_interopRequireWildcard","newObj","UsernameHistory","_random","changed_by","absolute_url","changed_by_username","changes","renderUserAvatar","renderUsername","old_username","new_username","changed_on","range","isLoaded","renderHistory","renderEmptyHistory","renderHistoryPreview","Promise","all","dehydrate","results","../../reducers/username-history","../../utils/random",60,"_form","_form2","_formGroup","_formGroup2","_select","_select2","_yesNoSwitch","_yesNoSwitch2","_Form","is_hiding_presence","limits_private_thread_invites_to","subscribe_to_started_threads","subscribe_to_replied_threads","privateThreadInvitesChoices","icon","subscribeToChoices","patchUser","apiError","onSubmit","for","iconOn","iconOff","labelOn","labelOff","choices","../../reducers/auth","../form","../form-group","../select","../yes-no-switch",61,"CompactNav","SideNav","_reactRouter","_li","_li2","option","Link","to","../li","react-router",62,"store","tick","username-history","_forumOptions2","_changeUsername2","_signInCredentials2","_navs","_forumOptions","_changeUsername","_signInCredentials","toggleNav","dropdown","aria-haspopup","aria-expanded","getCompactNavClassName","./change-username","./forum-options","./navs","./sign-in-credentials",63,64,"LABELS","STYLES","_score","_password","_inputs","password","inputs","cacheStale","trim","scorePassword","score","getScore","../services/zxcvbn",65,"_register","_register2","showRegisterModal","account_activation","show","load","../services/captcha","../services/modal","../services/snackbar","./register.js",66,"RegisterComplete","RegisterForm","_passwordStrength","_passwordStrength2","email","captcha","usernameContent","usernameMinLength","usernameMaxLength","passwordMinLength","validator","isValid","apiResponse","ban","hide","display","aria-describedby","form","getLegalFootNote","activation","getLead","getSubscript","completeRegistration","signIn","complete","../index","../services/ajax","../services/auth","../utils/banned-page","./button","./form","./form-group","./password-strength",67,"LinkSent","RequestLinkForm","placeholder","reset",68,"AccountInactivePage","RequestResetForm","_reactDom","_reactDom2","showInactivePage","getActivateButton","render","react-dom",69,"PasswordChangedPage","ResetPasswordForm","_signIn","_signIn2","showSignIn","softSignOut","remove","./sign-in.js",70,"change","choice","getChoice","data-toggle","getIcon","getLabel",71,"showActivation","find","val","getCsrfToken","submit","getActivationButton",72,"snackbar","TYPES_CLASSES","snackbarClass","isVisible","getSnackbarClass",73,"CompactGuestNav","GuestNav","GuestMenu","_registerButton","_registerButton2","showSignInModal","_GuestMenu","showGuestMenu","../../services/mobile-navbar-dropdown","../../services/modal","../register-button","../sign-in.js",74,"_guestNav","_userNav","UserNav","CompactUserNav","./guest-nav","./user-nav",75,"selectUserMenu","_root2","decision","changeAvatar","logout","showConnected","showUserMenu","../change-avatar/root",76,"toggle",77,"./utils/ordered-list",78,"patch","PATCH_USER","SIGN_IN","signOut","soft","SIGN_OUT","UPDATE_AVATAR","userId","_newState","./users",79,"showSnackbar","SHOW_SNACKBAR","messageType","hideSnackbar","HIDE_SNACKBAR",80,"TICK",81,"items","DEHYDRATE_RESULT",82,83,"Ajax","_cookieName","_csrfToken","cookieName","cookie","cookieRegex","RegExp","method","resolve","reject","xhr","headers","X-CSRFToken","contentType","dataType","jqXHR","responseJSON","statusText","ajax","params","param","request","processData","XMLHttpRequest","evt","lengthComputable","round","loaded","total",84,"Auth","local","modal","_local","syncSession","watchState","getState","set","watch","../reducers/auth",85,"Captcha","ReCaptcha","ReCaptchaComponent","QACaptcha","NoCaptcha","BaseCaptcha","include","_BaseCaptcha","_BaseCaptcha2","question","help_text","kwargs","grecaptcha","sitekey","siteKey","_BaseCaptcha3","wait","recaptcha_site_key","captcha_type","../components/form-group",86,"Include","staticUrl","_staticUrl","_included","script","remote","cache",87,"storage","localStorage","LocalStorage","prefix","_prefix","_watchers","newValueJson","newValue","watcher","oldValue","itemString",88,"MobileNavbarDropdown","_element","_component","addClass","removeClass","../utils/mount-component",89,"Modal","unmountComponentAtNode",90,"HIDE_ANIMATION_LENGTH","MESSAGE_SHOW_LENGTH","_timeout","alert","../reducers/snackbar",91,"StoreWrapper","_redux","_reducers","_initialState","reducer","createStore","combineReducers","redux",92,"Zxcvbn","zxcvbn","_loadingPromise","_loadedPromise",93,"changeState","Provider","getStore","RedrawedBannedPage","forumName","forum_name","../components/banned-page","../services/store",94,"list","rowWidth","padding","rows",95,"bytes",96,"rootElementId","connected","rootElement",97,"OrderedList","isOrdered","_items","order","values","values_only","_order","unordered","insertItem","insertAt","ordering","ordered","splice","iterations",98,"int","min","max","floor",99,"routes","childRoutes","onEnter","nextState","Router","_createBrowserHistory","_createBrowserHistory2","history/lib/createBrowserHistory",100,"EMAIL","test","minLength","limitValue","returnMessage","ngettext","limit_value","show_value","maxLength","settings","username_length_min","username_length_max","USERNAME","password_length_min"],"mappings":"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","file":"misago.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\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 = setTimeout(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    clearTimeout(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        setTimeout(drainQueue, 0);\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;\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},{}],2:[function(require,module,exports){\n(function (global){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Misago = undefined;\n\nvar _orderedList = require('../../../../documents/misago/frontend/src/utils/ordered-list');\n\nvar _orderedList2 = _interopRequireDefault(_orderedList);\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\nvar Misago = exports.Misago = function () {\n  function Misago() {\n    _classCallCheck(this, Misago);\n\n    this._initializers = [];\n    this._context = {};\n  }\n\n  _createClass(Misago, [{\n    key: 'addInitializer',\n    value: function addInitializer(initializer) {\n      this._initializers.push({\n        key: initializer.name,\n\n        item: initializer.initializer,\n\n        after: initializer.after,\n        before: initializer.before\n      });\n    }\n  }, {\n    key: 'init',\n    value: function init(context) {\n      var _this = this;\n\n      this._context = context;\n\n      var initOrder = new _orderedList2.default(this._initializers).orderedValues();\n      initOrder.forEach(function (initializer) {\n        initializer(_this);\n      });\n    }\n\n    // context accessors\n\n  }, {\n    key: 'has',\n    value: function has(key) {\n      return this._context.hasOwnProperty(key);\n    }\n  }, {\n    key: 'get',\n    value: function get(key, fallback) {\n      if (this.has(key)) {\n        return this._context[key];\n      } else {\n        return fallback || undefined;\n      }\n    }\n  }]);\n\n  return Misago;\n}();\n\n// create  singleton\n\nvar misago = new Misago();\n\n// expose it globally\nglobal.misago = misago;\n\n// and export it for tests and stuff\nexports.default = misago;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../../../../documents/misago/frontend/src/utils/ordered-list\":97}],3:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../../documents/misago/frontend/src/services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _ajax2.default.init(_index2.default.get('CSRF_COOKIE_NAME'));\n}\n\n_index2.default.addInitializer({\n  name: 'ajax',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/ajax\":83}],4:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _reactRedux = require('react-redux');\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _authMessage = require('../../../../../documents/misago/frontend/src/components/auth-message');\n\nvar _authMessage2 = _interopRequireDefault(_authMessage);\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  (0, _mountComponent2.default)((0, _reactRedux.connect)(_authMessage.select)(_authMessage2.default), 'auth-message-mount');\n}\n\n_index2.default.addInitializer({\n  name: 'component:auth-message',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/auth-message\":45,\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/utils/mount-component\":96,\"react-redux\":\"react-redux\"}],5:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../../../../../documents/misago/frontend/src/reducers/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  _store2.default.addReducer('auth', _auth2.default, Object.assign({\n    'isAuthenticated': context.get('isAuthenticated'),\n    'isAnonymous': !context.get('isAuthenticated'),\n\n    'user': context.get('user')\n  }, _auth.initialState));\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:auth',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/reducers/auth\":78,\"../../../../../documents/misago/frontend/src/services/store\":91}],6:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../../../../../documents/misago/frontend/src/services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _modal = require('../../../../../documents/misago/frontend/src/services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _localStorage = require('../../../../../documents/misago/frontend/src/services/local-storage');\n\nvar _localStorage2 = _interopRequireDefault(_localStorage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _auth2.default.init(_store2.default, _localStorage2.default, _modal2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'auth',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/auth\":84,\"../../../../../documents/misago/frontend/src/services/local-storage\":87,\"../../../../../documents/misago/frontend/src/services/modal\":89,\"../../../../../documents/misago/frontend/src/services/store\":91}],7:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bannedPage = require('../../../../../documents/misago/frontend/src/utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.get('BAN_MESSAGE')) {\n    (0, _bannedPage2.default)(context.get('BAN_MESSAGE'), false);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:baned-page',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/utils/banned-page\":93}],8:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../../documents/misago/frontend/src/services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _captcha = require('../../../../../documents/misago/frontend/src/services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _include = require('../../../../../documents/misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _snackbar = require('../../../../../documents/misago/frontend/src/services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  _captcha2.default.init(context, _ajax2.default, _include2.default, _snackbar2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'captcha',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/ajax\":83,\"../../../../../documents/misago/frontend/src/services/captcha\":85,\"../../../../../documents/misago/frontend/src/services/include\":86,\"../../../../../documents/misago/frontend/src/services/snackbar\":90}],9:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../../../../../documents/misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  _include2.default.init(context.get('STATIC_URL'));\n}\n\n_index2.default.addInitializer({\n  name: 'include',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/include\":86}],10:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _localStorage = require('../../../../../documents/misago/frontend/src/services/local-storage');\n\nvar _localStorage2 = _interopRequireDefault(_localStorage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _localStorage2.default.init('misago_');\n}\n\n_index2.default.addInitializer({\n  name: 'local-storage',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/local-storage\":87}],11:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown');\n\nvar _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  var element = document.getElementById('mobile-navbar-dropdown-mount');\n  if (element) {\n    _mobileNavbarDropdown2.default.init(element);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'dropdown',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown\":88}],12:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _modal = require('../../../../../documents/misago/frontend/src/services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  var element = document.getElementById('modal-mount');\n  if (element) {\n    _modal2.default.init(element);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'modal',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/modal\":89}],13:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _moment2.default.locale($('html').attr('lang'));\n}\n\n_index2.default.addInitializer({\n  name: 'moment',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"moment\":\"moment\"}],14:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _root = require('../../../../../documents/misago/frontend/src/components/options/root');\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _routedComponent = require('../../../../../documents/misago/frontend/src/utils/routed-component');\n\nvar _routedComponent2 = _interopRequireDefault(_routedComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.get('USER_OPTIONS')) {\n    (0, _routedComponent2.default)({\n      root: _index2.default.get('USERCP_URL'),\n      component: _root.Options,\n      paths: (0, _root.paths)(_store2.default)\n    });\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:options',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/options/root\":62,\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/store\":91,\"../../../../../documents/misago/frontend/src/utils/routed-component\":99}],15:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestActivationLink = require('../../../../../documents/misago/frontend/src/components/request-activation-link');\n\nvar _requestActivationLink2 = _interopRequireDefault(_requestActivationLink);\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  if (document.getElementById('request-activation-link-mount')) {\n    (0, _mountComponent2.default)(_requestActivationLink2.default, 'request-activation-link-mount', false);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:request-activation-link',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/request-activation-link\":67,\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/utils/mount-component\":96}],16:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestPasswordReset = require('../../../../../documents/misago/frontend/src/components/request-password-reset');\n\nvar _requestPasswordReset2 = _interopRequireDefault(_requestPasswordReset);\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  if (document.getElementById('request-password-reset-mount')) {\n    (0, _mountComponent2.default)(_requestPasswordReset2.default, 'request-password-reset-mount', false);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:request-password-reset',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/request-password-reset\":68,\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/utils/mount-component\":96}],17:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _resetPasswordForm = require('../../../../../documents/misago/frontend/src/components/reset-password-form');\n\nvar _resetPasswordForm2 = _interopRequireDefault(_resetPasswordForm);\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  if (document.getElementById('reset-password-form-mount')) {\n    (0, _mountComponent2.default)(_resetPasswordForm2.default, 'reset-password-form-mount', false);\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:reset-password-form',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/reset-password-form\":69,\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/utils/mount-component\":96}],18:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _reactRedux = require('react-redux');\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../documents/misago/frontend/src/components/snackbar');\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  (0, _mountComponent2.default)((0, _reactRedux.connect)(_snackbar.select)(_snackbar.Snackbar), 'snackbar-mount');\n}\n\n_index2.default.addInitializer({\n  name: 'component:snackbar',\n  initializer: initializer,\n  after: 'snackbar'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/snackbar\":72,\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/utils/mount-component\":96,\"react-redux\":\"react-redux\"}],19:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../documents/misago/frontend/src/reducers/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.addReducer('snackbar', _snackbar2.default, _snackbar.initialState);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:snackbar',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/reducers/snackbar\":79,\"../../../../../documents/misago/frontend/src/services/store\":91}],20:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../documents/misago/frontend/src/services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _snackbar2.default.init(_store2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'snackbar',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/snackbar\":90,\"../../../../../documents/misago/frontend/src/services/store\":91}],21:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.init();\n}\n\n_index2.default.addInitializer({\n  name: 'store',\n  initializer: initializer,\n  before: '_end'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/store\":91}],22:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../../../../../documents/misago/frontend/src/reducers/tick');\n\nvar _tick2 = _interopRequireDefault(_tick);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.addReducer('tick', _tick2.default, _tick.initialState);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:tick',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/reducers/tick\":80,\"../../../../../documents/misago/frontend/src/services/store\":91}],23:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../../../../../documents/misago/frontend/src/reducers/tick');\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TICK_PERIOD = 50 * 1000; //do the tick every 50s\n\nfunction initializer() {\n  window.setInterval(function () {\n    _store2.default.dispatch((0, _tick.doTick)());\n  }, TICK_PERIOD);\n}\n\n_index2.default.addInitializer({\n  name: 'tick-start',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/reducers/tick\":80,\"../../../../../documents/misago/frontend/src/services/store\":91}],24:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _reactRedux = require('react-redux');\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _root = require('../../../../../documents/misago/frontend/src/components/user-menu/root');\n\nvar _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  (0, _mountComponent2.default)((0, _reactRedux.connect)(_root.select)(_root.UserMenu), 'user-menu-mount');\n  (0, _mountComponent2.default)((0, _reactRedux.connect)(_root.select)(_root.CompactUserMenu), 'user-menu-compact-mount');\n}\n\n_index2.default.addInitializer({\n  name: 'component:user-menu',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/components/user-menu/root\":74,\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/utils/mount-component\":96,\"react-redux\":\"react-redux\"}],25:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory = require('../../../../../documents/misago/frontend/src/reducers/username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _store = require('../../../../../documents/misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.addReducer('username-history', _usernameHistory2.default, []);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:username-history',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/reducers/username-history\":81,\"../../../../../documents/misago/frontend/src/services/store\":91}],26:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../documents/misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../../../../../documents/misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _zxcvbn = require('../../../../../documents/misago/frontend/src/services/zxcvbn');\n\nvar _zxcvbn2 = _interopRequireDefault(_zxcvbn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _zxcvbn2.default.init(_include2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'zxcvbn',\n  initializer: initializer\n});\n\n},{\"../../../../../documents/misago/frontend/src/index\":77,\"../../../../../documents/misago/frontend/src/services/include\":86,\"../../../../../documents/misago/frontend/src/services/zxcvbn\":92}],27:[function(require,module,exports){\nvar pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n},{\"./lib/is_arguments.js\":28,\"./lib/keys.js\":29}],28:[function(require,module,exports){\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n},{}],29:[function(require,module,exports){\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n},{}],30:[function(require,module,exports){\n/**\n * Indicates that navigation was caused by a call to history.push.\n */\n'use strict';\n\nexports.__esModule = true;\nvar PUSH = 'PUSH';\n\nexports.PUSH = PUSH;\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = 'REPLACE';\n\nexports.REPLACE = REPLACE;\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = 'POP';\n\nexports.POP = POP;\nexports['default'] = {\n  PUSH: PUSH,\n  REPLACE: REPLACE,\n  POP: POP\n};\n},{}],31:[function(require,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nexports.loopAsync = loopAsync;\n\nfunction loopAsync(turns, work, callback) {\n  var currentTurn = 0;\n  var isDone = false;\n\n  function done() {\n    isDone = true;\n    callback.apply(this, arguments);\n  }\n\n  function next() {\n    if (isDone) return;\n\n    if (currentTurn < turns) {\n      work.call(this, currentTurn++, next, done);\n    } else {\n      done.apply(this, arguments);\n    }\n  }\n\n  next();\n}\n},{}],32:[function(require,module,exports){\n(function (process){\n/*eslint-disable no-empty */\n'use strict';\n\nexports.__esModule = true;\nexports.saveState = saveState;\nexports.readState = readState;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar KeyPrefix = '@@History/';\nvar QuotaExceededError = 'QuotaExceededError';\nvar SecurityError = 'SecurityError';\n\nfunction createKey(key) {\n  return KeyPrefix + key;\n}\n\nfunction saveState(key, state) {\n  try {\n    window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;\n\n      return;\n    }\n\n    if (error.name === QuotaExceededError && window.sessionStorage.length === 0) {\n      // Safari \"private mode\" throws QuotaExceededError.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;\n\n      return;\n    }\n\n    throw error;\n  }\n}\n\nfunction readState(key) {\n  var json = undefined;\n  try {\n    json = window.sessionStorage.getItem(createKey(key));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;\n\n      return null;\n    }\n  }\n\n  if (json) {\n    try {\n      return JSON.parse(json);\n    } catch (error) {\n      // Ignore invalid JSON.\n    }\n  }\n\n  return null;\n}\n}).call(this,require('_process'))\n},{\"_process\":1,\"warning\":44}],33:[function(require,module,exports){\n'use strict';\n\nexports.__esModule = true;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getHashPath = getHashPath;\nexports.replaceHashPath = replaceHashPath;\nexports.getWindowPath = getWindowPath;\nexports.go = go;\nexports.getUserConfirmation = getUserConfirmation;\nexports.supportsHistory = supportsHistory;\nexports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;\n\nfunction addEventListener(node, event, listener) {\n  if (node.addEventListener) {\n    node.addEventListener(event, listener, false);\n  } else {\n    node.attachEvent('on' + event, listener);\n  }\n}\n\nfunction removeEventListener(node, event, listener) {\n  if (node.removeEventListener) {\n    node.removeEventListener(event, listener, false);\n  } else {\n    node.detachEvent('on' + event, listener);\n  }\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  return window.location.href.split('#')[1] || '';\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(window.location.pathname + window.location.search + '#' + path);\n}\n\nfunction getWindowPath() {\n  return window.location.pathname + window.location.search + window.location.hash;\n}\n\nfunction go(n) {\n  if (n) window.history.go(n);\n}\n\nfunction getUserConfirmation(message, callback) {\n  callback(window.confirm(message));\n}\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n    return false;\n  }\n  // FIXME: Work around our browser history not working correctly on Chrome\n  // iOS: https://github.com/rackt/react-router/issues/2565\n  if (ua.indexOf('CriOS') !== -1) {\n    return false;\n  }\n  return window.history && 'pushState' in window.history;\n}\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  var ua = navigator.userAgent;\n  return ua.indexOf('Firefox') === -1;\n}\n},{}],34:[function(require,module,exports){\n'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexports.canUseDOM = canUseDOM;\n},{}],35:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\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\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _createDOMHistory = require('./createDOMHistory');\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve URLs.\n */\nfunction createBrowserHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Browser history needs a DOM') : _invariant2['default'](false) : undefined;\n\n  var forceRefresh = options.forceRefresh;\n\n  var isSupported = _DOMUtils.supportsHistory();\n  var useRefresh = !isSupported || forceRefresh;\n\n  function getCurrentLocation(historyState) {\n    historyState = historyState || window.history.state || {};\n\n    var path = _DOMUtils.getWindowPath();\n    var _historyState = historyState;\n    var key = _historyState.key;\n\n    var state = undefined;\n    if (key) {\n      state = _DOMStateStorage.readState(key);\n    } else {\n      state = null;\n      key = history.createKey();\n\n      if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null, path);\n    }\n\n    var location = _parsePath2['default'](path);\n\n    return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n  }\n\n  function startPopStateListener(_ref) {\n    var transitionTo = _ref.transitionTo;\n\n    function popStateListener(event) {\n      if (event.state === undefined) return; // Ignore extraneous popstate events in WebKit.\n\n      transitionTo(getCurrentLocation(event.state));\n    }\n\n    _DOMUtils.addEventListener(window, 'popstate', popStateListener);\n\n    return function () {\n      _DOMUtils.removeEventListener(window, 'popstate', popStateListener);\n    };\n  }\n\n  function finishTransition(location) {\n    var basename = location.basename;\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n    var state = location.state;\n    var action = location.action;\n    var key = location.key;\n\n    if (action === _Actions.POP) return; // Nothing to do.\n\n    _DOMStateStorage.saveState(key, state);\n\n    var path = (basename || '') + pathname + search + hash;\n    var historyState = {\n      key: key\n    };\n\n    if (action === _Actions.PUSH) {\n      if (useRefresh) {\n        window.location.href = path;\n        return false; // Prevent location update.\n      } else {\n          window.history.pushState(historyState, null, path);\n        }\n    } else {\n      // REPLACE\n      if (useRefresh) {\n        window.location.replace(path);\n        return false; // Prevent location update.\n      } else {\n          window.history.replaceState(historyState, null, path);\n        }\n    }\n  }\n\n  var history = _createDOMHistory2['default'](_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    finishTransition: finishTransition,\n    saveState: _DOMStateStorage.saveState\n  }));\n\n  var listenerCount = 0,\n      stopPopStateListener = undefined;\n\n  function listenBefore(listener) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    var unlisten = history.listenBefore(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopPopStateListener();\n    };\n  }\n\n  function listen(listener) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    var unlisten = history.listen(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopPopStateListener();\n    };\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    history.registerTransitionHook(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    history.unregisterTransitionHook(hook);\n\n    if (--listenerCount === 0) stopPopStateListener();\n  }\n\n  return _extends({}, history, {\n    listenBefore: listenBefore,\n    listen: listen,\n    registerTransitionHook: registerTransitionHook,\n    unregisterTransitionHook: unregisterTransitionHook\n  });\n}\n\nexports['default'] = createBrowserHistory;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./Actions\":30,\"./DOMStateStorage\":32,\"./DOMUtils\":33,\"./ExecutionEnvironment\":34,\"./createDOMHistory\":36,\"./parsePath\":41,\"_process\":1,\"invariant\":43}],36:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\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\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createDOMHistory(options) {\n  var history = _createHistory2['default'](_extends({\n    getUserConfirmation: _DOMUtils.getUserConfirmation\n  }, options, {\n    go: _DOMUtils.go\n  }));\n\n  function listen(listener) {\n    !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;\n\n    return history.listen(listener);\n  }\n\n  return _extends({}, history, {\n    listen: listen\n  });\n}\n\nexports['default'] = createDOMHistory;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./DOMUtils\":33,\"./ExecutionEnvironment\":34,\"./createHistory\":37,\"_process\":1,\"invariant\":43}],37:[function(require,module,exports){\n//import warning from 'warning'\n'use strict';\n\nexports.__esModule = true;\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\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _deepEqual = require('deep-equal');\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _Actions = require('./Actions');\n\nvar _createLocation2 = require('./createLocation');\n\nvar _createLocation3 = _interopRequireDefault(_createLocation2);\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction createRandomKey(length) {\n  return Math.random().toString(36).substr(2, length);\n}\n\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search &&\n  //a.action === b.action && // Different action !== location change.\n  a.key === b.key && _deepEqual2['default'](a.state, b.state);\n}\n\nvar DefaultKeyLength = 6;\n\nfunction createHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n  var getCurrentLocation = options.getCurrentLocation;\n  var finishTransition = options.finishTransition;\n  var saveState = options.saveState;\n  var go = options.go;\n  var keyLength = options.keyLength;\n  var getUserConfirmation = options.getUserConfirmation;\n\n  if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;\n\n  var transitionHooks = [];\n\n  function listenBefore(hook) {\n    transitionHooks.push(hook);\n\n    return function () {\n      transitionHooks = transitionHooks.filter(function (item) {\n        return item !== hook;\n      });\n    };\n  }\n\n  var allKeys = [];\n  var changeListeners = [];\n  var location = undefined;\n\n  function getCurrent() {\n    if (pendingLocation && pendingLocation.action === _Actions.POP) {\n      return allKeys.indexOf(pendingLocation.key);\n    } else if (location) {\n      return allKeys.indexOf(location.key);\n    } else {\n      return -1;\n    }\n  }\n\n  function updateLocation(newLocation) {\n    var current = getCurrent();\n\n    location = newLocation;\n\n    if (location.action === _Actions.PUSH) {\n      allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);\n    } else if (location.action === _Actions.REPLACE) {\n      allKeys[current] = location.key;\n    }\n\n    changeListeners.forEach(function (listener) {\n      listener(location);\n    });\n  }\n\n  function listen(listener) {\n    changeListeners.push(listener);\n\n    if (location) {\n      listener(location);\n    } else {\n      var _location = getCurrentLocation();\n      allKeys = [_location.key];\n      updateLocation(_location);\n    }\n\n    return function () {\n      changeListeners = changeListeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function confirmTransitionTo(location, callback) {\n    _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {\n      _runTransitionHook2['default'](transitionHooks[index], location, function (result) {\n        if (result != null) {\n          done(result);\n        } else {\n          next();\n        }\n      });\n    }, function (message) {\n      if (getUserConfirmation && typeof message === 'string') {\n        getUserConfirmation(message, function (ok) {\n          callback(ok !== false);\n        });\n      } else {\n        callback(message !== false);\n      }\n    });\n  }\n\n  var pendingLocation = undefined;\n\n  function transitionTo(nextLocation) {\n    if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.\n\n    pendingLocation = nextLocation;\n\n    confirmTransitionTo(nextLocation, function (ok) {\n      if (pendingLocation !== nextLocation) return; // Transition was interrupted.\n\n      if (ok) {\n        // treat PUSH to current path like REPLACE to be consistent with browsers\n        if (nextLocation.action === _Actions.PUSH) {\n          var prevPath = createPath(location);\n          var nextPath = createPath(nextLocation);\n\n          if (nextPath === prevPath) nextLocation.action = _Actions.REPLACE;\n        }\n\n        if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);\n      } else if (location && nextLocation.action === _Actions.POP) {\n        var prevIndex = allKeys.indexOf(location.key);\n        var nextIndex = allKeys.indexOf(nextLocation.key);\n\n        if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.\n      }\n    });\n  }\n\n  function push(location) {\n    transitionTo(createLocation(location, _Actions.PUSH, createKey()));\n  }\n\n  function replace(location) {\n    transitionTo(createLocation(location, _Actions.REPLACE, createKey()));\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function createKey() {\n    return createRandomKey(keyLength);\n  }\n\n  function createPath(location) {\n    if (location == null || typeof location === 'string') return location;\n\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n\n    var result = pathname;\n\n    if (search) result += search;\n\n    if (hash) result += hash;\n\n    return result;\n  }\n\n  function createHref(location) {\n    return createPath(location);\n  }\n\n  function createLocation(location, action) {\n    var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n\n    if (typeof action === 'object') {\n      //warning(\n      //  false,\n      //  'The state (2nd) argument to history.createLocation is deprecated; use a ' +\n      //  'location descriptor instead'\n      //)\n\n      if (typeof location === 'string') location = _parsePath2['default'](location);\n\n      location = _extends({}, location, { state: action });\n\n      action = key;\n      key = arguments[3] || createKey();\n    }\n\n    return _createLocation3['default'](location, action, key);\n  }\n\n  // deprecated\n  function setState(state) {\n    if (location) {\n      updateLocationState(location, state);\n      updateLocation(location);\n    } else {\n      updateLocationState(getCurrentLocation(), state);\n    }\n  }\n\n  function updateLocationState(location, state) {\n    location.state = _extends({}, location.state, state);\n    saveState(location.key, location.state);\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    transitionHooks = transitionHooks.filter(function (item) {\n      return item !== hook;\n    });\n  }\n\n  // deprecated\n  function pushState(state, path) {\n    if (typeof path === 'string') path = _parsePath2['default'](path);\n\n    push(_extends({ state: state }, path));\n  }\n\n  // deprecated\n  function replaceState(state, path) {\n    if (typeof path === 'string') path = _parsePath2['default'](path);\n\n    replace(_extends({ state: state }, path));\n  }\n\n  return {\n    listenBefore: listenBefore,\n    listen: listen,\n    transitionTo: transitionTo,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    createKey: createKey,\n    createPath: createPath,\n    createHref: createHref,\n    createLocation: createLocation,\n\n    setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),\n    registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),\n    unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),\n    pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n    replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n  };\n}\n\nexports['default'] = createHistory;\nmodule.exports = exports['default'];\n},{\"./Actions\":30,\"./AsyncUtils\":31,\"./createLocation\":38,\"./deprecate\":39,\"./parsePath\":41,\"./runTransitionHook\":42,\"deep-equal\":27}],38:[function(require,module,exports){\n//import warning from 'warning'\n'use strict';\n\nexports.__esModule = true;\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\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _Actions = require('./Actions');\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nfunction createLocation() {\n  var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n  var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n  var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];\n\n  if (typeof location === 'string') location = _parsePath2['default'](location);\n\n  if (typeof action === 'object') {\n    //warning(\n    //  false,\n    //  'The state (2nd) argument to createLocation is deprecated; use a ' +\n    //  'location descriptor instead'\n    //)\n\n    location = _extends({}, location, { state: action });\n\n    action = key || _Actions.POP;\n    key = _fourthArg;\n  }\n\n  var pathname = location.pathname || '/';\n  var search = location.search || '';\n  var hash = location.hash || '';\n  var state = location.state || null;\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash,\n    state: state,\n    action: action,\n    key: key\n  };\n}\n\nexports['default'] = createLocation;\nmodule.exports = exports['default'];\n},{\"./Actions\":30,\"./parsePath\":41}],39:[function(require,module,exports){\n//import warning from 'warning'\n\n\"use strict\";\n\nexports.__esModule = true;\nfunction deprecate(fn) {\n  return fn;\n  //return function () {\n  //  warning(false, '[history] ' + message)\n  //  return fn.apply(this, arguments)\n  //}\n}\n\nexports[\"default\"] = deprecate;\nmodule.exports = exports[\"default\"];\n},{}],40:[function(require,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nfunction extractPath(string) {\n  var match = string.match(/^https?:\\/\\/[^\\/]*/);\n\n  if (match == null) return string;\n\n  return string.substring(match[0].length);\n}\n\nexports[\"default\"] = extractPath;\nmodule.exports = exports[\"default\"];\n},{}],41:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _extractPath = require('./extractPath');\n\nvar _extractPath2 = _interopRequireDefault(_extractPath);\n\nfunction parsePath(path) {\n  var pathname = _extractPath2['default'](path);\n  var search = '';\n  var hash = '';\n\n  process.env.NODE_ENV !== 'production' ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like \"%s\"', path) : undefined;\n\n  var hashIndex = pathname.indexOf('#');\n  if (hashIndex !== -1) {\n    hash = pathname.substring(hashIndex);\n    pathname = pathname.substring(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n  if (searchIndex !== -1) {\n    search = pathname.substring(searchIndex);\n    pathname = pathname.substring(0, searchIndex);\n  }\n\n  if (pathname === '') pathname = '/';\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash\n  };\n}\n\nexports['default'] = parsePath;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./extractPath\":40,\"_process\":1,\"warning\":44}],42:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction runTransitionHook(hook, location, callback) {\n  var result = hook(location, callback);\n\n  if (hook.length < 2) {\n    // Assume the hook runs synchronously and automatically\n    // call the callback with the return value.\n    callback(result);\n  } else {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](result === undefined, 'You should not \"return\" in a transition hook with a callback argument; call the callback instead') : undefined;\n  }\n}\n\nexports['default'] = runTransitionHook;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"_process\":1,\"warning\":44}],43:[function(require,module,exports){\n/**\n * Copyright 2013-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'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 invariant = function(condition, format, a, b, c, d, e, f) {\n  if (\"production\" !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { 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},{}],44:[function(require,module,exports){\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'use strict';\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 = function() {};\n\nif (\"production\" !== 'production') {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\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}\n\nmodule.exports = warning;\n\n},{}],45:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.select = select;\n\nvar _react = require(\"react\");\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: \"refresh\",\n    value: function refresh() {\n      window.location.reload();\n    }\n  }, {\n    key: \"getMessage\",\n    value: function getMessage() {\n      if (this.props.signedIn) {\n        return interpolate(gettext(\"You have signed in as %(username)s. Please refresh the page before continuing.\"), { username: this.props.signedIn.username }, true);\n      } else if (this.props.signedOut) {\n        return interpolate(gettext(\"%(username)s, you have been signed out. Please refresh the page before continuing.\"), { username: this.props.user.username }, true);\n      }\n    }\n  }, {\n    key: \"getClassName\",\n    value: function getClassName() {\n      if (this.props.signedIn || this.props.signedOut) {\n        return \"auth-message show\";\n      } else {\n        return \"auth-message\";\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"div\",\n        { className: this.getClassName() },\n        _react2.default.createElement(\n          \"div\",\n          { className: \"container\" },\n          _react2.default.createElement(\n            \"p\",\n            { className: \"lead\" },\n            this.getMessage()\n          ),\n          _react2.default.createElement(\n            \"p\",\n            null,\n            _react2.default.createElement(\n              \"button\",\n              { type: \"button\", className: \"btn btn-default\",\n                onClick: this.refresh },\n              gettext(\"Reload page\")\n            ),\n            \" \",\n            _react2.default.createElement(\n              \"span\",\n              { className: \"hidden-xs hidden-sm text-muted\" },\n              gettext(\"or press F5 key.\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(state) {\n  return {\n    user: state.auth.user,\n    signedIn: state.auth.signedIn,\n    signedOut: state.auth.signedOut\n  };\n}\n\n},{\"react\":\"react\"}],46:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\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 BASE_URL = $('base').attr('href') + 'user-avatar/';\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'getSrc',\n    value: function getSrc() {\n      var size = this.props.size || 100; // jshint ignore:line\n      var url = BASE_URL;\n\n      if (this.props.user && this.props.user.id) {\n        // just avatar hash, size and user id\n        url += this.props.user.avatar_hash + '/' + size + '/' + this.props.user.id + '.png';\n      } else {\n        // just append avatar size to file to produce no-avatar placeholder\n        url += size + '.png';\n      }\n\n      return url;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement('img', { src: this.getSrc(),\n        className: this.props.className || 'user-avatar',\n        title: gettext(\"User avatar\") });\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],47:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = require('react');\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'getReasonMessage',\n    value: function getReasonMessage() {\n      /* jshint ignore:start */\n      if (this.props.message.html) {\n        return _react2.default.createElement('div', { className: 'lead',\n          dangerouslySetInnerHTML: { __html: this.props.message.html } });\n      } else {\n        return _react2.default.createElement(\n          'p',\n          { className: 'lead' },\n          this.props.message.plain\n        );\n      }\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getExpirationMessage',\n    value: function getExpirationMessage() {\n      if (this.props.expires) {\n        if (this.props.expires.isAfter((0, _moment2.default)())) {\n          return interpolate(gettext(\"This ban expires %(expires_on)s.\"), { 'expires_on': this.props.expires.fromNow() }, true);\n        } else {\n          return gettext(\"This ban has expired.\");\n        }\n      } else {\n        return gettext(\"This ban is permanent.\");\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-error page-error-banned' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-panel' },\n            _react2.default.createElement(\n              'div',\n              { className: 'message-icon' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                'highlight_off'\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'message-body' },\n              this.getReasonMessage(),\n              _react2.default.createElement(\n                'p',\n                { className: 'message-footnote' },\n                this.getExpirationMessage()\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"moment\":\"moment\",\"react\":\"react\"}],48:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _loader = require('./loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\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\n// jshint ignore:line\n\nvar Button = function (_React$Component) {\n  _inherits(Button, _React$Component);\n\n  function Button() {\n    _classCallCheck(this, Button);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Button).apply(this, arguments));\n  }\n\n  _createClass(Button, [{\n    key: 'render',\n    value: function render() {\n      var className = 'btn ' + this.props.className;\n      var disabled = this.props.disabled;\n\n      if (this.props.loading) {\n        className += ' btn-loading';\n        disabled = true;\n      }\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: this.props.onClick ? 'button' : 'submit',\n          className: className,\n          disabled: disabled,\n          onClick: this.props.onClick },\n        this.props.children,\n        this.props.loading ? _react2.default.createElement(_loader2.default, null) : null\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Button;\n}(_react2.default.Component);\n\nexports.default = Button;\n\nButton.defaultProps = {\n  className: \"btn-default\",\n\n  type: \"submit\",\n\n  loading: false,\n  disabled: false,\n\n  onClick: null\n};\n\n},{\"./loader\":57,\"react\":\"react\"}],49:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar BASE_URL = $('base').attr('href') + 'user-avatar';\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.cropAvatar = function () {\n      if (_this.state.isLoading) {\n        return false;\n      }\n\n      _this.setState({\n        'isLoading': true\n      });\n\n      var avatarType = _this.props.upload ? 'crop_tmp' : 'crop_org';\n      var cropit = $('.crop-form');\n\n      _ajax2.default.post(_this.props.user.api_url.avatar, {\n        'avatar': avatarType,\n        'crop': {\n          'offset': cropit.cropit('offset'),\n          'zoom': cropit.cropit('zoom')\n        }\n      }).then(function (data) {\n        _this.props.onComplete(data.avatar_hash, data.options);\n        _snackbar2.default.success(data.detail);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this.setState({\n            'isLoading': false\n          });\n        } else {\n          _this.props.showError(rejection);\n        }\n      });\n    };\n\n    _this.state = {\n      'isLoading': false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getAvatarSize',\n    value: function getAvatarSize() {\n      if (this.props.upload) {\n        return this.props.options.crop_tmp.size;\n      } else {\n        return this.props.options.crop_org.size;\n      }\n    }\n  }, {\n    key: 'getAvatarSecret',\n    value: function getAvatarSecret() {\n      if (this.props.upload) {\n        return this.props.options.crop_tmp.secret;\n      } else {\n        return this.props.options.crop_org.secret;\n      }\n    }\n  }, {\n    key: 'getAvatarHash',\n    value: function getAvatarHash() {\n      return this.props.upload || this.props.user.avatar_hash;\n    }\n  }, {\n    key: 'getImagePath',\n    value: function getImagePath() {\n      return [BASE_URL, this.getAvatarSecret() + ':' + this.getAvatarHash(), this.props.user.id + '.png'].join('/');\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      var cropit = $('.crop-form');\n      cropit.width(this.getAvatarSize());\n\n      cropit.cropit({\n        'width': this.getAvatarSize(),\n        'height': this.getAvatarSize(),\n        'imageState': {\n          'src': this.getImagePath()\n        },\n        onImageLoaded: function onImageLoaded() {\n          if (_this2.props.upload) {\n            // center uploaded image\n            var zoomLevel = cropit.cropit('zoom');\n            var imageSize = cropit.cropit('imageSize');\n\n            // is it wider than taller?\n            if (imageSize.width > imageSize.height) {\n              var displayedWidth = imageSize.width * zoomLevel;\n              var offsetX = (displayedWidth - _this2.getAvatarSize()) / -2;\n\n              cropit.cropit('offset', {\n                'x': offsetX,\n                'y': 0\n              });\n            } else if (imageSize.width < imageSize.height) {\n              var displayedHeight = imageSize.height * zoomLevel;\n              var offsetY = (displayedHeight - _this2.getAvatarSize()) / -2;\n\n              cropit.cropit('offset', {\n                'x': 0,\n                'y': offsetY\n              });\n            }\n          } else {\n            // use preserved crop\n            var crop = _this2.props.options.crop_org.crop;\n            if (crop) {\n              cropit.cropit('zoom', crop.zoom);\n              cropit.cropit('offset', {\n                'x': crop.x,\n                'y': crop.y\n              });\n            }\n          }\n        }\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      $('.crop-form').cropit('disable');\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body modal-avatar-crop' },\n          _react2.default.createElement(\n            'div',\n            { className: 'crop-form' },\n            _react2.default.createElement('div', { className: 'cropit-image-preview' }),\n            _react2.default.createElement('input', { type: 'range', className: 'cropit-image-zoom-input' })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-6 col-md-offset-3' },\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.cropAvatar,\n                loading: this.state.isLoading,\n                className: 'btn-primary btn-block' },\n              this.props.upload ? gettext(\"Set avatar\") : gettext(\"Crop image\")\n            ),\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.props.showIndex,\n                disabled: this.state.isLoading,\n                className: 'btn-default btn-block' },\n              gettext(\"Cancel\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":83,\"../../services/snackbar\":90,\"../avatar\":46,\"../button\":48,\"react\":\"react\"}],50:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Gallery = exports.GalleryItem = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _batch = require('../../utils/batch');\n\nvar _batch2 = _interopRequireDefault(_batch);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar GalleryItem = exports.GalleryItem = function (_React$Component) {\n  _inherits(GalleryItem, _React$Component);\n\n  function GalleryItem() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, GalleryItem);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(GalleryItem)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.select = function () {\n      _this.props.select(_this.props.image);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n  /* jshint ignore:start */\n\n  _createClass(GalleryItem, [{\n    key: 'getClassName',\n\n    /* jshint ignore:end */\n\n    value: function getClassName() {\n      if (this.props.selection === this.props.image) {\n        if (this.props.disabled) {\n          return 'btn btn-avatar btn-disabled avatar-selected';\n        } else {\n          return 'btn btn-avatar avatar-selected';\n        }\n      } else if (this.props.disabled) {\n        return 'btn btn-avatar btn-disabled';\n      } else {\n        return 'btn btn-avatar';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button',\n          className: this.getClassName(),\n          disabled: this.props.disabled,\n          onClick: this.select },\n        _react2.default.createElement('img', { src: _index2.default.get('MEDIA_URL') + this.props.image })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return GalleryItem;\n}(_react2.default.Component);\n\nvar Gallery = exports.Gallery = function (_React$Component2) {\n  _inherits(Gallery, _React$Component2);\n\n  function Gallery() {\n    _classCallCheck(this, Gallery);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Gallery).apply(this, arguments));\n  }\n\n  _createClass(Gallery, [{\n    key: 'render',\n    value: function render() {\n      var _this3 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'avatars-gallery' },\n        _react2.default.createElement(\n          'h3',\n          null,\n          this.props.name\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'avatars-gallery-images' },\n          (0, _batch2.default)(this.props.images, 4, null).map(function (row, i) {\n            return _react2.default.createElement(\n              'div',\n              { className: 'row', key: i },\n              row.map(function (item, i) {\n                return _react2.default.createElement(\n                  'div',\n                  { className: 'col-xs-3', key: i },\n                  item ? _react2.default.createElement(GalleryItem, { image: item,\n                    disabled: _this3.props.disabled,\n                    select: _this3.props.select,\n                    selection: _this3.props.selection }) : _react2.default.createElement('div', { className: 'blank-avatar' })\n                );\n              })\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Gallery;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component3) {\n  _inherits(_class, _React$Component3);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this4 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this4.select = function (image) {\n      _this4.setState({\n        selection: image\n      });\n    };\n\n    _this4.save = function () {\n      if (_this4.state.isLoading) {\n        return false;\n      }\n\n      _this4.setState({\n        'isLoading': true\n      });\n\n      _ajax2.default.post(_this4.props.user.api_url.avatar, {\n        avatar: 'galleries',\n        image: _this4.state.selection\n      }).then(function (response) {\n        _this4.setState({\n          'isLoading': false\n        });\n\n        _snackbar2.default.success(response.detail);\n        _this4.props.onComplete(response.avatar_hash, response.options);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this4.setState({\n            'isLoading': false\n          });\n        } else {\n          _this4.props.showError(rejection);\n        }\n      });\n    };\n\n    _this4.state = {\n      'selection': null,\n      'isLoading': false\n    };\n    return _this4;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      var _this5 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body modal-avatar-gallery' },\n          this.props.options.galleries.map(function (item, i) {\n            return _react2.default.createElement(Gallery, { name: item.name,\n              images: item.images,\n              selection: _this5.state.selection,\n              disabled: _this5.state.isLoading,\n              select: _this5.select,\n              key: i });\n          })\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-6 col-md-offset-3' },\n              _react2.default.createElement(\n                _button2.default,\n                { onClick: this.save,\n                  loading: this.state.isLoading,\n                  disabled: !this.state.selection,\n                  className: 'btn-primary btn-block' },\n                this.state.selection ? gettext(\"Save choice\") : gettext(\"Select avatar\")\n              ),\n              _react2.default.createElement(\n                _button2.default,\n                { onClick: this.props.showIndex,\n                  disabled: this.state.isLoading,\n                  className: 'btn-default btn-block' },\n                gettext(\"Cancel\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":77,\"../../services/ajax\":83,\"../../services/snackbar\":90,\"../../utils/batch\":94,\"../button\":48,\"react\":\"react\"}],51:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _loader = require('../loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.setGravatar = function () {\n      _this.callApi('gravatar');\n    };\n\n    _this.setGenerated = function () {\n      _this.callApi('generated');\n    };\n\n    _this.state = {\n      'isLoading': false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'callApi',\n    value: function callApi(avatarType) {\n      var _this2 = this;\n\n      if (this.state.isLoading) {\n        return false;\n      }\n\n      this.setState({\n        'isLoading': true\n      });\n\n      _ajax2.default.post(this.props.user.api_url.avatar, {\n        avatar: avatarType\n      }).then(function (response) {\n        _this2.setState({\n          'isLoading': false\n        });\n\n        _snackbar2.default.success(response.detail);\n        _this2.props.onComplete(response.avatar_hash, response.options);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this2.setState({\n            'isLoading': false\n          });\n        } else {\n          _this2.props.showError(rejection);\n        }\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getGravatarButton',\n\n    /* jshint ignore:end */\n\n    value: function getGravatarButton() {\n      if (this.props.options.gravatar) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.setGravatar,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-gravatar' },\n          gettext(\"Download my Gravatar\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getCropButton',\n    value: function getCropButton() {\n      if (this.props.options.crop_org) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showCrop,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-crop' },\n          gettext(\"Re-crop uploaded image\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getUploadButton',\n    value: function getUploadButton() {\n      if (this.props.options.upload) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showUpload,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-upload' },\n          gettext(\"Upload new image\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getGalleryButton',\n    value: function getGalleryButton() {\n      if (this.props.options.galleries) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showGallery,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-gallery' },\n          gettext(\"Pick avatar from gallery\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getAvatarPreview',\n    value: function getAvatarPreview() {\n      if (this.state.isLoading) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'avatar-preview preview-loading' },\n          _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '200' }),\n          _react2.default.createElement(_loader2.default, null)\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'div',\n            { className: 'avatar-preview' },\n            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '200' })\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-index' },\n        _react2.default.createElement(\n          'div',\n          { className: 'row' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-5' },\n            this.getAvatarPreview()\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-7' },\n            this.getGravatarButton(),\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.setGenerated,\n                disabled: this.state.isLoading,\n                className: 'btn-default btn-block btn-avatar-generate' },\n              gettext(\"Generate my individual avatar\")\n            ),\n            this.getCropButton(),\n            this.getUploadButton(),\n            this.getGalleryButton()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":83,\"../../services/snackbar\":90,\"../avatar\":46,\"../button\":48,\"../loader\":57,\"react\":\"react\"}],52:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ChangeAvatarError = undefined;\nexports.select = select;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _crop = require('./crop');\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _upload = require('./upload');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _gallery = require('./gallery');\n\nvar _gallery2 = _interopRequireDefault(_gallery);\n\nvar _modalLoader = require('../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _users = require('../../reducers/users');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar ChangeAvatarError = exports.ChangeAvatarError = function (_React$Component) {\n  _inherits(ChangeAvatarError, _React$Component);\n\n  function ChangeAvatarError() {\n    _classCallCheck(this, ChangeAvatarError);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(ChangeAvatarError).apply(this, arguments));\n  }\n\n  _createClass(ChangeAvatarError, [{\n    key: 'getErrorReason',\n    value: function getErrorReason() {\n      if (this.props.reason) {\n        /* jshint ignore:start */\n        return _react2.default.createElement('p', { dangerouslySetInnerHTML: { __html: this.props.reason } });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body' },\n        _react2.default.createElement(\n          'div',\n          { className: 'message-icon' },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            'remove_circle_outline'\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'message-body' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.props.message\n          ),\n          this.getErrorReason()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return ChangeAvatarError;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this2, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this2), _this2.showError = function (error) {\n      _this2.setState({\n        error: error\n      });\n    }, _this2.showIndex = function () {\n      _this2.setState({\n        'component': _index2.default\n      });\n    }, _this2.showUpload = function () {\n      _this2.setState({\n        'component': _upload2.default\n      });\n    }, _this2.showCrop = function () {\n      _this2.setState({\n        'component': _crop2.default\n      });\n    }, _this2.showGallery = function () {\n      _this2.setState({\n        'component': _gallery2.default\n      });\n    }, _this2.completeFlow = function (avatarHash, options) {\n      _store2.default.dispatch((0, _users.updateAvatar)(_this2.props.user, avatarHash));\n\n      _this2.setState({\n        'component': _index2.default,\n        options: options\n      });\n    }, _temp), _possibleConstructorReturn(_this2, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this3 = this;\n\n      _ajax2.default.get(this.props.user.api_url.avatar).then(function (options) {\n        _this3.setState({\n          'component': _index2.default,\n          'options': options,\n          'error': null\n        });\n      }, function (rejection) {\n        _this3.showError(rejection);\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getBody',\n\n    /* jshint ignore:end */\n\n    value: function getBody() {\n      if (this.state) {\n        if (this.state.error) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(ChangeAvatarError, { message: this.state.error.detail,\n            reason: this.state.error.reason });\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(this.state.component, { options: this.state.options,\n              user: this.props.user,\n              onComplete: this.completeFlow,\n              showError: this.showError,\n              showIndex: this.showIndex,\n              showCrop: this.showCrop,\n              showUpload: this.showUpload,\n              showGallery: this.showGallery });\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_modalLoader2.default, null);\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.state && this.state.error) {\n        return \"modal-dialog modal-message modal-change-avatar\";\n      } else {\n        return \"modal-dialog modal-change-avatar\";\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getClassName(),\n          role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Change your avatar\")\n            )\n          ),\n          this.getBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(state) {\n  return {\n    'user': state.auth.user\n  };\n}\n\n},{\"../../reducers/users\":82,\"../../services/ajax\":83,\"../../services/store\":91,\"../modal-loader\":58,\"./crop\":49,\"./gallery\":50,\"./index\":51,\"./upload\":53,\"react\":\"react\"}],53:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _crop = require('./crop');\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _fileSize = require('../../utils/file-size');\n\nvar _fileSize2 = _interopRequireDefault(_fileSize);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.pickFile = function () {\n      document.getElementById('avatar-hidden-upload').click();\n    };\n\n    _this.uploadFile = function () {\n      var image = document.getElementById('avatar-hidden-upload').files[0];\n\n      var validationError = _this.validateFile(image);\n      if (validationError) {\n        _snackbar2.default.error(validationError);\n        return;\n      }\n\n      _this.setState({\n        image: image,\n        'preview': URL.createObjectURL(image),\n        'progress': 0\n      });\n\n      var data = new FormData();\n      data.append('avatar', 'upload');\n      data.append('image', image);\n\n      _ajax2.default.upload(_this.props.user.api_url.avatar, data, function (progress) {\n        _this.setState({\n          progress: progress\n        });\n      }).then(function (data) {\n        _this.setState({\n          'options': data.options,\n          'uploaded': data.detail\n        });\n        _snackbar2.default.info(gettext(\"Your image has been uploaded and you may now crop it.\"));\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this.setState({\n            'isLoading': false,\n            'image': null,\n            'progress': 0\n          });\n        } else {\n          _this.props.showError(rejection);\n        }\n      });\n    };\n\n    _this.state = {\n      'image': null,\n      'preview': null,\n      'progress': 0,\n      'uploaded': null\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'validateFile',\n    value: function validateFile(image) {\n      if (image.size > this.props.options.upload.limit) {\n        return interpolate(gettext(\"Selected file is too big. (%(filesize)s)\"), {\n          'filesize': (0, _fileSize2.default)(image.size)\n        }, true);\n      }\n\n      var invalidTypeMsg = gettext(\"Selected file type is not supported.\");\n      if (this.props.options.upload.allowed_mime_types.indexOf(image.type) === -1) {\n        return invalidTypeMsg;\n      }\n\n      var extensionFound = false;\n      var loweredFilename = image.name.toLowerCase();\n      this.props.options.upload.allowed_extensions.map(function (extension) {\n        if (loweredFilename.substr(extension.length * -1) === extension) {\n          extensionFound = true;\n        }\n      });\n\n      if (!extensionFound) {\n        return invalidTypeMsg;\n      }\n\n      return false;\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getUploadRequirements',\n\n    /* jshint ignore:end */\n\n    value: function getUploadRequirements(options) {\n      var extensions = options.allowed_extensions.map(function (extension) {\n        return extension.substr(1);\n      });\n\n      return interpolate(gettext(\"%(files)s files smaller than %(limit)s\"), {\n        'files': extensions.join(', '),\n        'limit': (0, _fileSize2.default)(options.limit)\n      }, true);\n    }\n  }, {\n    key: 'getUploadButton',\n    value: function getUploadButton() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-upload' },\n        _react2.default.createElement(\n          _button2.default,\n          { className: 'btn-pick-file',\n            onClick: this.pickFile },\n          _react2.default.createElement(\n            'div',\n            { className: 'material-icon' },\n            'input'\n          ),\n          gettext(\"Select file\")\n        ),\n        _react2.default.createElement(\n          'p',\n          { className: 'text-muted' },\n          this.getUploadRequirements(this.props.options.upload)\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getUploadProgressLabel',\n    value: function getUploadProgressLabel() {\n      return interpolate(gettext(\"%(progress)s % complete\"), {\n        'progress': this.state.progress\n      }, true);\n    }\n  }, {\n    key: 'getUploadProgress',\n    value: function getUploadProgress() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-upload' },\n        _react2.default.createElement(\n          'div',\n          { className: 'upload-progress' },\n          _react2.default.createElement('img', { src: this.state.preview }),\n          _react2.default.createElement(\n            'div',\n            { className: 'progress' },\n            _react2.default.createElement(\n              'div',\n              { className: 'progress-bar', role: 'progressbar',\n                'aria-valuenow': '{this.state.progress}',\n                'aria-valuemin': '0', 'aria-valuemax': '100',\n                style: { width: this.state.progress + '%' } },\n              _react2.default.createElement(\n                'span',\n                { className: 'sr-only' },\n                this.getUploadProgressLabel()\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderUpload',\n    value: function renderUpload() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement('input', { type: 'file',\n          id: 'avatar-hidden-upload',\n          className: 'hidden-file-upload',\n          onChange: this.uploadFile }),\n        this.state.image ? this.getUploadProgress() : this.getUploadButton(),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-6 col-md-offset-3' },\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.props.showIndex,\n                disabled: !!this.state.image,\n                className: 'btn-default btn-block' },\n              gettext(\"Cancel\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderCrop',\n    value: function renderCrop() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(_crop2.default, { options: this.state.options,\n        user: this.props.user,\n        upload: this.state.uploaded,\n        onComplete: this.props.onComplete,\n        showError: this.props.showError,\n        showIndex: this.props.showIndex });\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return this.state.uploaded ? this.renderCrop() : this.renderUpload();\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":83,\"../../services/snackbar\":90,\"../../utils/file-size\":95,\"../button\":48,\"./crop\":49,\"react\":\"react\"}],54:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'isValidated',\n    value: function isValidated() {\n      return typeof this.props.validation !== \"undefined\";\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      var className = 'form-group';\n      if (this.isValidated()) {\n        className += ' has-feedback';\n        if (this.props.validation === null) {\n          className += ' has-success';\n        } else {\n          className += ' has-error';\n        }\n      }\n      return className;\n    }\n  }, {\n    key: 'getFeedback',\n    value: function getFeedback() {\n      var _this2 = this;\n\n      if (this.props.validation) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'help-block errors' },\n          this.props.validation.map(function (error, i) {\n            return _react2.default.createElement(\n              'p',\n              { key: _this2.props.for + 'FeedbackItem' + i },\n              error\n            );\n          })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFeedbackIcon',\n    value: function getFeedbackIcon() {\n      if (this.isValidated()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'material-icon form-control-feedback',\n            'aria-hidden': 'true', key: this.props.for + 'FeedbackIcon' },\n          this.props.validation ? 'clear' : 'check'\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFeedbackDescription',\n    value: function getFeedbackDescription() {\n      if (this.isValidated()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { id: this.props.for + '_status', className: 'sr-only' },\n          this.props.validation ? gettext('(error)') : gettext('(success)')\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getHelpText',\n    value: function getHelpText() {\n      if (this.props.helpText) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'p',\n          { className: 'help-block' },\n          this.props.helpText\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getClassName() },\n        _react2.default.createElement(\n          'label',\n          { className: 'control-label ' + (this.props.labelClass || ''),\n            htmlFor: this.props.for || '' },\n          this.props.label + ':'\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.props.controlClass || '' },\n          this.props.children,\n          this.getFeedbackIcon(),\n          this.getFeedbackDescription(),\n          this.getFeedback(),\n          this.getHelpText(),\n          this.props.extra || null\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],55:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _validators = require('../utils/validators');\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 validateRequired = (0, _validators.required)();\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.bindInput = function (name) {\n      return function (event) {\n        var newState = {};\n        newState[name] = event.target.value;\n\n        var formErrors = _this.state.errors || {};\n        formErrors[name] = _this.validateField(name, newState[name]);\n        newState.errors = formErrors;\n\n        _this.setState(newState);\n      };\n    }, _this.handleSubmit = function (event) {\n      // we don't reload page on submissions\n      event.preventDefault();\n      if (_this.state.isLoading) {\n        return;\n      }\n\n      if (_this.clean()) {\n        _this.setState({ 'isLoading': true });\n        var promise = _this.send();\n\n        if (promise) {\n          promise.then(function (success) {\n            _this.setState({ 'isLoading': false });\n            _this.handleSuccess(success);\n          }, function (rejection) {\n            _this.setState({ 'isLoading': false });\n            _this.handleError(rejection);\n          });\n        } else {\n          _this.setState({ 'isLoading': false });\n        }\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'validate',\n    value: function validate() {\n      var errors = {};\n      if (!this.state.validators) {\n        return errors;\n      }\n\n      var validators = {\n        required: this.state.validators.required || this.state.validators,\n        optional: this.state.validators.optional || {}\n      };\n\n      var validatedFields = [];\n\n      // add required fields to validation\n      for (var name in validators.required) {\n        if (validators.required.hasOwnProperty(name) && validators.required[name]) {\n          validatedFields.push(name);\n        }\n      }\n\n      // add optional fields to validation\n      for (var name in validators.optional) {\n        if (validators.optional.hasOwnProperty(name) && validators.optional[name]) {\n          validatedFields.push(name);\n        }\n      }\n\n      // validate fields values\n      for (var i in validatedFields) {\n        var name = validatedFields[i];\n        var fieldErrors = this.validateField(name, this.state[name]);\n\n        if (fieldErrors === null) {\n          errors[name] = null;\n        } else if (fieldErrors) {\n          errors[name] = fieldErrors;\n        }\n      }\n\n      return errors;\n    }\n  }, {\n    key: 'isValid',\n    value: function isValid() {\n      var errors = this.validate();\n      for (var field in errors) {\n        if (errors.hasOwnProperty(field)) {\n          if (errors[field] !== null) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    }\n  }, {\n    key: 'validateField',\n    value: function validateField(name, value) {\n      var errors = [];\n      if (!this.state.validators) {\n        return errors;\n      }\n\n      var validators = {\n        required: (this.state.validators.required || this.state.validators)[name],\n        optional: (this.state.validators.optional || {})[name]\n      };\n\n      var requiredError = validateRequired(value) || false;\n\n      if (validators.required) {\n        if (requiredError) {\n          errors = [requiredError];\n        } else {\n          for (var i in validators.required) {\n            var validationError = validators.required[i](value);\n            if (validationError) {\n              errors.push(validationError);\n            }\n          }\n        }\n\n        return errors.length ? errors : null;\n      } else if (requiredError === false && validators.optional) {\n        for (var i in validators.optional) {\n          var validationError = validators.optional[i](value);\n          if (validationError) {\n            errors.push(validationError);\n          }\n        }\n\n        return errors.length ? errors : null;\n      }\n\n      return false; // false === field wasn't validated\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'clean',\n    value: function clean() {\n      return true;\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return null;\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(success) {\n      return;\n    }\n  }, {\n    key: 'handleError',\n\n    /* jshint ignore:end */\n    value: function handleError(rejection) {\n      return;\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../utils/validators\":100,\"react\":\"react\"}],56:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'isActive',\n    value: function isActive() {\n      if (this.props.path) {\n        return document.location.pathname.indexOf(this.props.path) === 0;\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.isActive()) {\n        return (this.props.className || '') + ' ' + (this.props.activeClassName || 'active');\n      } else {\n        return this.props.className || '';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'li',\n        { className: this.getClassName() },\n        this.props.children\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],57:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: \"render\",\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"div\",\n        { className: \"loader\" },\n        _react2.default.createElement(\"div\", { className: \"loader-spinning-wheel\" })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],58:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _loader = require('./loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\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\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-loader' },\n        _react2.default.createElement(_loader2.default, null)\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"./loader\":57,\"react\":\"react\"}],59:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.UsernameHistory = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory = require('../../reducers/username-history');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _random = require('../../utils/random');\n\nvar random = _interopRequireWildcard(_random);\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; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar UsernameHistory = exports.UsernameHistory = function (_React$Component) {\n  _inherits(UsernameHistory, _React$Component);\n\n  function UsernameHistory() {\n    _classCallCheck(this, UsernameHistory);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UsernameHistory).apply(this, arguments));\n  }\n\n  _createClass(UsernameHistory, [{\n    key: 'renderUserAvatar',\n    value: function renderUserAvatar(item) {\n      if (item.changed_by) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: item.changed_by.absolute_url, className: 'user-avatar' },\n          _react2.default.createElement(_avatar2.default, { user: item.changed_by, size: '100' })\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'user-avatar' },\n            _react2.default.createElement(_avatar2.default, { size: '100' })\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'renderUsername',\n    value: function renderUsername(item) {\n      if (item.changed_by) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: item.changed_by.absolute_url, className: 'item-title' },\n          item.changed_by.username\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'item-title' },\n            item.changed_by_username\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'renderHistory',\n    value: function renderHistory() {\n      var _this2 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-ready' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          this.props.changes.map(function (item, i) {\n            return _react2.default.createElement(\n              'li',\n              { className: 'list-group-item', key: i },\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-avatar' },\n                _this2.renderUserAvatar(item)\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-author' },\n                _this2.renderUsername(item)\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change' },\n                item.old_username,\n                _react2.default.createElement(\n                  'span',\n                  { className: 'material-icon' },\n                  'arrow_forward'\n                ),\n                item.new_username\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-date' },\n                _react2.default.createElement(\n                  'abbr',\n                  { title: item.changed_on.format('LLL') },\n                  item.changed_on.fromNow()\n                )\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderEmptyHistory',\n    value: function renderEmptyHistory() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-ready' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          _react2.default.createElement(\n            'li',\n            { className: 'list-group-item empty-message' },\n            gettext(\"No name changes have been recorded for your account.\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderHistoryPreview',\n    value: function renderHistoryPreview() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-preview' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          random.range(3, 5).map(function (i) {\n            return _react2.default.createElement(\n              'li',\n              { className: 'list-group-item', key: i },\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-avatar' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'user-avatar' },\n                  _react2.default.createElement(_avatar2.default, { size: '100' })\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-author' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 100) + \"px\" } },\n                  ' '\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                  ' '\n                ),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'material-icon' },\n                  'arrow_forward'\n                ),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                  ' '\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-date' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(50, 100) + \"px\" } },\n                  ' '\n                )\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      if (this.props.isLoaded) {\n        if (this.props.changes.length) {\n          return this.renderHistory();\n        } else {\n          return this.renderEmptyHistory();\n        }\n      } else {\n        return this.renderHistoryPreview();\n      }\n    }\n  }]);\n\n  return UsernameHistory;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this3.state = {\n      isLoaded: false,\n      options: null\n    };\n    return _this3;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this4 = this;\n\n      Promise.all([_ajax2.default.get(this.props.user.api_url.username), _ajax2.default.get(_index2.default.get('USERNAME_CHANGES_API'), { user: this.props.user.id })]).then(function (data) {\n        _this4.setState({\n          isLoaded: true,\n          options: data[0]\n        });\n\n        _store2.default.dispatch((0, _usernameHistory.dehydrate)(data[1].results));\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(UsernameHistory, { isLoaded: this.state.isLoaded,\n          changes: this.props['username-history'] })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":77,\"../../reducers/username-history\":81,\"../../services/ajax\":83,\"../../services/store\":91,\"../../utils/random\":98,\"../avatar\":46,\"react\":\"react\"}],60:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('../form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('../form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _select = require('../select');\n\nvar _select2 = _interopRequireDefault(_select);\n\nvar _yesNoSwitch = require('../yes-no-switch');\n\nvar _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);\n\nvar _auth = require('../../reducers/auth');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_Form) {\n  _inherits(_class, _Form);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'is_hiding_presence': props.user.is_hiding_presence,\n      'limits_private_thread_invites_to': props.user.limits_private_thread_invites_to,\n      'subscribe_to_started_threads': props.user.subscribe_to_started_threads,\n      'subscribe_to_replied_threads': props.user.subscribe_to_replied_threads,\n\n      'errors': {}\n    };\n\n    _this.privateThreadInvitesChoices = [{\n      'value': 0,\n      'icon': 'help_outline',\n      'label': gettext('Everybody')\n    }, {\n      'value': 1,\n      'icon': 'done_all',\n      'label': gettext('Users I follow')\n    }, {\n      'value': 2,\n      'icon': 'highlight_off',\n      'label': gettext('Nobody')\n    }];\n\n    _this.subscribeToChoices = [{\n      'value': 0,\n      'icon': 'bookmark_border',\n      'label': gettext('No')\n    }, {\n      'value': 1,\n      'icon': 'bookmark',\n      'label': gettext('Bookmark')\n    }, {\n      'value': 2,\n      'icon': 'mail',\n      'label': gettext('Bookmark with e-mail notification')\n    }];\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.options, {\n        'is_hiding_presence': this.state.is_hiding_presence,\n        'limits_private_thread_invites_to': this.state.limits_private_thread_invites_to,\n        'subscribe_to_started_threads': this.state.subscribe_to_started_threads,\n        'subscribe_to_replied_threads': this.state.subscribe_to_replied_threads\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess() {\n      _store2.default.dispatch((0, _auth.patchUser)({\n        'is_hiding_presence': this.state.is_hiding_presence,\n        'limits_private_thread_invites_to': this.state.limits_private_thread_invites_to,\n        'subscribe_to_started_threads': this.state.subscribe_to_started_threads,\n        'subscribe_to_replied_threads': this.state.subscribe_to_replied_threads\n      }));\n      _snackbar2.default.success(gettext(\"Your forum options have been changed\"));\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        _snackbar2.default.error(gettext(\"Please reload page and try again.\"));\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change forum options\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              'fieldset',\n              null,\n              _react2.default.createElement(\n                'legend',\n                null,\n                gettext(\"Privacy settings\")\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Hide my presence\"),\n                  helpText: gettext(\"If you hide your presence, only members with permission to see hidden users will see when you are online.\"),\n                  'for': 'id_is_hiding_presence',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_is_hiding_presence',\n                  disabled: this.state.isLoading,\n                  iconOn: 'visibility',\n                  iconOff: 'visibility_off',\n                  labelOn: gettext(\"Show my presence to other users\"),\n                  labelOff: gettext(\"Hide my presence from other users\"),\n                  onChange: this.bindInput('is_hiding_presence'),\n                  value: this.state.is_hiding_presence })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Private thread invitations\"),\n                  'for': 'id_limits_private_thread_invites_to',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_limits_private_thread_invites_to',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('limits_private_thread_invites_to'),\n                  value: this.state.limits_private_thread_invites_to,\n                  choices: this.privateThreadInvitesChoices })\n              )\n            ),\n            _react2.default.createElement(\n              'fieldset',\n              null,\n              _react2.default.createElement(\n                'legend',\n                null,\n                gettext(\"Automatic subscriptions\")\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Threads I start\"),\n                  'for': 'id_subscribe_to_started_threads',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_subscribe_to_started_threads',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('subscribe_to_started_threads'),\n                  value: this.state.subscribe_to_started_threads,\n                  choices: this.subscribeToChoices })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Threads I reply to\"),\n                  'for': 'id_subscribe_to_replied_threads',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_subscribe_to_replied_threads',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('subscribe_to_replied_threads'),\n                  value: this.state.subscribe_to_replied_threads,\n                  choices: this.subscribeToChoices })\n              )\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Save changes\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../reducers/auth\":78,\"../../services/ajax\":83,\"../../services/snackbar\":90,\"../../services/store\":91,\"../button\":48,\"../form\":55,\"../form-group\":54,\"../select\":70,\"../yes-no-switch\":76,\"react\":\"react\"}],61:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactNav = exports.SideNav = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouter = require('react-router');\n\nvar _li = require('../li');\n\nvar _li2 = _interopRequireDefault(_li);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\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; } // jshint ignore:line\n//jshint ignore:line\n\n//jshint ignore:line\n\nvar SideNav = exports.SideNav = function (_React$Component) {\n  _inherits(SideNav, _React$Component);\n\n  function SideNav() {\n    _classCallCheck(this, SideNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(SideNav).apply(this, arguments));\n  }\n\n  _createClass(SideNav, [{\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'div',\n        { className: 'list-group nav-side' },\n        _index2.default.get('USER_OPTIONS').map(function (option, i) {\n          return _react2.default.createElement(\n            _reactRouter.Link,\n            { to: _index2.default.get('USERCP_URL') + option.component + '/',\n              className: 'list-group-item',\n              activeClassName: 'active',\n              key: i },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              option.icon\n            ),\n            option.name\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return SideNav;\n}(_react2.default.Component);\n\nvar CompactNav = exports.CompactNav = function (_React$Component2) {\n  _inherits(CompactNav, _React$Component2);\n\n  function CompactNav() {\n    _classCallCheck(this, CompactNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));\n  }\n\n  _createClass(CompactNav, [{\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu', role: 'menu' },\n        _index2.default.get('USER_OPTIONS').map(function (option, i) {\n          return _react2.default.createElement(\n            _li2.default,\n            { path: _index2.default.get('USERCP_URL') + option.component + '/',\n              key: i },\n            _react2.default.createElement(\n              _reactRouter.Link,\n              { to: _index2.default.get('USERCP_URL') + option.component + '/' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                option.icon\n              ),\n              option.name\n            )\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return CompactNav;\n}(_react2.default.Component);\n\n},{\"../../index\":77,\"../li\":56,\"react\":\"react\",\"react-router\":\"react-router\"}],62:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Options = undefined;\nexports.select = select;\nexports.paths = paths;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _navs = require('./navs');\n\nvar _forumOptions = require('./forum-options');\n\nvar _forumOptions2 = _interopRequireDefault(_forumOptions);\n\nvar _changeUsername = require('./change-username');\n\nvar _changeUsername2 = _interopRequireDefault(_changeUsername);\n\nvar _signInCredentials = require('./sign-in-credentials');\n\nvar _signInCredentials2 = _interopRequireDefault(_signInCredentials);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\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; } // jshint ignore:line\n\nvar Options = exports.Options = function (_React$Component) {\n  _inherits(Options, _React$Component);\n\n  function Options(props) {\n    _classCallCheck(this, Options);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Options).call(this, props));\n\n    _this.toggleNav = function () {\n      if (_this.state.dropdown) {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: true\n        });\n      }\n    };\n\n    _this.state = {\n      dropdown: false\n    };\n    return _this;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(Options, [{\n    key: 'getToggleNavClassName',\n\n    /* jshint ignore:end */\n\n    value: function getToggleNavClassName() {\n      if (this.state.dropdown) {\n        return 'btn btn-default btn-icon open';\n      } else {\n        return 'btn btn-default btn-icon';\n      }\n    }\n  }, {\n    key: 'getCompactNavClassName',\n    value: function getCompactNavClassName() {\n      if (this.state.dropdown) {\n        return 'compact-nav open';\n      } else {\n        return 'compact-nav';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'page-header' },\n          _react2.default.createElement(\n            'div',\n            { className: 'container' },\n            _react2.default.createElement(\n              'h1',\n              { className: 'pull-left' },\n              gettext(\"Change your options\")\n            ),\n            _react2.default.createElement(\n              'button',\n              { className: 'btn btn-default btn-icon btn-dropdown-toggle hidden-md hidden-lg',\n                type: 'button',\n                onClick: this.toggleNav,\n                'aria-haspopup': 'true',\n                'aria-expanded': this.state.dropdown ? 'true' : 'false' },\n              _react2.default.createElement(\n                'i',\n                { className: 'material-icon' },\n                'menu'\n              )\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.getCompactNavClassName() },\n          _react2.default.createElement(_navs.CompactNav, null)\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-3 hidden-xs hidden-sm' },\n              _react2.default.createElement(_navs.SideNav, null)\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-9' },\n              this.props.children\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Options;\n}(_react2.default.Component);\n\nfunction select(store) {\n  return {\n    'tick': store.tick.tick,\n    'user': store.auth.user,\n    'username-history': store['username-history']\n  };\n}\n\nfunction paths() {\n  return [{\n    path: _index2.default.get('USERCP_URL') + 'forum-options/',\n    component: (0, _reactRedux.connect)(select)(_forumOptions2.default)\n  }, {\n    path: _index2.default.get('USERCP_URL') + 'change-username/',\n    component: (0, _reactRedux.connect)(select)(_changeUsername2.default)\n  }, {\n    path: _index2.default.get('USERCP_URL') + 'sign-in-credentials/',\n    component: (0, _reactRedux.connect)(select)(_signInCredentials2.default)\n  }];\n}\n\n},{\"../../index\":77,\"./change-username\":59,\"./forum-options\":60,\"./navs\":61,\"./sign-in-credentials\":63,\"react\":\"react\",\"react-redux\":\"react-redux\"}],63:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'p',\n        null,\n        'Would you liek to change email or password?'\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],64:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.LABELS = exports.STYLES = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _zxcvbn = require('../services/zxcvbn');\n\nvar _zxcvbn2 = _interopRequireDefault(_zxcvbn);\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 STYLES = exports.STYLES = ['progress-bar-danger', 'progress-bar-warning', 'progress-bar-warning', 'progress-bar-primary', 'progress-bar-success'];\n\nvar LABELS = exports.LABELS = [gettext(\"Entered password is very weak.\"), gettext(\"Entered password is weak.\"), gettext(\"Entered password is average.\"), gettext(\"Entered password is strong.\"), gettext(\"Entered password is very strong.\")];\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this._score = 0;\n    _this._password = null;\n    _this._inputs = [];\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getScore',\n    value: function getScore(password, inputs) {\n      var _this2 = this;\n\n      var cacheStale = false;\n\n      if (password.trim() !== this._password) {\n        cacheStale = true;\n      }\n\n      if (inputs.length !== this._inputs.length) {\n        cacheStale = true;\n      } else {\n        inputs.map(function (value, i) {\n          if (value.trim() !== _this2._inputs[i]) {\n            cacheStale = true;\n          }\n        });\n      }\n\n      if (cacheStale) {\n        this._score = _zxcvbn2.default.scorePassword(password, inputs);\n        this._password = password.trim();\n        this._inputs = inputs.map(function (value) {\n          return value.trim();\n        });\n      }\n\n      return this._score;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      var score = this.getScore(this.props.password, this.props.inputs);\n\n      return _react2.default.createElement(\n        'div',\n        { className: 'help-block password-strength' },\n        _react2.default.createElement(\n          'div',\n          { className: 'progress' },\n          _react2.default.createElement(\n            'div',\n            { className: \"progress-bar \" + STYLES[score],\n              style: { width: 20 + 20 * score + '%' },\n              role: 'progress-bar',\n              'aria-valuenow': score,\n              'aria-valuemin': '0',\n              'aria-valuemax': '4' },\n            _react2.default.createElement(\n              'span',\n              { className: 'sr-only' },\n              LABELS[score]\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'p',\n          { className: 'text-small' },\n          LABELS[score]\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../services/zxcvbn\":92,\"react\":\"react\"}],65:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _loader = require('./loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _register = require('./register.js');\n\nvar _register2 = _interopRequireDefault(_register);\n\nvar _captcha = require('../services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _modal = require('../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _zxcvbn = require('../services/zxcvbn');\n\nvar _zxcvbn2 = _interopRequireDefault(_zxcvbn);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.showRegisterModal = function () {\n      if (misago.get('SETTINGS').account_activation === 'closed') {\n        _snackbar2.default.info(gettext(\"New registrations are currently disabled.\"));\n      } else if (_this.state.isLoaded) {\n        _modal2.default.show(_register2.default);\n      } else {\n        _this.setState({\n          'isLoading': true\n        });\n\n        Promise.all([_captcha2.default.load(), _zxcvbn2.default.load()]).then(function () {\n          if (!_this.state.isLoaded) {\n            _this.setState({\n              'isLoading': false,\n              'isLoaded': false\n            });\n          }\n\n          _modal2.default.show(_register2.default);\n        });\n      }\n    };\n\n    _this.state = {\n      'isLoading': false,\n      'isLoaded': false\n    };\n    return _this;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'getClassName',\n\n    /* jshint ignore:end */\n\n    value: function getClassName() {\n      return this.props.className + (this.state.isLoading ? ' btn-loading' : '');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button', onClick: this.showRegisterModal,\n          className: 'btn ' + this.getClassName(),\n          disabled: this.state.isLoaded },\n        gettext(\"Register\"),\n        this.state.isLoading ? _react2.default.createElement(_loader2.default, null) : null\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../services/captcha\":85,\"../services/modal\":89,\"../services/snackbar\":90,\"../services/zxcvbn\":92,\"./loader\":57,\"./register.js\":66,\"react\":\"react\"}],66:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.RegisterComplete = exports.RegisterForm = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('./form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _passwordStrength = require('./password-strength');\n\nvar _passwordStrength2 = _interopRequireDefault(_passwordStrength);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _auth = require('../services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _captcha = require('../services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _modal = require('../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\n\nvar _validators = require('../utils/validators');\n\nvar validators = _interopRequireWildcard(_validators);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar RegisterForm = exports.RegisterForm = function (_Form) {\n  _inherits(RegisterForm, _Form);\n\n  function RegisterForm(props) {\n    _classCallCheck(this, RegisterForm);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RegisterForm).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'username': '',\n      'email': '',\n      'password': '',\n      'captcha': '',\n\n      'validators': {\n        'username': [validators.usernameContent(), validators.usernameMinLength(_index2.default.get('SETTINGS')), validators.usernameMaxLength(_index2.default.get('SETTINGS'))],\n        'email': [validators.email()],\n        'password': [validators.passwordMinLength(_index2.default.get('SETTINGS'))],\n        'captcha': _captcha2.default.validator()\n      },\n\n      'errors': {}\n    };\n    return _this;\n  }\n\n  _createClass(RegisterForm, [{\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(gettext(\"Form contains errors.\"));\n        this.setState({\n          'errors': this.validate()\n        });\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('USERS_API'), {\n        'username': this.state.username,\n        'email': this.state.email,\n        'password': this.state.password,\n        'captcha': this.state.captcha\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.props.callback(apiResponse);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        this.setState({\n          'errors': Object.assign({}, this.state.errors, rejection)\n        });\n        _snackbar2.default.error(gettext(\"Form contains errors.\"));\n      } else if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n        _modal2.default.hide();\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'getLegalFootNote',\n    value: function getLegalFootNote() {\n      if (_index2.default.get('TERMS_OF_SERVICE_URL')) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: _index2.default.get('TERMS_OF_SERVICE_URL'),\n            target: '_blank' },\n          gettext(\"By registering you agree to site's terms and conditions.\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-dialog modal-register', role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Register\")\n            )\n          ),\n          _react2.default.createElement(\n            'form',\n            { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n            _react2.default.createElement('input', { type: 'type', style: { display: 'none' } }),\n            _react2.default.createElement('input', { type: 'password', style: { display: 'none' } }),\n            _react2.default.createElement(\n              'div',\n              { className: 'modal-body' },\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Username\"), 'for': 'id_username',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n                  validation: this.state.errors.username },\n                _react2.default.createElement('input', { type: 'text', id: 'id_username', className: 'form-control',\n                  'aria-describedby': 'id_username_status',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('username'),\n                  value: this.state.username })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"E-mail\"), 'for': 'id_email',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n                  validation: this.state.errors.email },\n                _react2.default.createElement('input', { type: 'text', id: 'id_email', className: 'form-control',\n                  'aria-describedby': 'id_email_status',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('email'),\n                  value: this.state.email })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Password\"), 'for': 'id_password',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n                  validation: this.state.errors.password,\n                  extra: _react2.default.createElement(_passwordStrength2.default, { password: this.state.password,\n                    inputs: [this.state.username, this.state.email] }) },\n                _react2.default.createElement('input', { type: 'password', id: 'id_password', className: 'form-control',\n                  'aria-describedby': 'id_password_status',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('password'),\n                  value: this.state.password })\n              ),\n              _captcha2.default.component({\n                form: this,\n                labelClass: \"col-sm-4\",\n                controlClass: \"col-sm-8\"\n              })\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'modal-footer' },\n              this.getLegalFootNote(),\n              _react2.default.createElement(\n                _button2.default,\n                { className: 'btn-primary', loading: this.state.isLoading },\n                gettext(\"Register account\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return RegisterForm;\n}(_form2.default);\n\nvar RegisterComplete = exports.RegisterComplete = function (_React$Component) {\n  _inherits(RegisterComplete, _React$Component);\n\n  function RegisterComplete() {\n    _classCallCheck(this, RegisterComplete);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(RegisterComplete).apply(this, arguments));\n  }\n\n  _createClass(RegisterComplete, [{\n    key: 'getLead',\n    value: function getLead() {\n      if (this.props.activation === 'user') {\n        return gettext(\"%(username)s, your account has been created but you need to activate it before you will be able to sign in.\");\n      } else if (this.props.activation === 'admin') {\n        return gettext(\"%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in.\");\n      }\n    }\n  }, {\n    key: 'getSubscript',\n    value: function getSubscript() {\n      if (this.props.activation === 'user') {\n        return gettext(\"We have sent an e-mail to %(email)s with link that you have to click to activate your account.\");\n      } else if (this.props.activation === 'admin') {\n        return gettext(\"We will send an e-mail to %(email)s when this takes place.\");\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-dialog modal-message modal-register',\n          role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Registration complete\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-body' },\n            _react2.default.createElement(\n              'div',\n              { className: 'message-icon' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                'info_outline'\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'message-body' },\n              _react2.default.createElement(\n                'p',\n                { className: 'lead' },\n                interpolate(this.getLead(), { 'username': this.props.username }, true)\n              ),\n              _react2.default.createElement(\n                'p',\n                null,\n                interpolate(this.getSubscript(), { 'email': this.props.email }, true)\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return RegisterComplete;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this3.completeRegistration = function (apiResponse) {\n      if (apiResponse.activation === 'active') {\n        _modal2.default.hide();\n        _auth2.default.signIn(apiResponse);\n      } else {\n        _this3.setState({\n          'complete': apiResponse\n        });\n      }\n    };\n\n    _this3.state = {\n      'complete': false\n    };\n    return _this3;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.state.complete) {\n        return _react2.default.createElement(RegisterComplete, { activation: this.state.complete.activation,\n          username: this.state.complete.username,\n          email: this.state.complete.email });\n      } else {\n        return _react2.default.createElement(RegisterForm, { callback: this.completeRegistration });\n      }\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../index\":77,\"../services/ajax\":83,\"../services/auth\":84,\"../services/captcha\":85,\"../services/modal\":89,\"../services/snackbar\":90,\"../utils/banned-page\":93,\"../utils/validators\":100,\"./button\":48,\"./form\":55,\"./form-group\":54,\"./password-strength\":64,\"react\":\"react\"}],67:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.LinkSent = exports.RequestLinkForm = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _validators = require('../utils/validators');\n\nvar validators = _interopRequireWildcard(_validators);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\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; } // jshint ignore:line\n// jshint ignore:line\n\nvar RequestLinkForm = exports.RequestLinkForm = function (_Form) {\n  _inherits(RequestLinkForm, _Form);\n\n  function RequestLinkForm(props) {\n    _classCallCheck(this, RequestLinkForm);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RequestLinkForm).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'email': '',\n\n      'validators': {\n        'email': [validators.email()]\n      }\n    };\n    return _this;\n  }\n\n  _createClass(RequestLinkForm, [{\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(gettext(\"Enter a valid email address.\"));\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('SEND_ACTIVATION_API'), {\n        'email': this.state.email\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.props.callback(apiResponse);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (['already_active', 'inactive_admin'].indexOf(rejection.code) > -1) {\n        _snackbar2.default.info(rejection.detail);\n      } else if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-request-activation-link' },\n        _react2.default.createElement(\n          'form',\n          { onSubmit: this.handleSubmit },\n          _react2.default.createElement(\n            'div',\n            { className: 'form-group' },\n            _react2.default.createElement(\n              'div',\n              { className: 'control-input' },\n              _react2.default.createElement('input', { type: 'text', className: 'form-control',\n                placeholder: gettext(\"Your e-mail address\"),\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('email'),\n                value: this.state.email })\n            )\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary btn-block',\n              loading: this.state.isLoading },\n            gettext(\"Send link\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return RequestLinkForm;\n}(_form2.default);\n\nvar LinkSent = exports.LinkSent = function (_React$Component) {\n  _inherits(LinkSent, _React$Component);\n\n  function LinkSent() {\n    _classCallCheck(this, LinkSent);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(LinkSent).apply(this, arguments));\n  }\n\n  _createClass(LinkSent, [{\n    key: 'getMessage',\n    value: function getMessage() {\n      return interpolate(gettext(\"Activation link was sent to %(email)s\"), {\n        email: this.props.user.email\n      }, true);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-request-activation-link well-done' },\n        _react2.default.createElement(\n          'div',\n          { className: 'done-message' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-icon' },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'check'\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'message-body' },\n            _react2.default.createElement(\n              'p',\n              null,\n              this.getMessage()\n            )\n          ),\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-primary btn-block',\n              onClick: this.props.callback },\n            gettext(\"Request another link\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return LinkSent;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this3.complete = function (apiResponse) {\n      _this3.setState({\n        complete: apiResponse\n      });\n    };\n\n    _this3.reset = function () {\n      _this3.setState({\n        complete: false\n      });\n    };\n\n    _this3.state = {\n      complete: false\n    };\n    return _this3;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.state.complete) {\n        return _react2.default.createElement(LinkSent, { user: this.state.complete, callback: this.reset });\n      } else {\n        return _react2.default.createElement(RequestLinkForm, { callback: this.complete });\n      };\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../index\":77,\"../services/ajax\":83,\"../services/snackbar\":90,\"../utils/banned-page\":93,\"../utils/validators\":100,\"./button\":48,\"./form\":55,\"react\":\"react\"}],68:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.AccountInactivePage = exports.LinkSent = exports.RequestResetForm = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _validators = require('../utils/validators');\n\nvar validators = _interopRequireWildcard(_validators);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar RequestResetForm = exports.RequestResetForm = function (_Form) {\n  _inherits(RequestResetForm, _Form);\n\n  function RequestResetForm(props) {\n    _classCallCheck(this, RequestResetForm);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RequestResetForm).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'email': '',\n\n      'validators': {\n        'email': [validators.email()]\n      }\n    };\n    return _this;\n  }\n\n  _createClass(RequestResetForm, [{\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(gettext(\"Enter a valid email address.\"));\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('SEND_PASSWORD_RESET_API'), {\n        'email': this.state.email\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.props.callback(apiResponse);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (['inactive_user', 'inactive_admin'].indexOf(rejection.code) > -1) {\n        this.props.showInactivePage(rejection);\n      } else if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-request-password-reset' },\n        _react2.default.createElement(\n          'form',\n          { onSubmit: this.handleSubmit },\n          _react2.default.createElement(\n            'div',\n            { className: 'form-group' },\n            _react2.default.createElement(\n              'div',\n              { className: 'control-input' },\n              _react2.default.createElement('input', { type: 'text', className: 'form-control',\n                placeholder: gettext(\"Your e-mail address\"),\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('email'),\n                value: this.state.email })\n            )\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary btn-block',\n              loading: this.state.isLoading },\n            gettext(\"Send link\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return RequestResetForm;\n}(_form2.default);\n\nvar LinkSent = exports.LinkSent = function (_React$Component) {\n  _inherits(LinkSent, _React$Component);\n\n  function LinkSent() {\n    _classCallCheck(this, LinkSent);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(LinkSent).apply(this, arguments));\n  }\n\n  _createClass(LinkSent, [{\n    key: 'getMessage',\n    value: function getMessage() {\n      return interpolate(gettext(\"Reset password link was sent to %(email)s\"), {\n        email: this.props.user.email\n      }, true);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-request-password-reset well-done' },\n        _react2.default.createElement(\n          'div',\n          { className: 'done-message' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-icon' },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'check'\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'message-body' },\n            _react2.default.createElement(\n              'p',\n              null,\n              this.getMessage()\n            )\n          ),\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-primary btn-block',\n              onClick: this.props.callback },\n            gettext(\"Request another link\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return LinkSent;\n}(_react2.default.Component);\n\nvar AccountInactivePage = exports.AccountInactivePage = function (_React$Component2) {\n  _inherits(AccountInactivePage, _React$Component2);\n\n  function AccountInactivePage() {\n    _classCallCheck(this, AccountInactivePage);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(AccountInactivePage).apply(this, arguments));\n  }\n\n  _createClass(AccountInactivePage, [{\n    key: 'getActivateButton',\n    value: function getActivateButton() {\n      if (this.props.activation === 'inactive_user') {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'p',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: _index2.default.get('REQUEST_ACTIVATION_URL') },\n            gettext(\"Activate your account.\")\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-message page-message-info page-forgotten-password-inactive' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-panel' },\n            _react2.default.createElement(\n              'div',\n              { className: 'message-icon' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                'info_outline'\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'message-body' },\n              _react2.default.createElement(\n                'p',\n                { className: 'lead' },\n                gettext(\"Your account is inactive.\")\n              ),\n              _react2.default.createElement(\n                'p',\n                null,\n                this.props.message\n              ),\n              this.getActivateButton()\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return AccountInactivePage;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component3) {\n  _inherits(_class, _React$Component3);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this4 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this4.complete = function (apiResponse) {\n      _this4.setState({\n        complete: apiResponse\n      });\n    };\n\n    _this4.reset = function () {\n      _this4.setState({\n        complete: false\n      });\n    };\n\n    _this4.state = {\n      complete: false\n    };\n    return _this4;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'showInactivePage',\n    value: function showInactivePage(apiResponse) {\n      _reactDom2.default.render(_react2.default.createElement(AccountInactivePage, { activation: apiResponse.code,\n        message: apiResponse.detail }), document.getElementById('page-mount'));\n    }\n    /* jshint ignore:end */\n\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.state.complete) {\n        return _react2.default.createElement(LinkSent, { user: this.state.complete, callback: this.reset });\n      } else {\n        return _react2.default.createElement(RequestResetForm, { callback: this.complete,\n          showInactivePage: this.showInactivePage });\n      };\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../index\":77,\"../services/ajax\":83,\"../services/snackbar\":90,\"../utils/banned-page\":93,\"../utils/validators\":100,\"./button\":48,\"./form\":55,\"react\":\"react\",\"react-dom\":\"react-dom\"}],69:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PasswordChangedPage = exports.ResetPasswordForm = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _signIn = require('./sign-in.js');\n\nvar _signIn2 = _interopRequireDefault(_signIn);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _auth = require('../services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _modal = require('../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _validators = require('../utils/validators');\n\nvar validators = _interopRequireWildcard(_validators);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar ResetPasswordForm = exports.ResetPasswordForm = function (_Form) {\n  _inherits(ResetPasswordForm, _Form);\n\n  function ResetPasswordForm(props) {\n    _classCallCheck(this, ResetPasswordForm);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ResetPasswordForm).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'password': '',\n\n      'validators': {\n        'password': [validators.passwordMinLength(_index2.default.get('SETTINGS'))]\n      }\n    };\n    return _this;\n  }\n\n  _createClass(ResetPasswordForm, [{\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        if (this.state.password.trim().length) {\n          _snackbar2.default.error(this.state.errors.password[0]);\n        } else {\n          _snackbar2.default.error(gettext(\"Enter new password.\"));\n        }\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('CHANGE_PASSWORD_API'), {\n        'password': this.state.password\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.props.callback(apiResponse);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'well well-form well-form-reset-password' },\n        _react2.default.createElement(\n          'form',\n          { onSubmit: this.handleSubmit },\n          _react2.default.createElement(\n            'div',\n            { className: 'form-group' },\n            _react2.default.createElement(\n              'div',\n              { className: 'control-input' },\n              _react2.default.createElement('input', { type: 'password', className: 'form-control',\n                placeholder: gettext(\"Enter new password\"),\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('password'),\n                value: this.state.password })\n            )\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary btn-block',\n              loading: this.state.isLoading },\n            gettext(\"Change password\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return ResetPasswordForm;\n}(_form2.default);\n\nvar PasswordChangedPage = exports.PasswordChangedPage = function (_React$Component) {\n  _inherits(PasswordChangedPage, _React$Component);\n\n  function PasswordChangedPage() {\n    _classCallCheck(this, PasswordChangedPage);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(PasswordChangedPage).apply(this, arguments));\n  }\n\n  _createClass(PasswordChangedPage, [{\n    key: 'getMessage',\n    value: function getMessage() {\n      return interpolate(gettext(\"%(username)s, your password has been changed successfully.\"), {\n        username: this.props.user.username\n      }, true);\n    }\n  }, {\n    key: 'showSignIn',\n    value: function showSignIn() {\n      _modal2.default.show(_signIn2.default);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-message page-message-success page-forgotten-password-changed' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'message-panel' },\n            _react2.default.createElement(\n              'div',\n              { className: 'message-icon' },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                'check'\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'message-body' },\n              _react2.default.createElement(\n                'p',\n                { className: 'lead' },\n                this.getMessage()\n              ),\n              _react2.default.createElement(\n                'p',\n                null,\n                gettext(\"You will have to sign in using new password before continuing.\")\n              ),\n              _react2.default.createElement(\n                'p',\n                null,\n                _react2.default.createElement(\n                  'button',\n                  { type: 'button', className: 'btn btn-primary', onClick: this.showSignIn },\n                  gettext(\"Sign in\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return PasswordChangedPage;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this3, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this3 = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this3), _this3.complete = function (apiResponse) {\n      _auth2.default.softSignOut();\n\n      // nuke \"redirect_to\" field so we don't end\n      // coming back to error page after sign in\n      $('#hidden-login-form input[name=\"redirect_to\"]').remove();\n\n      _reactDom2.default.render(_react2.default.createElement(PasswordChangedPage, { user: apiResponse }), document.getElementById('page-mount'));\n    }, _temp), _possibleConstructorReturn(_this3, _ret);\n  }\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(ResetPasswordForm, { callback: this.complete });\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../index\":77,\"../services/ajax\":83,\"../services/auth\":84,\"../services/modal\":89,\"../services/snackbar\":90,\"../utils/banned-page\":93,\"../utils/validators\":100,\"./button\":48,\"./form\":55,\"./sign-in.js\":71,\"react\":\"react\",\"react-dom\":\"react-dom\"}],70:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.change = function (value) {\n      return function () {\n        _this.props.onChange({\n          target: {\n            value: value\n          }\n        });\n      };\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: \"getChoice\",\n    value: function getChoice() {\n      var _this2 = this;\n\n      var choice = null;\n      this.props.choices.map(function (item) {\n        if (item.value === _this2.props.value) {\n          choice = item;\n        }\n      });\n      return choice;\n    }\n  }, {\n    key: \"getIcon\",\n    value: function getIcon() {\n      return this.getChoice().icon;\n    }\n  }, {\n    key: \"getLabel\",\n    value: function getLabel() {\n      return this.getChoice().label;\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: \"render\",\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      var _this3 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"div\",\n        { className: \"btn-group btn-select-group\" },\n        _react2.default.createElement(\n          \"button\",\n          { type: \"button\",\n            className: \"btn btn-select dropdown-toggle\",\n            id: this.props.id || null,\n            \"data-toggle\": \"dropdown\",\n            \"aria-haspopup\": \"true\",\n            \"aria-expanded\": \"false\",\n            \"aria-describedby\": this.props['aria-describedby'] || null,\n            disabled: this.props.disabled || false },\n          _react2.default.createElement(\n            \"span\",\n            { className: \"material-icon\" },\n            this.getIcon()\n          ),\n          this.getLabel()\n        ),\n        _react2.default.createElement(\n          \"ul\",\n          { className: \"dropdown-menu\" },\n          this.props.choices.map(function (item, i) {\n            return _react2.default.createElement(\n              \"li\",\n              { key: i },\n              _react2.default.createElement(\n                \"button\",\n                { type: \"button\", className: \"btn-link\",\n                  onClick: _this3.change(item.value) },\n                _react2.default.createElement(\n                  \"span\",\n                  { className: \"material-icon\" },\n                  item.icon\n                ),\n                item.label\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],71:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _button = require('./button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _modal = require('../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _bannedPage = require('../utils/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\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; } // jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_Form) {\n  _inherits(_class, _Form);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n      'showActivation': false,\n\n      'username': '',\n      'password': '',\n\n      'validators': {\n        'username': [],\n        'password': []\n      }\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'clean',\n    value: function clean() {\n      if (!this.isValid()) {\n        _snackbar2.default.error(gettext(\"Fill out both fields.\"));\n        return false;\n      } else {\n        return true;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(_index2.default.get('AUTH_API'), {\n        'username': this.state.username,\n        'password': this.state.password\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess() {\n      var form = $('#hidden-login-form');\n\n      form.append('<input type=\"text\" name=\"username\" />');\n      form.append('<input type=\"password\" name=\"password\" />');\n\n      // fill out form with user credentials and submit it, this will tell\n      // Misago to redirect user back to right page, and will trigger browser's\n      // key ring feature\n      form.find('input[type=\"hidden\"]').val(_ajax2.default.getCsrfToken());\n      form.find('input[name=\"redirect_to\"]').val(window.location.pathname);\n      form.find('input[name=\"username\"]').val(this.state.username);\n      form.find('input[name=\"password\"]').val(this.state.password);\n      form.submit();\n\n      // keep form loading\n      this.setState({\n        'isLoading': true\n      });\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        if (rejection.code === 'inactive_admin') {\n          _snackbar2.default.info(rejection.detail);\n        } else if (rejection.code === 'inactive_user') {\n          _snackbar2.default.info(rejection.detail);\n          this.setState({\n            'showActivation': true\n          });\n        } else if (rejection.code === 'banned') {\n          (0, _bannedPage2.default)(rejection.detail);\n          _modal2.default.hide();\n        } else {\n          _snackbar2.default.error(rejection.detail);\n        }\n      } else if (rejection.status === 403 && rejection.ban) {\n        (0, _bannedPage2.default)(rejection.ban);\n        _modal2.default.hide();\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'getActivationButton',\n    value: function getActivationButton() {\n      if (this.state.showActivation) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: _index2.default.get('REQUEST_ACTIVATION_URL'),\n            className: 'btn btn-success btn-block' },\n          gettext(\"Activate account\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-dialog modal-sm modal-sign-in',\n          role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Sign in\")\n            )\n          ),\n          _react2.default.createElement(\n            'form',\n            { onSubmit: this.handleSubmit },\n            _react2.default.createElement(\n              'div',\n              { className: 'modal-body' },\n              _react2.default.createElement(\n                'div',\n                { className: 'form-group' },\n                _react2.default.createElement(\n                  'div',\n                  { className: 'control-input' },\n                  _react2.default.createElement('input', { id: 'id_username', className: 'form-control', type: 'text',\n                    disabled: this.state.isLoading,\n                    placeholder: gettext(\"Username or e-mail\"),\n                    onChange: this.bindInput('username'),\n                    value: this.state.username })\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'form-group' },\n                _react2.default.createElement(\n                  'div',\n                  { className: 'control-input' },\n                  _react2.default.createElement('input', { id: 'id_password', className: 'form-control', type: 'password',\n                    disabled: this.state.isLoading,\n                    placeholder: gettext(\"Password\"),\n                    onChange: this.bindInput('password'),\n                    value: this.state.password })\n                )\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'modal-footer' },\n              this.getActivationButton(),\n              _react2.default.createElement(\n                _button2.default,\n                { className: 'btn-primary btn-block',\n                  loading: this.state.isLoading },\n                gettext(\"Sign in\")\n              ),\n              _react2.default.createElement(\n                'a',\n                { href: _index2.default.get('FORGOTTEN_PASSWORD_URL'),\n                  className: 'btn btn-default btn-block' },\n                gettext(\"Forgot password?\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../index\":77,\"../services/ajax\":83,\"../services/modal\":89,\"../services/snackbar\":90,\"../utils/banned-page\":93,\"./button\":48,\"./form\":55,\"react\":\"react\"}],72:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Snackbar = undefined;\nexports.select = select;\n\nvar _react = require('react');\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\n/* jshint ignore:start */\nvar TYPES_CLASSES = {\n  'info': 'alert-info',\n  'success': 'alert-success',\n  'warning': 'alert-warning',\n  'error': 'alert-danger'\n};\n/* jshint ignore:end */\n\nvar Snackbar = exports.Snackbar = function (_React$Component) {\n  _inherits(Snackbar, _React$Component);\n\n  function Snackbar() {\n    _classCallCheck(this, Snackbar);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Snackbar).apply(this, arguments));\n  }\n\n  _createClass(Snackbar, [{\n    key: 'getSnackbarClass',\n    value: function getSnackbarClass() {\n      var snackbarClass = 'alerts-snackbar';\n      if (this.props.isVisible) {\n        snackbarClass += ' in';\n      } else {\n        snackbarClass += ' out';\n      }\n      return snackbarClass;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getSnackbarClass() },\n        _react2.default.createElement(\n          'p',\n          { className: 'alert ' + TYPES_CLASSES[this.props.type] },\n          this.props.message\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Snackbar;\n}(_react2.default.Component);\n\nfunction select(state) {\n  return state.snackbar;\n}\n\n},{\"react\":\"react\"}],73:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactGuestNav = exports.GuestNav = exports.GuestMenu = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _registerButton = require('../register-button');\n\nvar _registerButton2 = _interopRequireDefault(_registerButton);\n\nvar _signIn = require('../sign-in.js');\n\nvar _signIn2 = _interopRequireDefault(_signIn);\n\nvar _mobileNavbarDropdown = require('../../services/mobile-navbar-dropdown');\n\nvar _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);\n\nvar _modal = require('../../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\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; } // jshint ignore:line\n// jshint ignore:line\n\nvar GuestMenu = exports.GuestMenu = function (_React$Component) {\n  _inherits(GuestMenu, _React$Component);\n\n  function GuestMenu() {\n    _classCallCheck(this, GuestMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(GuestMenu).apply(this, arguments));\n  }\n\n  _createClass(GuestMenu, [{\n    key: 'showSignInModal',\n    value: function showSignInModal() {\n      _modal2.default.show(_signIn2.default);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu user-dropdown dropdown-menu-right',\n          role: 'menu' },\n        _react2.default.createElement(\n          'li',\n          { className: 'guest-preview' },\n          _react2.default.createElement(\n            'h4',\n            null,\n            gettext(\"You are browsing as guest.\")\n          ),\n          _react2.default.createElement(\n            'p',\n            null,\n            gettext('Sign in or register to start and participate in discussions.')\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-xs-6' },\n              _react2.default.createElement(\n                'button',\n                { type: 'button', className: 'btn btn-default btn-block',\n                  onClick: this.showSignInModal },\n                gettext(\"Sign in\")\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'col-xs-6' },\n              _react2.default.createElement(\n                _registerButton2.default,\n                { className: 'btn-primary btn-block' },\n                gettext(\"Register\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return GuestMenu;\n}(_react2.default.Component);\n\nvar GuestNav = exports.GuestNav = function (_GuestMenu) {\n  _inherits(GuestNav, _GuestMenu);\n\n  function GuestNav() {\n    _classCallCheck(this, GuestNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(GuestNav).apply(this, arguments));\n  }\n\n  _createClass(GuestNav, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'nav nav-guest' },\n        _react2.default.createElement(\n          'button',\n          { type: 'button', className: 'btn navbar-btn btn-default',\n            onClick: this.showSignInModal },\n          gettext(\"Sign in\")\n        ),\n        _react2.default.createElement(\n          _registerButton2.default,\n          { className: 'navbar-btn btn-primary' },\n          gettext(\"Register\")\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return GuestNav;\n}(GuestMenu);\n\nvar CompactGuestNav = exports.CompactGuestNav = function (_React$Component2) {\n  _inherits(CompactGuestNav, _React$Component2);\n\n  function CompactGuestNav() {\n    _classCallCheck(this, CompactGuestNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactGuestNav).apply(this, arguments));\n  }\n\n  _createClass(CompactGuestNav, [{\n    key: 'showGuestMenu',\n    value: function showGuestMenu() {\n      _mobileNavbarDropdown2.default.show(GuestMenu);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button', onClick: this.showGuestMenu },\n        _react2.default.createElement(_avatar2.default, { size: '64' })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return CompactGuestNav;\n}(_react2.default.Component);\n\n},{\"../../services/mobile-navbar-dropdown\":88,\"../../services/modal\":89,\"../avatar\":46,\"../register-button\":65,\"../sign-in.js\":71,\"react\":\"react\"}],74:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactUserMenu = exports.UserMenu = undefined;\nexports.select = select;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _guestNav = require('./guest-nav');\n\nvar _userNav = require('./user-nav');\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; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar UserMenu = exports.UserMenu = function (_React$Component) {\n  _inherits(UserMenu, _React$Component);\n\n  function UserMenu() {\n    _classCallCheck(this, UserMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserMenu).apply(this, arguments));\n  }\n\n  _createClass(UserMenu, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.props.isAuthenticated) {\n        return _react2.default.createElement(_userNav.UserNav, { user: this.props.user });\n      } else {\n        return _react2.default.createElement(_guestNav.GuestNav, null);\n      }\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return UserMenu;\n}(_react2.default.Component);\n\nvar CompactUserMenu = exports.CompactUserMenu = function (_React$Component2) {\n  _inherits(CompactUserMenu, _React$Component2);\n\n  function CompactUserMenu() {\n    _classCallCheck(this, CompactUserMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactUserMenu).apply(this, arguments));\n  }\n\n  _createClass(CompactUserMenu, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      if (this.props.isAuthenticated) {\n        return _react2.default.createElement(_userNav.CompactUserNav, { user: this.props.user });\n      } else {\n        return _react2.default.createElement(_guestNav.CompactGuestNav, null);\n      }\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return CompactUserMenu;\n}(_react2.default.Component);\n\nfunction select(state) {\n  return state.auth;\n}\n\n},{\"./guest-nav\":73,\"./user-nav\":75,\"react\":\"react\"}],75:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactUserNav = exports.UserNav = exports.UserMenu = undefined;\nexports.selectUserMenu = selectUserMenu;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _root = require('../change-avatar/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../../services/mobile-navbar-dropdown');\n\nvar _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);\n\nvar _modal = require('../../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\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; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar UserMenu = exports.UserMenu = function (_React$Component) {\n  _inherits(UserMenu, _React$Component);\n\n  function UserMenu() {\n    _classCallCheck(this, UserMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserMenu).apply(this, arguments));\n  }\n\n  _createClass(UserMenu, [{\n    key: 'logout',\n    value: function logout() {\n      var decision = confirm(gettext(\"Are you sure you want to sign out?\"));\n      if (decision) {\n        $('#hidden-logout-form').submit();\n      }\n    }\n  }, {\n    key: 'changeAvatar',\n    value: function changeAvatar() {\n      _modal2.default.show((0, _reactRedux.connect)(_root.select)(_root2.default));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu user-dropdown dropdown-menu-right',\n          role: 'menu' },\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-header' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            this.props.user.username\n          )\n        ),\n        _react2.default.createElement('li', { className: 'divider' }),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: this.props.user.absolute_url },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'account_circle'\n            ),\n            gettext(\"See your profile\")\n          )\n        ),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: _index2.default.get('USERCP_URL') },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'done_all'\n            ),\n            gettext(\"Change options\")\n          )\n        ),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link', onClick: this.changeAvatar },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'portrait'\n            ),\n            gettext(\"Change avatar\")\n          )\n        ),\n        _react2.default.createElement('li', { className: 'divider' }),\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-footer' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-default btn-block',\n              onClick: this.logout },\n            gettext(\"Log out\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return UserMenu;\n}(_react2.default.Component);\n\nvar UserNav = exports.UserNav = function (_React$Component2) {\n  _inherits(UserNav, _React$Component2);\n\n  function UserNav() {\n    _classCallCheck(this, UserNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserNav).apply(this, arguments));\n  }\n\n  _createClass(UserNav, [{\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'ul nav navbar-nav nav-user' },\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown' },\n          _react2.default.createElement(\n            'a',\n            { href: this.props.user.absolute_url, className: 'dropdown-toggle',\n              'data-toggle': 'dropdown', 'aria-haspopup': 'true', 'aria-expanded': 'false',\n              role: 'button' },\n            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '64' })\n          ),\n          _react2.default.createElement(UserMenu, { user: this.props.user })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return UserNav;\n}(_react2.default.Component);\n\nfunction selectUserMenu(state) {\n  return { user: state.auth.user };\n}\n\nvar CompactUserNav = exports.CompactUserNav = function (_React$Component3) {\n  _inherits(CompactUserNav, _React$Component3);\n\n  function CompactUserNav() {\n    _classCallCheck(this, CompactUserNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactUserNav).apply(this, arguments));\n  }\n\n  _createClass(CompactUserNav, [{\n    key: 'showUserMenu',\n    value: function showUserMenu() {\n      _mobileNavbarDropdown2.default.showConnected('user-menu', (0, _reactRedux.connect)(selectUserMenu)(UserMenu));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button', onClick: this.showUserMenu },\n        _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '64' })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return CompactUserNav;\n}(_react2.default.Component);\n\n},{\"../../index\":77,\"../../services/mobile-navbar-dropdown\":88,\"../../services/modal\":89,\"../avatar\":46,\"../change-avatar/root\":52,\"react\":\"react\",\"react-redux\":\"react-redux\"}],76:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\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 _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.toggle = function () {\n      _this.props.onChange({\n        target: {\n          value: !_this.props.value\n        }\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: \"getClassName\",\n    value: function getClassName() {\n      if (this.props.value) {\n        return \"btn btn-yes-no btn-yes-no-on\";\n      } else {\n        return \"btn btn-yes-no btn-yes-no-off\";\n      }\n    }\n  }, {\n    key: \"getIcon\",\n    value: function getIcon() {\n      if (this.props.value) {\n        return this.props.iconOn || 'check_box';\n      } else {\n        return this.props.iconOff || 'check_box_outline_blank';\n      }\n    }\n  }, {\n    key: \"getLabel\",\n    value: function getLabel() {\n      if (this.props.value) {\n        return this.props.labelOn || gettext(\"yes\");\n      } else {\n        return this.props.labelOff || gettext(\"no\");\n      }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: \"render\",\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"button\",\n        { type: \"button\",\n          onClick: this.toggle,\n          className: this.getClassName(),\n          id: this.props.id || null,\n          \"aria-describedby\": this.props['aria-describedby'] || null,\n          disabled: this.props.disabled || false },\n        _react2.default.createElement(\n          \"span\",\n          { className: \"material-icon\" },\n          this.getIcon()\n        ),\n        this.getLabel()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],77:[function(require,module,exports){\n(function (global){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Misago = undefined;\n\nvar _orderedList = require('./utils/ordered-list');\n\nvar _orderedList2 = _interopRequireDefault(_orderedList);\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\nvar Misago = exports.Misago = function () {\n  function Misago() {\n    _classCallCheck(this, Misago);\n\n    this._initializers = [];\n    this._context = {};\n  }\n\n  _createClass(Misago, [{\n    key: 'addInitializer',\n    value: function addInitializer(initializer) {\n      this._initializers.push({\n        key: initializer.name,\n\n        item: initializer.initializer,\n\n        after: initializer.after,\n        before: initializer.before\n      });\n    }\n  }, {\n    key: 'init',\n    value: function init(context) {\n      var _this = this;\n\n      this._context = context;\n\n      var initOrder = new _orderedList2.default(this._initializers).orderedValues();\n      initOrder.forEach(function (initializer) {\n        initializer(_this);\n      });\n    }\n\n    // context accessors\n\n  }, {\n    key: 'has',\n    value: function has(key) {\n      return this._context.hasOwnProperty(key);\n    }\n  }, {\n    key: 'get',\n    value: function get(key, fallback) {\n      if (this.has(key)) {\n        return this._context[key];\n      } else {\n        return fallback || undefined;\n      }\n    }\n  }]);\n\n  return Misago;\n}();\n\n// create  singleton\n\nvar misago = new Misago();\n\n// expose it globally\nglobal.misago = misago;\n\n// and export it for tests and stuff\nexports.default = misago;\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./utils/ordered-list\":97}],78:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SIGN_OUT = exports.SIGN_IN = exports.PATCH_USER = exports.initialState = undefined;\nexports.patchUser = patchUser;\nexports.signIn = signIn;\nexports.signOut = signOut;\nexports.default = auth;\n\nvar _users = require('./users');\n\nvar initialState = exports.initialState = {\n  signedIn: false,\n  signedOut: false\n};\n\nvar PATCH_USER = exports.PATCH_USER = 'PATCH_USER';\nvar SIGN_IN = exports.SIGN_IN = 'SIGN_IN';\nvar SIGN_OUT = exports.SIGN_OUT = 'SIGN_OUT';\n\nfunction patchUser(patch) {\n  return {\n    type: PATCH_USER,\n    patch: patch\n  };\n}\n\nfunction signIn(user) {\n  return {\n    type: SIGN_IN,\n    user: user\n  };\n}\n\nfunction signOut() {\n  var soft = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0];\n\n  return {\n    type: SIGN_OUT,\n    soft: soft\n  };\n}\n\nfunction auth() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case PATCH_USER:\n      var newState = Object.assign({}, state);\n      newState.user = Object.assign({}, state.user, action.patch);\n      return newState;\n\n    case SIGN_IN:\n      return Object.assign({}, state, {\n        signedIn: action.user\n      });\n\n    case SIGN_OUT:\n      return Object.assign({}, state, {\n        isAuthenticated: false,\n        isAnonymous: true,\n        signedOut: !action.soft\n      });\n\n    case _users.UPDATE_AVATAR:\n      if (state.isAuthenticated && state.user.id === action.userId) {\n        var _newState = Object.assign({}, state);\n        _newState.user = Object.assign({}, state.user, {\n          'avatar_hash': action.avatarHash\n        });\n        return _newState;\n      }\n      return state;\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":82}],79:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.showSnackbar = showSnackbar;\nexports.hideSnackbar = hideSnackbar;\nexports.default = snackbar;\nvar initialState = exports.initialState = {\n  type: 'info',\n  message: '',\n  isVisible: false\n};\n\nvar SHOW_SNACKBAR = exports.SHOW_SNACKBAR = 'SHOW_SNACKBAR';\nvar HIDE_SNACKBAR = exports.HIDE_SNACKBAR = 'HIDE_SNACKBAR';\n\nfunction showSnackbar(message, type) {\n  return {\n    type: SHOW_SNACKBAR,\n    message: message,\n    messageType: type\n  };\n}\n\nfunction hideSnackbar() {\n  return {\n    type: HIDE_SNACKBAR\n  };\n}\n\nfunction snackbar() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  if (action.type === SHOW_SNACKBAR) {\n    return {\n      type: action.messageType,\n      message: action.message,\n      isVisible: true\n    };\n  } else if (action.type === HIDE_SNACKBAR) {\n    return Object.assign({}, state, {\n      isVisible: false\n    });\n  } else {\n    return state;\n  }\n}\n\n},{}],80:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.doTick = doTick;\nexports.default = tick;\nvar initialState = exports.initialState = {\n  tick: 0\n};\n\nvar TICK = exports.TICK = 'TICK';\n\nfunction doTick() {\n  return {\n    type: TICK\n  };\n}\n\nfunction tick() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  if (action.type === TICK) {\n    return Object.assign({}, state, {\n      tick: state.tick + 1\n    });\n  } else {\n    return state;\n  }\n}\n\n},{}],81:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DEHYDRATE_RESULT = undefined;\nexports.dehydrate = dehydrate;\nexports.default = username;\n\nvar _users = require('./users');\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEHYDRATE_RESULT = exports.DEHYDRATE_RESULT = 'DEHYDRATE_RESULT';\n\nfunction dehydrate(items) {\n  return {\n    type: DEHYDRATE_RESULT,\n    items: items\n  };\n}\n\nfunction username() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case DEHYDRATE_RESULT:\n      return action.items.map(function (item) {\n        return Object.assign({}, item, {\n          changed_on: (0, _moment2.default)(item.changed_on)\n        });\n      });\n\n    case _users.UPDATE_AVATAR:\n      return state.map(function (item) {\n        if (item.changed_by && item.changed_by.id === action.userId) {\n          item.changed_by = Object.assign({}, item.changed_by, {\n            'avatar_hash': action.avatarHash\n          });\n        }\n\n        return Object.assign({}, item);\n      });\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":82,\"moment\":\"moment\"}],82:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.updateAvatar = updateAvatar;\nvar UPDATE_AVATAR = exports.UPDATE_AVATAR = 'UPDATE_AVATAR';\n\nfunction updateAvatar(user, avatarHash) {\n  return {\n    type: UPDATE_AVATAR,\n    userId: user.id,\n    avatarHash: avatarHash\n  };\n}\n\n},{}],83:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Ajax = exports.Ajax = function () {\n  function Ajax() {\n    _classCallCheck(this, Ajax);\n\n    this._cookieName = null;\n    this._csrfToken = null;\n  }\n\n  _createClass(Ajax, [{\n    key: 'init',\n    value: function init(cookieName) {\n      this._cookieName = cookieName;\n      this._csrfToken = this.getCsrfToken();\n    }\n  }, {\n    key: 'getCsrfToken',\n    value: function getCsrfToken() {\n      if (document.cookie.indexOf(this._cookieName) !== -1) {\n        var cookieRegex = new RegExp(this._cookieName + '\\=([^;]*)');\n        var cookie = document.cookie.match(cookieRegex)[0];\n        return cookie ? cookie.split('=')[1] : null;\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: 'request',\n    value: function request(method, url, data) {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        var xhr = {\n          url: url,\n          method: method,\n          headers: {\n            'X-CSRFToken': self._csrfToken\n          },\n\n          data: data ? JSON.stringify(data) : null,\n          contentType: \"application/json; charset=utf-8\",\n          dataType: 'json',\n\n          success: function success(data) {\n            resolve(data);\n          },\n\n          error: function error(jqXHR) {\n            var rejection = jqXHR.responseJSON || {};\n\n            rejection.status = jqXHR.status;\n\n            if (rejection.status === 0) {\n              rejection.detail = gettext(\"Lost connection with application.\");\n            }\n\n            rejection.statusText = jqXHR.statusText;\n\n            reject(rejection);\n          }\n        };\n\n        $.ajax(xhr);\n      });\n    }\n  }, {\n    key: 'get',\n    value: function get(url, params) {\n      if (params) {\n        url += '?' + $.param(params);\n      }\n      return this.request('GET', url);\n    }\n  }, {\n    key: 'post',\n    value: function post(url, data) {\n      return this.request('POST', url, data);\n    }\n  }, {\n    key: 'patch',\n    value: function patch(url, data) {\n      return this.request('PATCH', url, data);\n    }\n  }, {\n    key: 'put',\n    value: function put(url, data) {\n      return this.request('PUT', url, data);\n    }\n  }, {\n    key: 'delete',\n    value: function _delete(url) {\n      return this.request('DELETE', url);\n    }\n  }, {\n    key: 'upload',\n    value: function upload(url, data, progress) {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        var xhr = {\n          url: url,\n          method: 'POST',\n          headers: {\n            'X-CSRFToken': self._csrfToken\n          },\n\n          data: data,\n          contentType: false,\n          processData: false,\n\n          xhr: function xhr() {\n            var xhr = new window.XMLHttpRequest();\n            xhr.upload.addEventListener(\"progress\", function (evt) {\n              if (evt.lengthComputable) {\n                progress(Math.round(evt.loaded / evt.total * 100));\n              }\n            }, false);\n            return xhr;\n          },\n\n          success: function success(response) {\n            resolve(response);\n          },\n\n          error: function error(jqXHR) {\n            var rejection = jqXHR.responseJSON || {};\n\n            rejection.status = jqXHR.status;\n\n            if (rejection.status === 0) {\n              rejection.detail = gettext(\"Lost connection with application.\");\n            }\n\n            rejection.statusText = jqXHR.statusText;\n\n            reject(rejection);\n          }\n        };\n\n        $.ajax(xhr);\n      });\n    }\n  }]);\n\n  return Ajax;\n}();\n\nexports.default = new Ajax();\n\n},{}],84:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Auth = undefined;\n\nvar _auth = require('../reducers/auth');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// jshint ignore:line\n\nvar Auth = exports.Auth = function () {\n  function Auth() {\n    _classCallCheck(this, Auth);\n  }\n\n  _createClass(Auth, [{\n    key: 'init',\n    value: function init(store, local, modal) {\n      this._store = store;\n      this._local = local;\n      this._modal = modal;\n\n      // tell other tabs what auth state is because we are most current with it\n      this.syncSession();\n\n      // listen for other tabs to tell us that state changed\n      this.watchState();\n    }\n  }, {\n    key: 'syncSession',\n    value: function syncSession() {\n      var state = this._store.getState().auth;\n      if (state.isAuthenticated) {\n        this._local.set('auth', {\n          isAuthenticated: true,\n          username: state.user.username\n        });\n      } else {\n        this._local.set('auth', {\n          isAuthenticated: false\n        });\n      }\n    }\n  }, {\n    key: 'watchState',\n    value: function watchState() {\n      var _this = this;\n\n      this._local.watch('auth', function (newState) {\n        if (newState.isAuthenticated) {\n          _this._store.dispatch((0, _auth.signIn)({\n            username: newState.username\n          }));\n        } else {\n          _this._store.dispatch((0, _auth.signOut)());\n        }\n      });\n      this._modal.hide();\n    }\n  }, {\n    key: 'signIn',\n    value: function signIn(user) {\n      this._store.dispatch((0, _auth.signIn)(user));\n      this._local.set('auth', {\n        isAuthenticated: true,\n        username: user.username\n      });\n      this._modal.hide();\n    }\n  }, {\n    key: 'signOut',\n    value: function signOut() {\n      this._store.dispatch((0, _auth.signOut)());\n      this._local.set('auth', {\n        isAuthenticated: false\n      });\n      this._modal.hide();\n    }\n  }, {\n    key: 'softSignOut',\n    value: function softSignOut() {\n      this._store.dispatch((0, _auth.signOut)(true));\n      this._local.set('auth', {\n        isAuthenticated: false\n      });\n      this._modal.hide();\n    }\n  }]);\n\n  return Auth;\n}();\n\nexports.default = new Auth();\n\n},{\"../reducers/auth\":78}],85:[function(require,module,exports){\n'use strict';\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; }; }(); /* global grecaptcha */\n// jshint ignore:line\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Captcha = exports.ReCaptcha = exports.ReCaptchaComponent = exports.QACaptcha = exports.NoCaptcha = exports.BaseCaptcha = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _formGroup = require('../components/form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// jshint ignore:line\n\nvar BaseCaptcha = exports.BaseCaptcha = function () {\n  function BaseCaptcha() {\n    _classCallCheck(this, BaseCaptcha);\n  }\n\n  _createClass(BaseCaptcha, [{\n    key: 'init',\n    value: function init(context, ajax, include, snackbar) {\n      this._context = context;\n      this._ajax = ajax;\n      this._include = include;\n      this._snackbar = snackbar;\n    }\n  }]);\n\n  return BaseCaptcha;\n}();\n\nvar NoCaptcha = exports.NoCaptcha = function (_BaseCaptcha) {\n  _inherits(NoCaptcha, _BaseCaptcha);\n\n  function NoCaptcha() {\n    _classCallCheck(this, NoCaptcha);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(NoCaptcha).apply(this, arguments));\n  }\n\n  _createClass(NoCaptcha, [{\n    key: 'load',\n    value: function load() {\n      return new Promise(function (resolve) {\n        // immediately resolve as we don't have anything to validate\n        resolve();\n      });\n    }\n  }, {\n    key: 'validator',\n    value: function validator() {\n      return null;\n    }\n  }, {\n    key: 'component',\n    value: function component() {\n      return null;\n    }\n  }]);\n\n  return NoCaptcha;\n}(BaseCaptcha);\n\nvar QACaptcha = exports.QACaptcha = function (_BaseCaptcha2) {\n  _inherits(QACaptcha, _BaseCaptcha2);\n\n  function QACaptcha() {\n    _classCallCheck(this, QACaptcha);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(QACaptcha).apply(this, arguments));\n  }\n\n  _createClass(QACaptcha, [{\n    key: 'load',\n    value: function load() {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        self._ajax.get(self._context.get('CAPTCHA_API_URL')).then(function (data) {\n          self.question = data.question;\n          self.helpText = data.help_text;\n          resolve();\n        }, function () {\n          self._snackbar.error(gettext(\"Failed to load CAPTCHA.\"));\n          reject();\n        });\n      });\n    }\n  }, {\n    key: 'validator',\n    value: function validator() {\n      return [];\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'component',\n    value: function component(kwargs) {\n      return _react2.default.createElement(\n        _formGroup2.default,\n        { label: this.question, 'for': 'id_captcha',\n          labelClass: kwargs.labelClass || \"col-sm-4\",\n          controlClass: kwargs.controlClass || \"col-sm-8\",\n          validation: kwargs.form.state.errors.captcha,\n          helpText: this.helpText || null },\n        _react2.default.createElement('input', { type: 'text', id: 'id_captcha', className: 'form-control',\n          'aria-describedby': 'id_captcha_status',\n          disabled: kwargs.form.state.isLoading,\n          onChange: kwargs.form.bindInput('captcha'),\n          value: kwargs.form.state.captcha })\n      );\n    }\n    /* jshint ignore:end */\n\n  }]);\n\n  return QACaptcha;\n}(BaseCaptcha);\n\nvar ReCaptchaComponent = exports.ReCaptchaComponent = function (_React$Component) {\n  _inherits(ReCaptchaComponent, _React$Component);\n\n  function ReCaptchaComponent() {\n    _classCallCheck(this, ReCaptchaComponent);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(ReCaptchaComponent).apply(this, arguments));\n  }\n\n  _createClass(ReCaptchaComponent, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this4 = this;\n\n      grecaptcha.render('recaptcha', {\n        'sitekey': this.props.siteKey,\n        'callback': function callback(response) {\n          // fire fakey event to binding\n          _this4.props.binding({\n            target: {\n              value: response\n            }\n          });\n        }\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement('div', { id: 'recaptcha' });\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return ReCaptchaComponent;\n}(_react2.default.Component);\n\nvar ReCaptcha = exports.ReCaptcha = function (_BaseCaptcha3) {\n  _inherits(ReCaptcha, _BaseCaptcha3);\n\n  function ReCaptcha() {\n    _classCallCheck(this, ReCaptcha);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(ReCaptcha).apply(this, arguments));\n  }\n\n  _createClass(ReCaptcha, [{\n    key: 'load',\n    value: function load() {\n      this._include.include('https://www.google.com/recaptcha/api.js', true);\n\n      return new Promise(function (resolve) {\n        var wait = function wait() {\n          if (typeof grecaptcha === \"undefined\") {\n            window.setTimeout(function () {\n              wait();\n            }, 200);\n          } else {\n            resolve();\n          }\n        };\n        wait();\n      });\n    }\n  }, {\n    key: 'validator',\n    value: function validator() {\n      return [];\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'component',\n    value: function component(kwargs) {\n      return _react2.default.createElement(\n        _formGroup2.default,\n        { label: gettext(\"Captcha\"), 'for': 'id_captcha',\n          labelClass: kwargs.labelClass || \"col-sm-4\",\n          controlClass: kwargs.controlClass || \"col-sm-8\",\n          validation: kwargs.form.state.errors.captcha,\n          helpText: gettext(\"Please solve the quick test.\") },\n        _react2.default.createElement(ReCaptchaComponent, { siteKey: this._context.get('SETTINGS').recaptcha_site_key,\n          binding: kwargs.form.bindInput('captcha') })\n      );\n    }\n    /* jshint ignore:end */\n\n  }]);\n\n  return ReCaptcha;\n}(BaseCaptcha);\n\nvar Captcha = exports.Captcha = function () {\n  function Captcha() {\n    _classCallCheck(this, Captcha);\n  }\n\n  _createClass(Captcha, [{\n    key: 'init',\n    value: function init(context, ajax, include, snackbar) {\n      switch (context.get('SETTINGS').captcha_type) {\n        case 'no':\n          this._captcha = new NoCaptcha();\n          break;\n\n        case 'qa':\n          this._captcha = new QACaptcha();\n          break;\n\n        case 're':\n          this._captcha = new ReCaptcha();\n          break;\n      }\n\n      this._captcha.init(context, ajax, include, snackbar);\n    }\n\n    // accessors for underlying strategy\n\n  }, {\n    key: 'load',\n    value: function load() {\n      return this._captcha.load();\n    }\n  }, {\n    key: 'validator',\n    value: function validator() {\n      return this._captcha.validator();\n    }\n  }, {\n    key: 'component',\n    value: function component(kwargs) {\n      return this._captcha.component(kwargs);\n    }\n  }]);\n\n  return Captcha;\n}();\n\nexports.default = new Captcha();\n\n},{\"../components/form-group\":54,\"react\":\"react\"}],86:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Include = exports.Include = function () {\n  function Include() {\n    _classCallCheck(this, Include);\n  }\n\n  _createClass(Include, [{\n    key: 'init',\n    value: function init(staticUrl) {\n      this._staticUrl = staticUrl;\n      this._included = [];\n    }\n  }, {\n    key: 'include',\n    value: function include(script) {\n      var remote = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];\n\n      if (this._included.indexOf(script) === -1) {\n        this._included.push(script);\n        this._include(script, remote);\n      }\n    }\n  }, {\n    key: '_include',\n    value: function _include(script, remote) {\n      $.ajax({\n        url: (!remote ? this._staticUrl : '') + script,\n        cache: true,\n        dataType: 'script'\n      });\n    }\n  }]);\n\n  return Include;\n}();\n\nexports.default = new Include();\n\n},{}],87:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar storage = window.localStorage;\n\nvar LocalStorage = exports.LocalStorage = function () {\n  function LocalStorage() {\n    _classCallCheck(this, LocalStorage);\n  }\n\n  _createClass(LocalStorage, [{\n    key: 'init',\n    value: function init(prefix) {\n      var _this = this;\n\n      this._prefix = prefix;\n      this._watchers = [];\n\n      window.addEventListener('storage', function (e) {\n        var newValueJson = JSON.parse(e.newValue);\n        _this._watchers.forEach(function (watcher) {\n          if (watcher.key === e.key && e.oldValue !== e.newValue) {\n            watcher.callback(newValueJson);\n          }\n        });\n      });\n    }\n  }, {\n    key: 'set',\n    value: function set(key, value) {\n      storage.setItem(this._prefix + key, JSON.stringify(value));\n    }\n  }, {\n    key: 'get',\n    value: function get(key) {\n      var itemString = storage.getItem(this._prefix + key);\n      if (itemString) {\n        return JSON.parse(itemString);\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: 'watch',\n    value: function watch(key, callback) {\n      this._watchers.push({\n        key: this._prefix + key,\n        callback: callback\n      });\n    }\n  }]);\n\n  return LocalStorage;\n}();\n\nexports.default = new LocalStorage();\n\n},{}],88:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.MobileNavbarDropdown = undefined;\n\nvar _mountComponent = require('../utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\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\nvar MobileNavbarDropdown = exports.MobileNavbarDropdown = function () {\n  function MobileNavbarDropdown() {\n    _classCallCheck(this, MobileNavbarDropdown);\n  }\n\n  _createClass(MobileNavbarDropdown, [{\n    key: 'init',\n    value: function init(element) {\n      this._element = element;\n      this._component = null;\n    }\n  }, {\n    key: 'show',\n    value: function show(component) {\n      if (this._component === component) {\n        this.hide();\n      } else {\n        this._component = component;\n        (0, _mountComponent2.default)(component, this._element.id);\n        $(this._element).addClass('open');\n      }\n    }\n  }, {\n    key: 'showConnected',\n    value: function showConnected(name, component) {\n      if (this._component === name) {\n        this.hide();\n      } else {\n        this._component = name;\n        (0, _mountComponent2.default)(component, this._element.id, true);\n        $(this._element).addClass('open');\n      }\n    }\n  }, {\n    key: 'hide',\n    value: function hide() {\n      $(this._element).removeClass('open');\n      this._component = null;\n    }\n  }]);\n\n  return MobileNavbarDropdown;\n}();\n\nexports.default = new MobileNavbarDropdown();\n\n},{\"../utils/mount-component\":96}],89:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Modal = undefined;\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _mountComponent = require('../utils/mount-component');\n\nvar _mountComponent2 = _interopRequireDefault(_mountComponent);\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\nvar Modal = exports.Modal = function () {\n  function Modal() {\n    _classCallCheck(this, Modal);\n  }\n\n  _createClass(Modal, [{\n    key: 'init',\n    value: function init(element) {\n      var _this = this;\n\n      this._element = element;\n\n      this._modal = $(element).modal({ show: false });\n\n      this._modal.on('hidden.bs.modal', function () {\n        _reactDom2.default.unmountComponentAtNode(_this._element);\n      });\n    }\n  }, {\n    key: 'show',\n    value: function show(component) {\n      (0, _mountComponent2.default)(component, this._element.id);\n      this._modal.modal('show');\n    }\n  }, {\n    key: 'hide',\n    value: function hide() {\n      this._modal.modal('hide');\n    }\n  }]);\n\n  return Modal;\n}();\n\nexports.default = new Modal();\n\n},{\"../utils/mount-component\":96,\"react-dom\":\"react-dom\"}],90:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Snackbar = undefined;\n\nvar _snackbar = require('../reducers/snackbar');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar HIDE_ANIMATION_LENGTH = 300;\nvar MESSAGE_SHOW_LENGTH = 5000;\n\nvar Snackbar = exports.Snackbar = function () {\n  function Snackbar() {\n    _classCallCheck(this, Snackbar);\n  }\n\n  _createClass(Snackbar, [{\n    key: 'init',\n    value: function init(store) {\n      this._store = store;\n      this._timeout = null;\n    }\n  }, {\n    key: 'alert',\n    value: function alert(message, type) {\n      var _this = this;\n\n      if (this._timeout) {\n        window.clearTimeout(this._timeout);\n        this._store.dispatch((0, _snackbar.hideSnackbar)());\n\n        this._timeout = window.setTimeout(function () {\n          _this._timeout = null;\n          _this.alert(message, type);\n        }, HIDE_ANIMATION_LENGTH);\n      } else {\n        this._store.dispatch((0, _snackbar.showSnackbar)(message, type));\n        this._timeout = window.setTimeout(function () {\n          _this._store.dispatch((0, _snackbar.hideSnackbar)());\n          _this._timeout = null;\n        }, MESSAGE_SHOW_LENGTH);\n      }\n    }\n\n    // shorthands for message types\n\n  }, {\n    key: 'info',\n    value: function info(message) {\n      this.alert(message, 'info');\n    }\n  }, {\n    key: 'success',\n    value: function success(message) {\n      this.alert(message, 'success');\n    }\n  }, {\n    key: 'warning',\n    value: function warning(message) {\n      this.alert(message, 'warning');\n    }\n  }, {\n    key: 'error',\n    value: function error(message) {\n      this.alert(message, 'error');\n    }\n\n    // shorthand for api errors\n\n  }, {\n    key: 'apiError',\n    value: function apiError(rejection) {\n      var message = gettext(\"Unknown error has occured.\");\n\n      if (rejection.status === 0) {\n        message = rejection.detail;\n      }\n\n      if (rejection.status === 400 && rejection.detail) {\n        message = rejection.detail;\n      }\n\n      if (rejection.status === 403) {\n        message = rejection.detail;\n        if (message === \"Permission denied\") {\n          message = gettext(\"You don't have permission to perform this action.\");\n        }\n      }\n\n      if (rejection.status === 404) {\n        message = gettext(\"Action link is invalid.\");\n      }\n\n      this.error(message);\n    }\n  }]);\n\n  return Snackbar;\n}();\n\nexports.default = new Snackbar();\n\n},{\"../reducers/snackbar\":79}],91:[function(require,module,exports){\n'use strict';\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.StoreWrapper = undefined;\n\nvar _redux = require('redux');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar StoreWrapper = exports.StoreWrapper = function () {\n  function StoreWrapper() {\n    _classCallCheck(this, StoreWrapper);\n\n    this._store = null;\n    this._reducers = {};\n    this._initialState = {};\n  }\n\n  _createClass(StoreWrapper, [{\n    key: 'addReducer',\n    value: function addReducer(name, reducer, initialState) {\n      this._reducers[name] = reducer;\n      this._initialState[name] = initialState;\n    }\n  }, {\n    key: 'init',\n    value: function init() {\n      this._store = (0, _redux.createStore)((0, _redux.combineReducers)(this._reducers), this._initialState);\n    }\n  }, {\n    key: 'getStore',\n    value: function getStore() {\n      return this._store;\n    }\n\n    // Store API\n\n  }, {\n    key: 'getState',\n    value: function getState() {\n      return this._store.getState();\n    }\n  }, {\n    key: 'dispatch',\n    value: function dispatch(action) {\n      return this._store.dispatch(action);\n    }\n  }]);\n\n  return StoreWrapper;\n}();\n\nexports.default = new StoreWrapper();\n\n},{\"redux\":\"redux\"}],92:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* global zxcvbn */\n\nvar Zxcvbn = exports.Zxcvbn = function () {\n  function Zxcvbn() {\n    _classCallCheck(this, Zxcvbn);\n  }\n\n  _createClass(Zxcvbn, [{\n    key: \"init\",\n    value: function init(include) {\n      this._include = include;\n    }\n  }, {\n    key: \"scorePassword\",\n    value: function scorePassword(password, inputs) {\n      // 0-4 score, the more the stronger password\n      return zxcvbn(password, inputs).score;\n    }\n  }, {\n    key: \"load\",\n    value: function load() {\n      if (typeof zxcvbn === \"undefined\") {\n        this._include.include('misago/js/zxcvbn.js');\n        return this._loadingPromise();\n      } else {\n        return this._loadedPromise();\n      }\n    }\n  }, {\n    key: \"_loadingPromise\",\n    value: function _loadingPromise() {\n      return new Promise(function (resolve) {\n        var wait = function wait() {\n          if (typeof zxcvbn === \"undefined\") {\n            window.setTimeout(function () {\n              wait();\n            }, 200);\n          } else {\n            resolve();\n          }\n        };\n        wait();\n      });\n    }\n  }, {\n    key: \"_loadedPromise\",\n    value: function _loadedPromise() {\n      // we have already loaded zxcvbn.js, resolve away!\n      return new Promise(function (resolve) {\n        resolve();\n      });\n    }\n  }]);\n\n  return Zxcvbn;\n}();\n\nexports.default = new Zxcvbn();\n\n},{}],93:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (ban, changeState) {\n  _reactDom2.default.render(\n  /* jshint ignore:start */\n  _react2.default.createElement(\n    _reactRedux.Provider,\n    { store: _store2.default.getStore() },\n    _react2.default.createElement(RedrawedBannedPage, { message: ban.message,\n      expires: ban.expires_on ? (0, _moment2.default)(ban.expires_on) : null })\n  ),\n  /* jshint ignore:end */\n  document.getElementById('page-mount'));\n\n  if (typeof changeState === 'undefined' || changeState) {\n    var forumName = _index2.default.get('SETTINGS').forum_name;\n    document.title = gettext(\"You are banned\") + ' | ' + forumName;\n    window.history.pushState({}, \"\", _index2.default.get('BANNED_URL'));\n  }\n};\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = require('react-redux');\n\nvar _bannedPage = require('../components/banned-page');\n\nvar _bannedPage2 = _interopRequireDefault(_bannedPage);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _store = require('../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// jshint ignore:line\n\n/* jshint ignore:start */\n// jshint ignore:line\n// jshint ignore:line\nvar select = function select(state) {\n  return state.tick;\n}; // jshint ignore:line\n// jshint ignore:line\n\nvar RedrawedBannedPage = (0, _reactRedux.connect)(select)(_bannedPage2.default);\n/* jshint ignore:end */\n\n},{\"../components/banned-page\":47,\"../index\":77,\"../services/store\":91,\"moment\":\"moment\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],94:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (list, rowWidth) {\n  var padding = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];\n\n  var rows = [];\n  var row = [];\n\n  list.forEach(function (element) {\n    row.push(element);\n    if (row.length === rowWidth) {\n      rows.push(row);\n      row = [];\n    }\n  });\n\n  // pad row to required length?\n  if (padding !== false && row.length > 0 && row.length < rowWidth) {\n    for (var i = row.length; i < rowWidth; i++) {\n      row.push(padding);\n    }\n  }\n\n  if (row.length) {\n    rows.push(row);\n  }\n\n  return rows;\n};\n\n},{}],95:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (bytes) {\n  if (bytes > 1000 * 1000 * 1000) {\n    return Math.round(bytes * 100 / (1000 * 1000 * 1000)) / 100 + ' GB';\n  } else if (bytes > 1000 * 1000) {\n    return Math.round(bytes * 100 / (1000 * 1000)) / 100 + ' MB';\n  } else if (bytes > 1000) {\n    return Math.round(bytes * 100 / 1000) / 100 + ' KB';\n  } else {\n    return Math.round(bytes * 100) / 100 + ' B';\n  }\n};\n\n},{}],96:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (Component, rootElementId) {\n  var connected = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2];\n\n  var rootElement = document.getElementById(rootElementId);\n\n  if (rootElement) {\n    if (connected) {\n      _reactDom2.default.render(\n      /* jshint ignore:start */\n      _react2.default.createElement(\n        _reactRedux.Provider,\n        { store: _store2.default.getStore() },\n        _react2.default.createElement(Component, null)\n      ),\n      /* jshint ignore:end */\n      rootElement);\n    } else {\n      _reactDom2.default.render(\n      /* jshint ignore:start */\n      _react2.default.createElement(Component, null),\n      /* jshint ignore:end */\n      rootElement);\n    }\n  }\n};\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = require('react-redux');\n\nvar _store = require('../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n},{\"../services/store\":91,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],97:[function(require,module,exports){\n\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar OrderedList = function () {\n  function OrderedList(items) {\n    _classCallCheck(this, OrderedList);\n\n    this.isOrdered = false;\n    this._items = items || [];\n  }\n\n  _createClass(OrderedList, [{\n    key: \"add\",\n    value: function add(key, item, order) {\n      this._items.push({\n        key: key,\n        item: item,\n\n        after: order ? order.after || null : null,\n        before: order ? order.before || null : null\n      });\n    }\n  }, {\n    key: \"get\",\n    value: function get(key, value) {\n      for (var i = 0; i < this._items.length; i++) {\n        if (this._items[i].key === key) {\n          return this._items[i].item;\n        }\n      }\n\n      return value;\n    }\n  }, {\n    key: \"has\",\n    value: function has(key) {\n      return this.get(key) !== undefined;\n    }\n  }, {\n    key: \"values\",\n    value: function values() {\n      var values = [];\n      for (var i = 0; i < this._items.length; i++) {\n        values.push(this._items[i].item);\n      }\n      return values;\n    }\n  }, {\n    key: \"order\",\n    value: function order(values_only) {\n      if (!this.isOrdered) {\n        this._items = this._order(this._items);\n        this.isOrdered = true;\n      }\n\n      if (values_only || typeof values_only === 'undefined') {\n        return this.values();\n      } else {\n        return this._items;\n      }\n    }\n  }, {\n    key: \"orderedValues\",\n    value: function orderedValues() {\n      return this.order(true);\n    }\n  }, {\n    key: \"_order\",\n    value: function _order(unordered) {\n      // Index of unordered items\n      var index = [];\n      unordered.forEach(function (item) {\n        index.push(item.key);\n      });\n\n      // Ordered items\n      var ordered = [];\n      var ordering = [];\n\n      // First pass: register items that\n      // don't specify their order\n      unordered.forEach(function (item) {\n        if (!item.after && !item.before) {\n          ordered.push(item);\n          ordering.push(item.key);\n        }\n      });\n\n      // Second pass: register items that\n      // specify their before to \"_end\"\n      unordered.forEach(function (item) {\n        if (item.before === \"_end\") {\n          ordered.push(item);\n          ordering.push(item.key);\n        }\n      });\n\n      // Third pass: keep iterating items\n      // until we hit iterations limit or finish\n      // ordering list\n      function insertItem(item) {\n        var insertAt = -1;\n        if (ordering.indexOf(item.key) === -1) {\n          if (item.after) {\n            insertAt = ordering.indexOf(item.after);\n            if (insertAt !== -1) {\n              insertAt += 1;\n            }\n          } else if (item.before) {\n            insertAt = ordering.indexOf(item.before);\n          }\n\n          if (insertAt !== -1) {\n            ordered.splice(insertAt, 0, item);\n            ordering.splice(insertAt, 0, item.key);\n          }\n        }\n      }\n\n      var iterations = 200;\n      while (iterations > 0 && index.length !== ordering.length) {\n        iterations -= 1;\n        unordered.forEach(insertItem);\n      }\n\n      return ordered;\n    }\n  }]);\n\n  return OrderedList;\n}();\n\nexports.default = OrderedList;\n\n},{}],98:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.int = int;\nexports.range = range;\nfunction int(min, max) {\n  return Math.floor(Math.random() * (max + 1) + min);\n}\n\nfunction range(min, max) {\n  var array = new Array(int(min, max));\n  for (var i = 0; i < array.length; i++) {\n    array[i] = i;\n  }\n\n  return array;\n}\n\n},{}],99:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (options) {\n  var routes = {\n    'component': options.component,\n    'childRoutes': [{\n      'path': options.root,\n      'onEnter': function onEnter(nextState, replaceState) {\n        replaceState(null, options.paths[0].path);\n      }\n    }].concat(options.paths.map(function (path) {\n      return {\n        'path': path.path,\n        'component': path.component\n      };\n    }))\n  };\n\n  _reactDom2.default.render(_react2.default.createElement(\n    _reactRedux.Provider,\n    { store: _store2.default.getStore() },\n    _react2.default.createElement(_reactRouter.Router, { routes: routes, history: history })\n  ), rootElement);\n};\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = require('react-redux');\n\nvar _reactRouter = require('react-router');\n\nvar _createBrowserHistory = require('history/lib/createBrowserHistory');\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _store = require('../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// jshint ignore:start\n\nvar rootElement = document.getElementById('page-mount');\nvar history = new _createBrowserHistory2.default();\n\n},{\"../services/store\":91,\"history/lib/createBrowserHistory\":35,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\",\"react-router\":\"react-router\"}],100:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.required = required;\nexports.email = email;\nexports.minLength = minLength;\nexports.maxLength = maxLength;\nexports.usernameMinLength = usernameMinLength;\nexports.usernameMaxLength = usernameMaxLength;\nexports.usernameContent = usernameContent;\nexports.passwordMinLength = passwordMinLength;\nvar EMAIL = /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\nvar USERNAME = new RegExp('^[0-9a-z]+$', 'i');\n\nfunction required() {\n  return function (value) {\n    if ($.trim(value).length === 0) {\n      return gettext(\"This field is required.\");\n    }\n  };\n}\n\nfunction email(message) {\n  return function (value) {\n    if (!EMAIL.test(value)) {\n      return message || gettext(\"Enter a valid email address.\");\n    }\n  };\n}\n\nfunction minLength(limitValue, message) {\n  return function (value) {\n    var returnMessage = '';\n    var length = $.trim(value).length;\n\n    if (length < limitValue) {\n      if (message) {\n        returnMessage = message(limitValue, length);\n      } else {\n        returnMessage = ngettext(\"Ensure this value has at least %(limit_value)s character (it has %(show_value)s).\", \"Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).\", limitValue);\n      }\n      return interpolate(returnMessage, {\n        limit_value: limitValue,\n        show_value: length\n      }, true);\n    }\n  };\n}\n\nfunction maxLength(limitValue, message) {\n  return function (value) {\n    var returnMessage = '';\n    var length = $.trim(value).length;\n\n    if (length > limitValue) {\n      if (message) {\n        returnMessage = message(limitValue, length);\n      } else {\n        returnMessage = ngettext(\"Ensure this value has at most %(limit_value)s character (it has %(show_value)s).\", \"Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).\", limitValue);\n      }\n      return interpolate(returnMessage, {\n        limit_value: limitValue,\n        show_value: length\n      }, true);\n    }\n  };\n}\n\nfunction usernameMinLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Username must be at least %(limit_value)s character long.\", \"Username must be at least %(limit_value)s characters long.\", limitValue);\n  };\n  return this.minLength(settings.username_length_min, message);\n}\n\nfunction usernameMaxLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Username cannot be longer than %(limit_value)s character.\", \"Username cannot be longer than %(limit_value)s characters.\", limitValue);\n  };\n  return this.maxLength(settings.username_length_max, message);\n}\n\nfunction usernameContent() {\n  return function (value) {\n    if (!USERNAME.test($.trim(value))) {\n      return gettext(\"Username can only contain latin alphabet letters and digits.\");\n    }\n  };\n}\n\nfunction passwordMinLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Valid password must be at least %(limit_value)s character long.\", \"Valid password must be at least %(limit_value)s characters long.\", limitValue);\n  };\n  return this.minLength(settings.password_length_min, message);\n}\n\n},{}]},{},[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]);\n"],"sourceRoot":"/source/"}

+ 27 - 0
misago/templates/misago/options/noscript.html

@@ -0,0 +1,27 @@
+{% extends "misago/base.html" %}
+{% load i18n %}
+
+
+{% block title %}{% trans "Change your options" %} | {{ block.super }}{% endblock %}
+
+
+{% block content %}
+<div class="page page-options page-error page-noscript">
+  <noscript>
+    <div class="container">
+      <div class="message-panel">
+
+        <div class="message-icon">
+          <span class="material-icon">code</span>
+        </div>
+
+        <div class="message-body">
+          <p class="lead">{% trans "Enable JavaScript" %}</p>
+          <p>{% trans "You need to enable JavaScript in your browser to change your options." %}</p>
+        </div>
+
+      </div>
+    </div>
+  </noscript>
+</div>
+{% endblock content %}

+ 15 - 5
misago/users/serializers/user.py

@@ -25,7 +25,7 @@ class AuthenticatedUserSerializer(serializers.ModelSerializer):
     rank = RankSerializer(many=False, read_only=True)
     rank = RankSerializer(many=False, read_only=True)
 
 
     absolute_url = serializers.SerializerMethodField()
     absolute_url = serializers.SerializerMethodField()
-    avatar_api_url = serializers.SerializerMethodField()
+    api_url = serializers.SerializerMethodField()
 
 
     class Meta:
     class Meta:
         model = get_user_model()
         model = get_user_model()
@@ -50,7 +50,7 @@ class AuthenticatedUserSerializer(serializers.ModelSerializer):
             'posts',
             'posts',
             'acl',
             'acl',
             'absolute_url',
             'absolute_url',
-            'avatar_api_url'
+            'api_url'
         )
         )
 
 
     def get_acl(self, obj):
     def get_acl(self, obj):
@@ -59,9 +59,19 @@ class AuthenticatedUserSerializer(serializers.ModelSerializer):
     def get_absolute_url(self, obj):
     def get_absolute_url(self, obj):
         return obj.get_absolute_url()
         return obj.get_absolute_url()
 
 
-    def get_avatar_api_url(self, obj):
-        return reverse('misago:api:user-avatar', kwargs={'pk': obj.pk})
-
+    def get_api_url(self, obj):
+        return {
+            'avatar': reverse(
+                'misago:api:user-avatar', kwargs={'pk': obj.pk}),
+            'options': reverse(
+                'misago:api:user-forum-options', kwargs={'pk': obj.pk}),
+            'username': reverse(
+                'misago:api:user-username', kwargs={'pk': obj.pk}),
+            'change_password': reverse(
+                'misago:api:user-change-password', kwargs={'pk': obj.pk}),
+            'change_email': reverse(
+                'misago:api:user-change-email', kwargs={'pk': obj.pk}),
+        }
 
 
 class AnonymousUserSerializer(serializers.Serializer):
 class AnonymousUserSerializer(serializers.Serializer):
     id = serializers.ReadOnlyField()
     id = serializers.ReadOnlyField()

+ 1 - 9
misago/users/tests/-test_options_views.py → misago/users/tests/test_options_views.py

@@ -13,12 +13,4 @@ class OptionsViewsTests(AuthenticatedUserTestCase):
         response = self.client.get(reverse('misago:options_form', kwargs={
         response = self.client.get(reverse('misago:options_form', kwargs={
             'form_name': 'some-fake-form'
             'form_name': 'some-fake-form'
         }))
         }))
-        self.assertEqual(response.status_code, 200)
-
-    def test_token_form_view_returns_200(self):
-        """/options/some-form has no show stoppers"""
-        response = self.client.get(reverse('misago:options_form', kwargs={
-            'form_name': 'some-fake-form',
-            'token': 's0m3-t0k3n'
-        }))
-        self.assertEqual(response.status_code, 200)
+        self.assertEqual(response.status_code, 200)

+ 1 - 2
misago/users/urls/__init__.py

@@ -26,8 +26,7 @@ urlpatterns += patterns('misago.users.views.forgottenpassword',
 
 
 urlpatterns += patterns('misago.users.views.options',
 urlpatterns += patterns('misago.users.views.options',
     url(r'^options/$', 'index', name='options'),
     url(r'^options/$', 'index', name='options'),
-    url(r'^options/(?P<form_name>[-a-zA-Z]+)/$', 'form', name='options_form'),
-    url(r'^options/(?P<form_name>[-a-zA-Z]+)/(?P<token>[-a-zA-Z0-9]+)/$', 'form', name='options_form'),
+    url(r'^options/(?P<form_name>[-a-zA-Z]+)/$', 'index', name='options_form'),
 )
 )
 
 
 
 

+ 26 - 11
misago/users/views/options.py

@@ -1,20 +1,35 @@
-from django.shortcuts import redirect, render
+from django.core.urlresolvers import reverse
+from django.shortcuts import render
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 
 
 from misago.users.decorators import deny_guests
 from misago.users.decorators import deny_guests
 
 
 
 
 @deny_guests
 @deny_guests
-def index(request):
-    return redirect('misago:index')
-
-
-@deny_guests
-def form(request, form_name, token=None):
-    return noscript(request, **{
-        'title': _("Options"),
-        'message': _("To change options enable JavaScript."),
-    })
+def index(request, *args, **kwargs):
+    request.frontend_context.update({
+        'USERNAME_CHANGES_API': reverse('misago:api:usernamechange-list'),
+
+        'USER_OPTIONS': [
+            {
+                'name': _("Forum options"),
+                'icon': 'settings',
+                'component': 'forum-options',
+            },
+            {
+                'name': _("Change username"),
+                'icon': 'card_membership',
+                'component': 'change-username',
+            },
+            {
+                'name': _("Change sign-in credentials"),
+                'icon': 'vpn_key',
+                'component': 'sign-in-credentials',
+            },
+        ]
+    });
+
+    return render(request, 'misago/options/noscript.html')
 
 
 
 
 # DEPRECATED VIEWS - DELETE AFTER USER CP IS DONE
 # DEPRECATED VIEWS - DELETE AFTER USER CP IS DONE