Browse Source

added tests to set generated/download gravatar options

Rafał Pitoń 9 years ago
parent
commit
40ab7f2fdf

+ 14 - 15
frontend/gulpfile.js

@@ -29,11 +29,19 @@ gulp.task('watch', ['fastbuild'], function() {
 // Builds
 
 gulp.task('fastbuild', [
-  'fastsource', 'faststyle', 'faststatic', 'fastvendorsources', 'copyvendors'
+  'fastsource',
+  'faststyle',
+  'faststatic',
+  'fastvendorsources',
+  'copyzxcvbn'
 ]);
 
 gulp.task('build', [
-  'source', 'style', 'static', 'vendorsources', 'copyvendors'
+  'source',
+  'style',
+  'static',
+  'vendorsources',
+  'copyzxcvbn'
 ]);
 
 // Source tasks
@@ -69,6 +77,7 @@ gulp.task('fastsource', ['lintsource'], function() {
     .external('moment')
     .external('react')
     .external('react-dom')
+    .external('react-router')
     .external('redux')
     .external('react-redux')
     .transform(babelify)
@@ -88,6 +97,7 @@ gulp.task('source', ['lintsource'], function() {
     .external('moment')
     .external('react')
     .external('react-dom')
+    .external('react-router')
     .external('redux')
     .external('react-redux')
     .transform(babelify)
@@ -156,6 +166,7 @@ gulp.task('fastvendorsources', function() {
     .require('moment')
     .require('react')
     .require('react-dom')
+    .require('react-router')
     .require('redux')
     .require('react-redux')
     .bundle()
@@ -174,6 +185,7 @@ gulp.task('vendorsources', function() {
     .require('moment')
     .require('react')
     .require('react-dom')
+    .require('react-router')
     .require('redux')
     .require('react-redux')
     .transform(babelify)
@@ -186,19 +198,6 @@ gulp.task('vendorsources', function() {
     .pipe(gulp.dest(misago + 'js'));
 });
 
-gulp.task('copyvendors', ['copyzxcvbn'], function() {
-  return gulp.src([
-      'cropit/dist/jquery.cropit.js',
-      'dropzone/dist/dropzone.js'
-    ].map(function(item) {
-      return 'node_modules/' + item;
-    }))
-    .pipe(sourcemaps.init())
-    .pipe(uglify())
-    .pipe(sourcemaps.write('.'))
-    .pipe(gulp.dest(misago + 'js'));
-});
-
 gulp.task('copyzxcvbn', function() {
   return gulp.src('node_modules/zxcvbn/dist/*')
     .pipe(gulp.dest(misago + 'js'));

+ 3 - 1
frontend/package.json

@@ -15,7 +15,9 @@
     "bootstrap-transition": "./node_modules/bootstrap/js/transition.js",
     "bootstrap-affix": "./node_modules/bootstrap/js/affix.js",
     "bootstrap-modal": "./node_modules/bootstrap/js/modal.js",
-    "bootstrap-dropdown": "./node_modules/bootstrap/js/dropdown.js"
+    "bootstrap-dropdown": "./node_modules/bootstrap/js/dropdown.js",
+    "dropzone": "./node_modules/dropzone/dist/dropzone.js",
+    "cropit": "./node_modules/cropit/dist/jquery.cropit.js"
   },
   "browserify-shim": {
     "jquery": "jQuery"

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

@@ -26,17 +26,17 @@ export default class extends React.Component {
     ajax.post(this.props.user.avatar_api_url, {
       avatar: avatarType
     }).then((response) => {
-      snackbar.success(response.detail);
-      this.props.updateAvatar(response.avatar_hash, response.options);
-
       this.setState({
         'isLoading': false
       });
+
+      snackbar.success(response.detail);
+      this.props.onComplete(response.avatar_hash, response.options);
     }, (rejection) => {
       if (rejection.status === 400) {
         snackbar.error(rejection.detail);
       } else {
-        snackbar.showError(rejection);
+        this.props.showError(rejection);
       }
 
       this.setState({
@@ -60,7 +60,7 @@ export default class extends React.Component {
       /* jshint ignore:start */
       return <Button onClick={this.setGravatar}
               disabled={this.state.isLoading}
-              className="btn-default btn-block">
+              className="btn-default btn-block btn-avatar-gravatar">
         {gettext("Download my Gravatar")}
       </Button>;
       /* jshint ignore:end */
@@ -101,7 +101,7 @@ export default class extends React.Component {
 
           <Button onClick={this.setGenerated}
                   disabled={this.state.isLoading}
-                  className="btn-default btn-block">
+                  className="btn-default btn-block btn-avatar-generate">
             {gettext("Generate my individual avatar")}
           </Button>
 

+ 12 - 17
frontend/src/components/change-avatar/root.js

@@ -1,11 +1,8 @@
 import React from 'react';
 import AvatarIndex from 'misago/components/change-avatar/index'; // jshint ignore:line
 import Loader from 'misago/components/modal-loader'; // jshint ignore:line
-import misago from 'misago/index';
 import { updateAvatar } from 'misago/reducers/users'; // jshint ignore:line
 import ajax from 'misago/services/ajax';
-import cropit from 'misago/services/cropit';
-import dropzone from 'misago/services/dropzone';
 import store from 'misago/services/store'; // jshint ignore:line
 
 export class ChangeAvatarError extends React.Component {
@@ -40,14 +37,11 @@ export class ChangeAvatarError extends React.Component {
 
 export default class extends React.Component {
   componentDidMount() {
-    Promise.all([
-      ajax.get(misago.get('user').avatar_api_url),
-      cropit.load(),
-      dropzone.load()
-    ]).then((resolutions) => {
+    ajax.get(this.props.user.avatar_api_url).then((options) => {
       this.setState({
         'component': AvatarIndex,
-        'options': resolutions[0]
+        'options': options,
+        'error': null
       });
     }, (rejection) => {
       this.showError(rejection);
@@ -61,18 +55,18 @@ export default class extends React.Component {
     });
   };
 
-  updateAvatar = (avatarHash, options) => {
-    store.dispatch(updateAvatar(this.props.user, avatarHash));
-
+  showIndex = () => {
     this.setState({
-      'component': AvatarIndex,
-      options
+      'component': AvatarIndex
     });
   };
 
-  showIndex = () => {
+  completeFlow = (avatarHash, options) => {
+    store.dispatch(updateAvatar(this.props.user, avatarHash));
+
     this.setState({
-      'component': AvatarIndex
+      'component': AvatarIndex,
+      options
     });
   };
   /* jshint ignore:end */
@@ -88,7 +82,8 @@ export default class extends React.Component {
         /* jshint ignore:start */
         return <this.state.component options={this.state.options}
                                      user={this.props.user}
-                                     updateAvatar={this.updateAvatar}
+                                     onComplete={this.onComplete}
+                                     showError={this.showError}
                                      showIndex={this.showIndex} />;
         /* jshint ignore:end */
       }

+ 0 - 12
frontend/src/initializers/cropit.js

@@ -1,12 +0,0 @@
-import misago from 'misago/index';
-import include from 'misago/services/include';
-import cropit from 'misago/services/cropit';
-
-export default function initializer() {
-  cropit.init(include);
-}
-
-misago.addInitializer({
-  name: 'cropit',
-  initializer: initializer
-});

+ 0 - 12
frontend/src/initializers/dropzone.js

@@ -1,12 +0,0 @@
-import misago from 'misago/index';
-import include from 'misago/services/include';
-import dropzone from 'misago/services/dropzone';
-
-export default function initializer() {
-  dropzone.init(include);
-}
-
-misago.addInitializer({
-  name: 'dropzone',
-  initializer: initializer
-});

+ 5 - 0
frontend/src/services/ajax.js

@@ -40,6 +40,11 @@ export class Ajax {
           var rejection = jqXHR.responseJSON || {};
 
           rejection.status = jqXHR.status;
+
+          if (rejection.status === 0) {
+            rejection.detail = gettext("Lost connection with application.");
+          }
+
           rejection.statusText = jqXHR.statusText;
 
           reject(rejection);

+ 0 - 39
frontend/src/services/cropit.js

@@ -1,39 +0,0 @@
-import jQuery from 'jQuery';
-
-export class Cropit {
-  init(include) {
-    this._include = include;
-  }
-
-  load() {
-    if (typeof jQuery.cropit === "undefined") {
-      this._include.include('misago/js/jquery.cropit.js');
-      return this._loadingPromise();
-    } else {
-      return this._loadedPromise();
-    }
-  }
-
-  _loadingPromise() {
-    return new Promise(function(resolve) {
-      var wait = function() {
-        if (typeof jQuery.cropit === "undefined") {
-          window.setTimeout(function() {
-            wait();
-          }, 200);
-        } else {
-          resolve();
-        }
-      };
-      wait();
-    });
-  }
-
-  _loadedPromise() {
-    return new Promise(function(resolve) {
-      resolve();
-    });
-  }
-}
-
-export default new Cropit();

+ 0 - 39
frontend/src/services/dropzone.js

@@ -1,39 +0,0 @@
-import jQuery from 'jQuery';
-
-export class Dropzone {
-  init(include) {
-    this._include = include;
-  }
-
-  load() {
-    if (typeof jQuery.dropzone === "undefined") {
-      this._include.include('misago/js/dropzone.js');
-      return this._loadingPromise();
-    } else {
-      return this._loadedPromise();
-    }
-  }
-
-  _loadingPromise() {
-    return new Promise(function(resolve) {
-      var wait = function() {
-        if (typeof jQuery.dropzone === "undefined") {
-          window.setTimeout(function() {
-            wait();
-          }, 200);
-        } else {
-          resolve();
-        }
-      };
-      wait();
-    });
-  }
-
-  _loadedPromise() {
-    return new Promise(function(resolve) {
-      resolve();
-    });
-  }
-}
-
-export default new Dropzone();

+ 1 - 1
frontend/src/services/snackbar.js

@@ -51,7 +51,7 @@ export class Snackbar {
     let message = gettext("Unknown error has occured.");
 
     if (rejection.status === 0) {
-      message = gettext("Lost connection with application.");
+      message = rejection.detail;
     }
 
     if (rejection.status === 400 && rejection.detail) {

+ 2 - 1
frontend/src/test-setup.js

@@ -8,7 +8,8 @@ require('bootstrap-affix');
 require('bootstrap-modal');
 require('bootstrap-dropdown');
 
-document.__misago = 'yus';
+require('dropzone');
+require('cropit');
 
 require('jquery-mockjax')(jQuery, window);
 $.mockjaxSettings.logging = false;

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

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

+ 3 - 0
frontend/src/vendor.js

@@ -7,3 +7,6 @@ require('bootstrap-transition');
 require('bootstrap-affix');
 require('bootstrap-modal');
 require('bootstrap-dropdown');
+
+require('dropzone');
+require('cropit');

+ 16 - 0
frontend/tests/ajax.js

@@ -67,6 +67,22 @@ describe('Ajax', function() {
     });
   });
 
+  it("normalizes disconnection error", function(done) {
+    $.mockjax({
+      url: '/failing-url/',
+      isTimeout: true
+    });
+
+    ajax.request('GET', '/failing-url/').then(function() {
+      assert.fail("request to /failing-url/ should be rejected");
+    }, function(rejection) {
+      assert.equal(rejection.status, 0, "rejection status code is preserved");
+      assert.equal(rejection.detail, "Lost connection with application.",
+        "ajax handled disconnection from /failing-url/");
+      done();
+    });
+  });
+
   it("makes GET request", function(done) {
     $.mockjax({
       url: '/test-url/',

+ 227 - 0
frontend/tests/components/change-avatar/index.js

@@ -0,0 +1,227 @@
+import assert from 'assert';
+import React from 'react'; // jshint ignore:line
+import ChangeAvatarIndex from 'misago/components/change-avatar/index'; // jshint ignore:line
+import misago from 'misago/index';
+import snackbar from 'misago/services/snackbar';
+import * as testUtils from 'misago/utils/test-utils';
+
+let snackbarStore = null;
+let apiResponse = {
+    "crop_tmp": false,
+    "galleries": [
+        {
+            "images": [
+                "avatars/Nature/arctic_fox.jpg",
+                "avatars/Nature/baby_fox.jpg",
+                "avatars/Nature/blackbird.jpg",
+                "avatars/Nature/rabbit.jpg",
+                "avatars/Nature/serval.jpg"
+            ],
+            "name": "Nature"
+        },
+        {
+            "images": [
+                "avatars/Space/andromeda.jpg",
+                "avatars/Space/antennae_galaxies.jpg",
+                "avatars/Space/barred_spiral_galaxy.jpg",
+                "avatars/Space/messier_74.jpg",
+                "avatars/Space/ngc_1672.jpg",
+                "avatars/Space/ngc_4414.jpg"
+            ],
+            "name": "Space"
+        }
+    ],
+    "crop_org": false,
+    "upload": {
+        "allowed_extensions": [
+            ".gif",
+            ".png",
+            ".jpg",
+            ".jpeg"
+        ],
+        "limit": 750000,
+        "allowed_mime_types": [
+            "image/gif",
+            "image/jpeg",
+            "image/png"
+        ]
+    },
+    "generated": true,
+    "gravatar": true
+};
+
+describe("Change Avatar Index", function() {
+  beforeEach(function() {
+    snackbarStore = testUtils.snackbarStoreMock();
+    snackbar.init(snackbarStore);
+
+    misago._context = {
+      'user': {
+        'id': 123,
+        'avatar_hash': 'aabbccdd',
+        'avatar_api_url': '/test-api/users/123/avatar/'
+      }
+    };
+  });
+
+  afterEach(function() {
+    testUtils.unmountComponents();
+    testUtils.snackbarClear(snackbar);
+    $.mockjax.clear();
+  });
+
+  it("renders", function(done) {
+    /* jshint ignore:start */
+    testUtils.render(
+      <ChangeAvatarIndex user={misago.get('user')}
+                         options={apiResponse} />
+    );
+    /* jshint ignore:end */
+
+    testUtils.onElement('#test-mount .modal-avatar-index', function() {
+      assert.ok(true, "component renders");
+      done();
+    });
+  });
+
+  it("renders without gravatar button", function(done) {
+    /* jshint ignore:start */
+    let amendedOptions = Object.assign({}, apiResponse, {gravatar: false});
+    testUtils.render(
+      <ChangeAvatarIndex user={misago.get('user')}
+                         options={amendedOptions} />
+    );
+    /* jshint ignore:end */
+
+    testUtils.onElement('#test-mount .modal-avatar-index', function() {
+      assert.ok(!$('#test-mount .btn-avatar-gravatar').length,
+        "gravatar option is hidden");
+      done();
+    });
+  });
+
+  it("shows alert with error on rejection", function(done) {
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      status: 400,
+      responseText: {
+        detail: "You can't change avatar at the moment!"
+      }
+    });
+
+    snackbarStore.callback(function(message) {
+      assert.deepEqual(message, {
+        message: "You can't change avatar at the moment!",
+        type: 'error'
+      }, "valid message was shown");
+      done();
+    });
+
+    /* jshint ignore:start */
+    testUtils.render(
+      <ChangeAvatarIndex user={misago.get('user')}
+                         options={apiResponse} />
+    );
+    /* jshint ignore:end */
+
+    testUtils.simulateClick('#test-mount .btn-avatar-gravatar');
+  });
+
+  it("calls error callback on backend error", function(done) { // jshint ignore:line
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      status: 403,
+      responseText: {
+        detail: "You need to sign in to change avatar."
+      }
+    });
+
+    /* jshint ignore:start */
+    let showError = function(error) {
+      assert.equal(error.detail, "You need to sign in to change avatar.",
+        "callback was called with backend error message");
+      done();
+    };
+
+    testUtils.render(
+      <ChangeAvatarIndex user={misago.get('user')}
+                         options={apiResponse}
+                         showError={showError} />
+    );
+    /* jshint ignore:end */
+
+    testUtils.simulateClick('#test-mount .btn-avatar-gravatar');
+  });
+
+  it("changes avatar to generated one successfully", function(done) { // jshint ignore:line
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      status: 200,
+      responseText: {
+        detail: "Generated avataru set!",
+        avatar_hash: 'n33wh44sh',
+        options: apiResponse
+      }
+    });
+
+    snackbarStore.callback(function(message) {
+      assert.deepEqual(message, {
+        message: "Generated avataru set!",
+        type: 'success'
+      }, "valid message was shown");
+    });
+
+    /* jshint ignore:start */
+    let onComplete = function(avatarHash, options) {
+      assert.equal(avatarHash, 'n33wh44sh', "new hash was passed to callback");
+      assert.deepEqual(options, apiResponse, "new ops ware passed to callback");
+
+      done();
+    };
+
+    testUtils.render(
+      <ChangeAvatarIndex user={misago.get('user')}
+                         options={apiResponse}
+                         onComplete={onComplete} />
+    );
+    /* jshint ignore:end */
+
+    testUtils.simulateClick('#test-mount .btn-avatar-generate');
+  });
+
+  it("changes avatar to gravatar successfully", function(done) { // jshint ignore:line
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      status: 200,
+      responseText: {
+        detail: "Gravatar avataru set!",
+        avatar_hash: 'n33wh44sh',
+        options: apiResponse
+      }
+    });
+
+    snackbarStore.callback(function(message) {
+      assert.deepEqual(message, {
+        message: "Gravatar avataru set!",
+        type: 'success'
+      }, "valid message was shown");
+    });
+
+    /* jshint ignore:start */
+    let onComplete = function(avatarHash, options) {
+      assert.equal(avatarHash, 'n33wh44sh', "new hash was passed to callback");
+      assert.deepEqual(options, apiResponse, "new ops ware passed to callback");
+
+      done();
+    };
+
+    testUtils.render(
+      <ChangeAvatarIndex user={misago.get('user')}
+                         options={apiResponse}
+                         onComplete={onComplete} />
+    );
+    /* jshint ignore:end */
+
+    testUtils.simulateClick('#test-mount .btn-avatar-gravatar');
+  });
+});

+ 221 - 0
frontend/tests/components/change-avatar/root.js

@@ -0,0 +1,221 @@
+import assert from 'assert';
+import React from 'react'; // jshint ignore:line
+import ChangeAvatar, { ChangeAvatarError } from 'misago/components/change-avatar/root'; // jshint ignore:line
+import misago from 'misago/index';
+import * as testUtils from 'misago/utils/test-utils';
+
+let apiResponse = {
+    "crop_tmp": false,
+    "galleries": [
+        {
+            "images": [
+                "avatars/Nature/arctic_fox.jpg",
+                "avatars/Nature/baby_fox.jpg",
+                "avatars/Nature/blackbird.jpg",
+                "avatars/Nature/rabbit.jpg",
+                "avatars/Nature/serval.jpg"
+            ],
+            "name": "Nature"
+        },
+        {
+            "images": [
+                "avatars/Space/andromeda.jpg",
+                "avatars/Space/antennae_galaxies.jpg",
+                "avatars/Space/barred_spiral_galaxy.jpg",
+                "avatars/Space/messier_74.jpg",
+                "avatars/Space/ngc_1672.jpg",
+                "avatars/Space/ngc_4414.jpg"
+            ],
+            "name": "Space"
+        }
+    ],
+    "crop_org": false,
+    "upload": {
+        "allowed_extensions": [
+            ".gif",
+            ".png",
+            ".jpg",
+            ".jpeg"
+        ],
+        "limit": 750000,
+        "allowed_mime_types": [
+            "image/gif",
+            "image/jpeg",
+            "image/png"
+        ]
+    },
+    "generated": true,
+    "gravatar": true
+};
+
+describe("Change Avatar", function() {
+  beforeEach(function() {
+    misago._context = {
+      'user': {
+        'id': 123,
+        'avatar_hash': 'aabbccdd',
+        'avatar_api_url': '/test-api/users/123/avatar/'
+      }
+    };
+  });
+
+  afterEach(function() {
+    testUtils.unmountComponents();
+    $.mockjax.clear();
+  });
+
+  it("loads successfully", function(done) {
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      status: 200,
+      responseText: apiResponse
+    });
+
+    /* jshint ignore:start */
+    testUtils.render(<ChangeAvatar user={misago.get('user')} />);
+    /* jshint ignore:end */
+
+    testUtils.onElement('#test-mount .modal-change-avatar', function() {
+      assert.ok(true, "component renders");
+      done();
+    });
+  });
+
+  it("handles disconnection", function(done) {
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      isTimeout: true
+    });
+
+    /* jshint ignore:start */
+    testUtils.render(<ChangeAvatar user={misago.get('user')} />);
+    /* jshint ignore:end */
+
+    testUtils.onElement('#test-mount .modal-message', function() {
+      assert.equal(
+        $('#test-mount .modal-message p.lead').text().trim(),
+        "Lost connection with application.",
+        "component renders error");
+      done();
+    });
+  });
+
+  it("handles rejection", function(done) {
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      status: 400,
+      responseText: {
+        detail: "I can't let you do this Dave."
+      }
+    });
+
+    /* jshint ignore:start */
+    testUtils.render(<ChangeAvatar user={misago.get('user')} />);
+    /* jshint ignore:end */
+
+    testUtils.onElement('#test-mount .modal-message', function() {
+      assert.equal(
+        $('#test-mount .modal-message p.lead').text().trim(),
+        "I can't let you do this Dave.",
+        "component renders error");
+      done();
+    });
+  });
+
+  it("handles rejection with reason", function(done) {
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      status: 400,
+      responseText: {
+        detail: "Reasonable error.",
+        reason: "<p class=\"reason\">I am the reason.</p>"
+      }
+    });
+
+    /* jshint ignore:start */
+    testUtils.render(<ChangeAvatar user={misago.get('user')} />);
+    /* jshint ignore:end */
+
+    testUtils.onElement('#test-mount .modal-message', function() {
+      assert.equal(
+        $('#test-mount .modal-message p.lead').text().trim(),
+        "Reasonable error.",
+        "component renders error");
+
+      assert.equal(
+        $('#test-mount .modal-message p.reason').text().trim(),
+        "I am the reason.",
+        "component renders html reason");
+      done();
+    });
+  });
+
+  it("showError callback works", function(done) {
+    $.mockjax({
+      url: '/test-api/users/123/avatar/',
+      status: 200,
+      responseText: apiResponse
+    });
+
+    let component = null;
+    /* jshint ignore:start */
+    component = testUtils.render(<ChangeAvatar user={misago.get('user')} />);
+    /* jshint ignore:end */
+
+    testUtils.onElement('#test-mount .modal-avatar-index', function() {
+      component.showError({
+        detail: "Callbacked error!",
+        reason: "<p class=\"reason\">Callbacked html reason.</p>"
+      });
+    });
+
+    testUtils.onElement('#test-mount .modal-message p.reason', function() {
+      assert.equal(
+        $('#test-mount .modal-message p.lead').text().trim(),
+        "Callbacked error!",
+        "component renders callbacked error message");
+
+      assert.equal(
+        $('#test-mount .modal-message p.reason').text().trim(),
+        "Callbacked html reason.",
+        "component renders callbacked html reason");
+      done();
+    });
+  });
+});
+
+describe("Change Avatar Error", function() {
+  afterEach(function() {
+    testUtils.unmountComponents();
+  });
+
+  it('renders with message', function() {
+    /* jshint ignore:start */
+    testUtils.render(<ChangeAvatarError message="Lorem ipsum dolor met." />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .modal-body');
+    assert.ok(element.length, "component renders");
+
+    assert.equal(element.find('p.lead').text().trim(), "Lorem ipsum dolor met.",
+      "avatar change error renders message");
+  });
+
+  it('renders with html reason', function() {
+    /* jshint ignore:start */
+    let reason = "<p class=\"reason\">Here's the reason!</p>";
+    testUtils.render(
+      <ChangeAvatarError message="Lorem ipsum dolor met."
+                         reason={reason} />
+    );
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .modal-body');
+    assert.ok(element.length, "component renders");
+
+    assert.equal(element.find('p.lead').text().trim(), "Lorem ipsum dolor met.",
+      "avatar change error renders message");
+    assert.equal(element.find('p.reason').text().trim(), "Here's the reason!",
+      "avatar change error renders reason html");
+  });
+});

+ 21 - 0
frontend/tests/components/modal-loader.js

@@ -0,0 +1,21 @@
+import assert from 'assert';
+import React from 'react'; // jshint ignore:line
+import ModalLoader from 'misago/components/modal-loader'; // jshint ignore:line
+import * as testUtils from 'misago/utils/test-utils';
+
+describe("Modal Loader", function() {
+  afterEach(function() {
+    testUtils.unmountComponents();
+  });
+
+  it('renders', function() {
+    /* jshint ignore:start */
+    testUtils.render(<ModalLoader />);
+    /* jshint ignore:end */
+
+    assert.ok($('#test-mount .modal-loader').length,
+      "component renders");
+    assert.ok($('#test-mount .loader .loader-spinning-wheel').length,
+      "component contains loader");
+  });
+});

+ 3 - 3
frontend/tests/components/user-menu/guest-menu.js

@@ -7,7 +7,7 @@ import modal from 'misago/services/modal';
 import store from 'misago/services/store';
 import * as testUtils from 'misago/utils/test-utils';
 
-describe("GuestMenu", function() {
+describe("Guest Menu", function() {
   beforeEach(function() {
     testUtils.initEmptyStore(store);
     testUtils.initDropdown(dropdown);
@@ -41,7 +41,7 @@ describe("GuestMenu", function() {
   });
 });
 
-describe("GuestNav", function() {
+describe("Guest Nav", function() {
   beforeEach(function() {
     testUtils.initEmptyStore(store);
     testUtils.initDropdown(dropdown);
@@ -75,7 +75,7 @@ describe("GuestNav", function() {
   });
 });
 
-describe("CompactGuestNav", function() {
+describe("Compact Guest Nav", function() {
   beforeEach(function() {
     testUtils.initEmptyStore(store);
     testUtils.initDropdown(dropdown);

+ 3 - 3
frontend/tests/components/user-menu/user-menu.js

@@ -6,7 +6,7 @@ import dropdown from 'misago/services/mobile-navbar-dropdown';
 import store from 'misago/services/store';
 import * as testUtils from 'misago/utils/test-utils';
 
-describe("UserMenu", function() {
+describe("User Menu", function() {
   beforeEach(function() {
     testUtils.contextClear(misago);
     testUtils.contextAuthenticated(misago);
@@ -29,7 +29,7 @@ describe("UserMenu", function() {
   });
 });
 
-describe("UserNav", function() {
+describe("User Nav", function() {
   beforeEach(function() {
     testUtils.contextClear(misago);
     testUtils.contextAuthenticated(misago);
@@ -52,7 +52,7 @@ describe("UserNav", function() {
   });
 });
 
-describe("CompactUserNav", function() {
+describe("Compact User Nav", function() {
   beforeEach(function() {
     testUtils.contextClear(misago);
     testUtils.contextAuthenticated(misago);

+ 0 - 28
frontend/tests/cropit.js

@@ -1,28 +0,0 @@
-import assert from 'assert';
-import { Cropit } from 'misago/services/cropit';
-
-let cropit = null;
-
-describe("Cropit", function() {
-  afterEach(function() {
-    delete window.$.cropit;
-  });
-
-  it("loads library", function(done) {
-    cropit = new Cropit();
-    cropit.init({
-      include: function(lib) {
-        assert.equal(lib, "misago/js/jquery.cropit.js", "library is requested");
-      }
-    });
-
-    cropit.load().then(function() {
-      assert.ok(true, "cropit lib was loaded");
-      done();
-    });
-
-    window.setTimeout(function() {
-      window.$.cropit = true;
-    }, 200);
-  });
-});

+ 3 - 2
frontend/tests/snackbar.js

@@ -91,12 +91,13 @@ describe("Snackbar", function() {
 
   it("provides shortcut for backend disconnection", function() {
     snackbar.apiError({
-      status: 0
+      status: 0,
+      detail: "You got disconnected!"
     });
 
     assert.deepEqual(store.getState().snackbar, {
       type: 'error',
-      message: "Lost connection with application.",
+      message: "You got disconnected!",
       isVisible: true
     }, "service set disconnected message in store");
   });

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

@@ -1,4663 +1 @@
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-html {
-  font-family: sans-serif;
-  -ms-text-size-adjust: 100%;
-  -webkit-text-size-adjust: 100%;
-}
-body {
-  margin: 0;
-}
-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;
-}
-abbr[title] {
-  border-bottom: 1px dotted;
-}
-b,
-strong {
-  font-weight: bold;
-}
-dfn {
-  font-style: italic;
-}
-h1 {
-  font-size: 2em;
-  margin: 0.67em 0;
-}
-mark {
-  background: #ff0;
-  color: #000;
-}
-small {
-  font-size: 80%;
-}
-sub,
-sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  border: 0;
-}
-svg:not(:root) {
-  overflow: hidden;
-}
-figure {
-  margin: 1em 40px;
-}
-hr {
-  box-sizing: content-box;
-  height: 0;
-}
-pre {
-  overflow: auto;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, monospace;
-  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 {
-  line-height: normal;
-}
-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-appearance: textfield;
-  box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-fieldset {
-  border: 1px solid #c0c0c0;
-  margin: 0 2px;
-  padding: 0.35em 0.625em 0.75em;
-}
-legend {
-  border: 0;
-  padding: 0;
-}
-textarea {
-  overflow: auto;
-}
-optgroup {
-  font-weight: bold;
-}
-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 {
-  *,
-  *:before,
-  *:after {
-    background: transparent !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^="#"]:after,
-  a[href^="javascript:"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  p,
-  h2,
-  h3 {
-    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 th,
-  .table-bordered td {
-    border: 1px solid #ddd !important;
-  }
-}
-* {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-*:before,
-*:after {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-html {
-  font-size: 10px;
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-body {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #333333;
-  background-color: #fff;
-}
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-}
-a {
-  color: #337ab7;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #23527c;
-  text-decoration: underline;
-}
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-figure {
-  margin: 0;
-}
-img {
-  vertical-align: middle;
-}
-.img-responsive {
-  display: block;
-  max-width: 100%;
-  height: auto;
-}
-.img-rounded {
-  border-radius: 6px;
-}
-.img-thumbnail {
-  padding: 4px;
-  line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: all 0.2s ease-in-out;
-  -o-transition: all 0.2s ease-in-out;
-  transition: all 0.2s ease-in-out;
-  display: inline-block;
-  max-width: 100%;
-  height: auto;
-}
-.img-circle {
-  border-radius: 50%;
-}
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #eeeeee;
-}
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  margin: -1px;
-  padding: 0;
-  overflow: hidden;
-  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,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small,
-h1 .small,
-h2 .small,
-h3 .small,
-h4 .small,
-h5 .small,
-h6 .small,
-.h1 .small,
-.h2 .small,
-.h3 .small,
-.h4 .small,
-.h5 .small,
-.h6 .small {
-  font-weight: normal;
-  line-height: 1;
-  color: #777777;
-}
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.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,
-.h4,
-h5,
-.h5,
-h6,
-.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;
-}
-@media (min-width: 768px) {
-  .lead {
-    font-size: 21px;
-  }
-}
-small,
-.small {
-  font-size: 85%;
-}
-mark,
-.mark {
-  background-color: #fcf8e3;
-  padding: .2em;
-}
-.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: #777777;
-}
-.text-primary {
-  color: #337ab7;
-}
-a.text-primary:hover,
-a.text-primary:focus {
-  color: #286090;
-}
-.text-success {
-  color: #3c763d;
-}
-a.text-success:hover,
-a.text-success:focus {
-  color: #2b542c;
-}
-.text-info {
-  color: #31708f;
-}
-a.text-info:hover,
-a.text-info:focus {
-  color: #245269;
-}
-.text-warning {
-  color: #8a6d3b;
-}
-a.text-warning:hover,
-a.text-warning:focus {
-  color: #66512c;
-}
-.text-danger {
-  color: #a94442;
-}
-a.text-danger:hover,
-a.text-danger:focus {
-  color: #843534;
-}
-.bg-primary {
-  color: #fff;
-  background-color: #337ab7;
-}
-a.bg-primary:hover,
-a.bg-primary:focus {
-  background-color: #286090;
-}
-.bg-success {
-  background-color: #dff0d8;
-}
-a.bg-success:hover,
-a.bg-success:focus {
-  background-color: #c1e2b3;
-}
-.bg-info {
-  background-color: #d9edf7;
-}
-a.bg-info:hover,
-a.bg-info:focus {
-  background-color: #afd9ee;
-}
-.bg-warning {
-  background-color: #fcf8e3;
-}
-a.bg-warning:hover,
-a.bg-warning:focus {
-  background-color: #f7ecb5;
-}
-.bg-danger {
-  background-color: #f2dede;
-}
-a.bg-danger:hover,
-a.bg-danger:focus {
-  background-color: #e4b9b9;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #eeeeee;
-}
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: 10px;
-}
-ul ul,
-ol ul,
-ul ol,
-ol ol {
-  margin-bottom: 0;
-}
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-}
-.list-inline {
-  padding-left: 0;
-  list-style: none;
-  margin-left: -5px;
-}
-.list-inline > li {
-  display: inline-block;
-  padding-left: 5px;
-  padding-right: 5px;
-}
-dl {
-  margin-top: 0;
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 1.42857143;
-}
-dt {
-  font-weight: bold;
-}
-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;
-  }
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #777777;
-}
-.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  font-size: 17.5px;
-  border-left: 5px solid #eeeeee;
-}
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
-  margin-bottom: 0;
-}
-blockquote footer,
-blockquote small,
-blockquote .small {
-  display: block;
-  font-size: 80%;
-  line-height: 1.42857143;
-  color: #777777;
-}
-blockquote footer:before,
-blockquote small:before,
-blockquote .small:before {
-  content: '\2014 \00A0';
-}
-.blockquote-reverse,
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  border-right: 5px solid #eeeeee;
-  border-left: 0;
-  text-align: right;
-}
-.blockquote-reverse footer:before,
-blockquote.pull-right footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right small:before,
-.blockquote-reverse .small:before,
-blockquote.pull-right .small:before {
-  content: '';
-}
-.blockquote-reverse footer:after,
-blockquote.pull-right footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right small:after,
-.blockquote-reverse .small:after,
-blockquote.pull-right .small:after {
-  content: '\00A0 \2014';
-}
-address {
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 1.42857143;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-}
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #c7254e;
-  background-color: #f9f2f4;
-  border-radius: 4px;
-}
-kbd {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #fff;
-  background-color: #333;
-  border-radius: 3px;
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-kbd kbd {
-  padding: 0;
-  font-size: 100%;
-  font-weight: bold;
-  box-shadow: none;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 1.42857143;
-  word-break: break-all;
-  word-wrap: break-word;
-  color: #333333;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-pre code {
-  padding: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border-radius: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-.container {
-  margin-right: auto;
-  margin-left: auto;
-  padding-left: 15px;
-  padding-right: 15px;
-}
-@media (min-width: 768px) {
-  .container {
-    width: 750px;
-  }
-}
-@media (min-width: 992px) {
-  .container {
-    width: 970px;
-  }
-}
-@media (min-width: 1200px) {
-  .container {
-    width: 1170px;
-  }
-}
-.container-fluid {
-  margin-right: auto;
-  margin-left: auto;
-  padding-left: 15px;
-  padding-right: 15px;
-}
-.row {
-  margin-left: -15px;
-  margin-right: -15px;
-}
-.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-left: 15px;
-  padding-right: 15px;
-}
-.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
-  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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
-    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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
-    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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
-    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%;
-  }
-}
-table {
-  background-color: transparent;
-}
-caption {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  color: #777777;
-  text-align: left;
-}
-th {
-  text-align: left;
-}
-.table {
-  width: 100%;
-  max-width: 100%;
-  margin-bottom: 20px;
-}
-.table > thead > tr > th,
-.table > tbody > tr > th,
-.table > tfoot > tr > th,
-.table > thead > tr > td,
-.table > tbody > tr > td,
-.table > tfoot > tr > td {
-  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;
-}
-.table > caption + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > th,
-.table > thead:first-child > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > td {
-  border-top: 0;
-}
-.table > tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table .table {
-  background-color: #fff;
-}
-.table-condensed > thead > tr > th,
-.table-condensed > tbody > tr > th,
-.table-condensed > tfoot > tr > th,
-.table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > td {
-  padding: 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
-  border-bottom-width: 2px;
-}
-.table-striped > tbody > tr:nth-of-type(odd) {
-  background-color: #f9f9f9;
-}
-.table-hover > tbody > tr:hover {
-  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 > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
-  background-color: #f5f5f5;
-}
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr:hover > .active,
-.table-hover > tbody > tr.active:hover > th {
-  background-color: #e8e8e8;
-}
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
-  background-color: #dff0d8;
-}
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr:hover > .success,
-.table-hover > tbody > tr.success:hover > th {
-  background-color: #d0e9c6;
-}
-.table > thead > tr > td.info,
-.table > tbody > tr > td.info,
-.table > tfoot > tr > td.info,
-.table > thead > tr > th.info,
-.table > tbody > tr > th.info,
-.table > tfoot > tr > th.info,
-.table > thead > tr.info > td,
-.table > tbody > tr.info > td,
-.table > tfoot > tr.info > td,
-.table > thead > tr.info > th,
-.table > tbody > tr.info > th,
-.table > tfoot > tr.info > th {
-  background-color: #d9edf7;
-}
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td,
-.table-hover > tbody > tr:hover > .info,
-.table-hover > tbody > tr.info:hover > th {
-  background-color: #c4e3f3;
-}
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
-  background-color: #fcf8e3;
-}
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr:hover > .warning,
-.table-hover > tbody > tr.warning:hover > th {
-  background-color: #faf2cc;
-}
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
-  background-color: #f2dede;
-}
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr:hover > .danger,
-.table-hover > tbody > tr.danger:hover > th {
-  background-color: #ebcccc;
-}
-.table-responsive {
-  overflow-x: auto;
-  min-height: 0.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 > thead > tr > th,
-  .table-responsive > .table > tbody > tr > th,
-  .table-responsive > .table > tfoot > tr > th,
-  .table-responsive > .table > thead > tr > td,
-  .table-responsive > .table > tbody > tr > td,
-  .table-responsive > .table > tfoot > tr > td {
-    white-space: nowrap;
-  }
-  .table-responsive > .table-bordered {
-    border: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:first-child,
-  .table-responsive > .table-bordered > tbody > tr > th:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-  .table-responsive > .table-bordered > thead > tr > td:first-child,
-  .table-responsive > .table-bordered > tbody > tr > td:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-    border-left: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:last-child,
-  .table-responsive > .table-bordered > tbody > tr > th:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-  .table-responsive > .table-bordered > thead > tr > td:last-child,
-  .table-responsive > .table-bordered > tbody > tr > td:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-    border-right: 0;
-  }
-  .table-responsive > .table-bordered > tbody > tr:last-child > th,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
-  .table-responsive > .table-bordered > tbody > tr:last-child > td,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
-    border-bottom: 0;
-  }
-}
-fieldset {
-  padding: 0;
-  margin: 0;
-  border: 0;
-  min-width: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: inherit;
-  color: #333333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-label {
-  display: inline-block;
-  max-width: 100%;
-  margin-bottom: 5px;
-  font-weight: bold;
-}
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  line-height: normal;
-}
-input[type="file"] {
-  display: block;
-}
-input[type="range"] {
-  display: block;
-  width: 100%;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-output {
-  display: block;
-  padding-top: 7px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555555;
-}
-.form-control {
-  display: block;
-  width: 100%;
-  height: 34px;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555555;
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 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, 0.6);
-  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
-}
-.form-control::-moz-placeholder {
-  color: #999;
-  opacity: 1;
-}
-.form-control:-ms-input-placeholder {
-  color: #999;
-}
-.form-control::-webkit-input-placeholder {
-  color: #999;
-}
-.form-control::-ms-expand {
-  border: 0;
-  background-color: transparent;
-}
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
-  background-color: #eeeeee;
-  opacity: 1;
-}
-.form-control[disabled],
-fieldset[disabled] .form-control {
-  cursor: not-allowed;
-}
-textarea.form-control {
-  height: auto;
-}
-input[type="search"] {
-  -webkit-appearance: none;
-}
-@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[type="date"].input-sm,
-  input[type="time"].input-sm,
-  input[type="datetime-local"].input-sm,
-  input[type="month"].input-sm,
-  .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"] {
-    line-height: 30px;
-  }
-  input[type="date"].input-lg,
-  input[type="time"].input-lg,
-  input[type="datetime-local"].input-lg,
-  input[type="month"].input-lg,
-  .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"] {
-    line-height: 46px;
-  }
-}
-.form-group {
-  margin-bottom: 15px;
-}
-.radio,
-.checkbox {
-  position: relative;
-  display: block;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.radio label,
-.checkbox label {
-  min-height: 20px;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  cursor: pointer;
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  position: absolute;
-  margin-left: -20px;
-  margin-top: 4px \9;
-}
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px;
-}
-.radio-inline,
-.checkbox-inline {
-  position: relative;
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  vertical-align: middle;
-  font-weight: normal;
-  cursor: pointer;
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"].disabled,
-input[type="checkbox"].disabled,
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"] {
-  cursor: not-allowed;
-}
-.radio-inline.disabled,
-.checkbox-inline.disabled,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed;
-}
-.radio.disabled label,
-.checkbox.disabled label,
-fieldset[disabled] .radio label,
-fieldset[disabled] .checkbox label {
-  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;
-}
-.input-sm {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-sm {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-sm,
-select[multiple].input-sm {
-  height: auto;
-}
-.form-group-sm .form-control {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.form-group-sm select.form-control {
-  height: 30px;
-  line-height: 30px;
-}
-.form-group-sm textarea.form-control,
-.form-group-sm select[multiple].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;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px;
-}
-select.input-lg {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-lg,
-select[multiple].input-lg {
-  height: auto;
-}
-.form-group-lg .form-control {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px;
-}
-.form-group-lg select.form-control {
-  height: 46px;
-  line-height: 46px;
-}
-.form-group-lg textarea.form-control,
-.form-group-lg select[multiple].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;
-}
-.input-lg + .form-control-feedback,
-.input-group-lg + .form-control-feedback,
-.form-group-lg .form-control + .form-control-feedback {
-  width: 46px;
-  height: 46px;
-  line-height: 46px;
-}
-.input-sm + .form-control-feedback,
-.input-group-sm + .form-control-feedback,
-.form-group-sm .form-control + .form-control-feedback {
-  width: 30px;
-  height: 30px;
-  line-height: 30px;
-}
-.has-success .help-block,
-.has-success .control-label,
-.has-success .radio,
-.has-success .checkbox,
-.has-success .radio-inline,
-.has-success .checkbox-inline,
-.has-success.radio label,
-.has-success.checkbox label,
-.has-success.radio-inline label,
-.has-success.checkbox-inline label {
-  color: #3c763d;
-}
-.has-success .form-control {
-  border-color: #3c763d;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-success .form-control:focus {
-  border-color: #2b542c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
-}
-.has-success .input-group-addon {
-  color: #3c763d;
-  border-color: #3c763d;
-  background-color: #dff0d8;
-}
-.has-success .form-control-feedback {
-  color: #3c763d;
-}
-.has-warning .help-block,
-.has-warning .control-label,
-.has-warning .radio,
-.has-warning .checkbox,
-.has-warning .radio-inline,
-.has-warning .checkbox-inline,
-.has-warning.radio label,
-.has-warning.checkbox label,
-.has-warning.radio-inline label,
-.has-warning.checkbox-inline label {
-  color: #8a6d3b;
-}
-.has-warning .form-control {
-  border-color: #8a6d3b;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-warning .form-control:focus {
-  border-color: #66512c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
-}
-.has-warning .input-group-addon {
-  color: #8a6d3b;
-  border-color: #8a6d3b;
-  background-color: #fcf8e3;
-}
-.has-warning .form-control-feedback {
-  color: #8a6d3b;
-}
-.has-error .help-block,
-.has-error .control-label,
-.has-error .radio,
-.has-error .checkbox,
-.has-error .radio-inline,
-.has-error .checkbox-inline,
-.has-error.radio label,
-.has-error.checkbox label,
-.has-error.radio-inline label,
-.has-error.checkbox-inline label {
-  color: #a94442;
-}
-.has-error .form-control {
-  border-color: #a94442;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.has-error .form-control:focus {
-  border-color: #843534;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
-}
-.has-error .input-group-addon {
-  color: #a94442;
-  border-color: #a94442;
-  background-color: #f2dede;
-}
-.has-error .form-control-feedback {
-  color: #a94442;
-}
-.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-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .form-inline .form-control-static {
-    display: inline-block;
-  }
-  .form-inline .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .form-inline .input-group .input-group-addon,
-  .form-inline .input-group .input-group-btn,
-  .form-inline .input-group .form-control {
-    width: auto;
-  }
-  .form-inline .input-group > .form-control {
-    width: 100%;
-  }
-  .form-inline .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio,
-  .form-inline .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio label,
-  .form-inline .checkbox label {
-    padding-left: 0;
-  }
-  .form-inline .radio input[type="radio"],
-  .form-inline .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .form-inline .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
-  margin-top: 0;
-  margin-bottom: 0;
-  padding-top: 7px;
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox {
-  min-height: 27px;
-}
-.form-horizontal .form-group {
-  margin-left: -15px;
-  margin-right: -15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .control-label {
-    text-align: right;
-    margin-bottom: 0;
-    padding-top: 7px;
-  }
-}
-.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;
-  }
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-sm .control-label {
-    padding-top: 6px;
-    font-size: 12px;
-  }
-}
-.btn {
-  display: inline-block;
-  margin-bottom: 0;
-  font-weight: normal;
-  text-align: center;
-  vertical-align: middle;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-image: none;
-  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:focus,
-.btn:active:focus,
-.btn.active:focus,
-.btn.focus,
-.btn:active.focus,
-.btn.active.focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn:hover,
-.btn:focus,
-.btn.focus {
-  color: #333;
-  text-decoration: none;
-}
-.btn:active,
-.btn.active {
-  outline: 0;
-  background-image: none;
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-}
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
-  cursor: not-allowed;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-  box-shadow: none;
-}
-a.btn.disabled,
-fieldset[disabled] a.btn {
-  pointer-events: 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:hover {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #adadad;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #adadad;
-}
-.btn-default:active:hover,
-.btn-default.active:hover,
-.open > .dropdown-toggle.btn-default:hover,
-.btn-default:active:focus,
-.btn-default.active:focus,
-.open > .dropdown-toggle.btn-default:focus,
-.btn-default:active.focus,
-.btn-default.active.focus,
-.open > .dropdown-toggle.btn-default.focus {
-  color: #333;
-  background-color: #d4d4d4;
-  border-color: #8c8c8c;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  background-image: none;
-}
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled.focus,
-.btn-default[disabled].focus,
-fieldset[disabled] .btn-default.focus {
-  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:hover {
-  color: #fff;
-  background-color: #286090;
-  border-color: #204d74;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  color: #fff;
-  background-color: #286090;
-  border-color: #204d74;
-}
-.btn-primary:active:hover,
-.btn-primary.active:hover,
-.open > .dropdown-toggle.btn-primary:hover,
-.btn-primary:active:focus,
-.btn-primary.active:focus,
-.open > .dropdown-toggle.btn-primary:focus,
-.btn-primary:active.focus,
-.btn-primary.active.focus,
-.open > .dropdown-toggle.btn-primary.focus {
-  color: #fff;
-  background-color: #204d74;
-  border-color: #122b40;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  background-image: none;
-}
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled.focus,
-.btn-primary[disabled].focus,
-fieldset[disabled] .btn-primary.focus {
-  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:hover {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #398439;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #398439;
-}
-.btn-success:active:hover,
-.btn-success.active:hover,
-.open > .dropdown-toggle.btn-success:hover,
-.btn-success:active:focus,
-.btn-success.active:focus,
-.open > .dropdown-toggle.btn-success:focus,
-.btn-success:active.focus,
-.btn-success.active.focus,
-.open > .dropdown-toggle.btn-success.focus {
-  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:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled.focus,
-.btn-success[disabled].focus,
-fieldset[disabled] .btn-success.focus {
-  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:hover {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #269abc;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #269abc;
-}
-.btn-info:active:hover,
-.btn-info.active:hover,
-.open > .dropdown-toggle.btn-info:hover,
-.btn-info:active:focus,
-.btn-info.active:focus,
-.open > .dropdown-toggle.btn-info:focus,
-.btn-info:active.focus,
-.btn-info.active.focus,
-.open > .dropdown-toggle.btn-info.focus {
-  color: #fff;
-  background-color: #269abc;
-  border-color: #1b6d85;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  background-image: none;
-}
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled.focus,
-.btn-info[disabled].focus,
-fieldset[disabled] .btn-info.focus {
-  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:hover {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #d58512;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #d58512;
-}
-.btn-warning:active:hover,
-.btn-warning.active:hover,
-.open > .dropdown-toggle.btn-warning:hover,
-.btn-warning:active:focus,
-.btn-warning.active:focus,
-.open > .dropdown-toggle.btn-warning:focus,
-.btn-warning:active.focus,
-.btn-warning.active.focus,
-.open > .dropdown-toggle.btn-warning.focus {
-  color: #fff;
-  background-color: #d58512;
-  border-color: #985f0d;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  background-image: none;
-}
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled.focus,
-.btn-warning[disabled].focus,
-fieldset[disabled] .btn-warning.focus {
-  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:hover {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #ac2925;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #ac2925;
-}
-.btn-danger:active:hover,
-.btn-danger.active:hover,
-.open > .dropdown-toggle.btn-danger:hover,
-.btn-danger:active:focus,
-.btn-danger.active:focus,
-.open > .dropdown-toggle.btn-danger:focus,
-.btn-danger:active.focus,
-.btn-danger.active.focus,
-.open > .dropdown-toggle.btn-danger.focus {
-  color: #fff;
-  background-color: #ac2925;
-  border-color: #761c19;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  background-image: none;
-}
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled.focus,
-.btn-danger[disabled].focus,
-fieldset[disabled] .btn-danger.focus {
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger .badge {
-  color: #d9534f;
-  background-color: #fff;
-}
-.btn-link {
-  color: #337ab7;
-  font-weight: normal;
-  border-radius: 0;
-}
-.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:hover,
-.btn-link:focus,
-.btn-link:active {
-  border-color: transparent;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #23527c;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
-  color: #777777;
-  text-decoration: none;
-}
-.btn-lg {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.3333333;
-  border-radius: 6px;
-}
-.btn-sm {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-xs {
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.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 {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition-property: height, visibility;
-  transition-property: height, visibility;
-  -webkit-transition-duration: 0.35s;
-  transition-duration: 0.35s;
-  -webkit-transition-timing-function: ease;
-  transition-timing-function: ease;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px dashed;
-  border-top: 4px solid \9;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-}
-.dropup,
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle:focus {
-  outline: 0;
-}
-.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, 0.15);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-  background-clip: padding-box;
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 1.42857143;
-  color: #333333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  text-decoration: none;
-  color: #262626;
-  background-color: #f5f5f5;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #fff;
-  text-decoration: none;
-  outline: 0;
-  background-color: #337ab7;
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #777777;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  cursor: not-allowed;
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.open > a {
-  outline: 0;
-}
-.dropdown-menu-right {
-  left: auto;
-  right: 0;
-}
-.dropdown-menu-left {
-  left: 0;
-  right: auto;
-}
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: 12px;
-  line-height: 1.42857143;
-  color: #777777;
-  white-space: nowrap;
-}
-.dropdown-backdrop {
-  position: fixed;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  top: 0;
-  z-index: 990;
-}
-.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 {
-  margin-bottom: 0;
-  padding-left: 0;
-  list-style: none;
-}
-.nav > li {
-  position: relative;
-  display: block;
-}
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eeeeee;
-}
-.nav > li.disabled > a {
-  color: #777777;
-}
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
-  color: #777777;
-  text-decoration: none;
-  background-color: transparent;
-  cursor: not-allowed;
-}
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
-  background-color: #eeeeee;
-  border-color: #337ab7;
-}
-.nav .nav-divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.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: #eeeeee #eeeeee #ddd;
-}
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
-  color: #555555;
-  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;
-}
-.nav-tabs.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-tabs.nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:hover,
-.nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs.nav-justified > .active > a,
-  .nav-tabs.nav-justified > .active > a:hover,
-  .nav-tabs.nav-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.nav-pills > li {
-  float: left;
-}
-.nav-pills > li > a {
-  border-radius: 4px;
-}
-.nav-pills > li + li {
-  margin-left: 2px;
-}
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
-  color: #fff;
-  background-color: #337ab7;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li + li {
-  margin-top: 2px;
-  margin-left: 0;
-}
-.nav-justified {
-  width: 100%;
-}
-.nav-justified > li {
-  float: none;
-}
-.nav-justified > li > a {
-  text-align: center;
-  margin-bottom: 5px;
-}
-.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.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:hover,
-.nav-tabs-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .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:hover,
-  .nav-tabs-justified > .active > a:focus {
-    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 {
-  position: relative;
-  min-height: 50px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-}
-@media (min-width: 768px) {
-  .navbar {
-    border-radius: 4px;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-header {
-    float: left;
-  }
-}
-.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, 0.1);
-  -webkit-overflow-scrolling: touch;
-}
-.navbar-collapse.in {
-  overflow-y: auto;
-}
-@media (min-width: 768px) {
-  .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-top .navbar-collapse,
-  .navbar-static-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    padding-left: 0;
-    padding-right: 0;
-  }
-}
-.navbar-fixed-top .navbar-collapse,
-.navbar-fixed-bottom .navbar-collapse {
-  max-height: 340px;
-}
-@media (max-device-width: 480px) and (orientation: landscape) {
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    max-height: 200px;
-  }
-}
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 768px) {
-  .container > .navbar-header,
-  .container-fluid > .navbar-header,
-  .container > .navbar-collapse,
-  .container-fluid > .navbar-collapse {
-    margin-right: 0;
-    margin-left: 0;
-  }
-}
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px;
-}
-@media (min-width: 768px) {
-  .navbar-static-top {
-    border-radius: 0;
-  }
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-@media (min-width: 768px) {
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    border-radius: 0;
-  }
-}
-.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 15px;
-  font-size: 18px;
-  line-height: 20px;
-  height: 50px;
-}
-.navbar-brand:hover,
-.navbar-brand:focus {
-  text-decoration: none;
-}
-.navbar-brand > img {
-  display: block;
-}
-@media (min-width: 768px) {
-  .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;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.navbar-toggle:focus {
-  outline: 0;
-}
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px;
-}
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px;
-}
-@media (min-width: 768px) {
-  .navbar-toggle {
-    display: none;
-  }
-}
-.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 > li > a,
-  .navbar-nav .open .dropdown-menu .dropdown-header {
-    padding: 5px 15px 5px 25px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a {
-    line-height: 20px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-nav .open .dropdown-menu > li > a:focus {
-    background-image: none;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-nav {
-    float: left;
-    margin: 0;
-  }
-  .navbar-nav > li {
-    float: left;
-  }
-  .navbar-nav > li > a {
-    padding-top: 15px;
-    padding-bottom: 15px;
-  }
-}
-.navbar-form {
-  margin-left: -15px;
-  margin-right: -15px;
-  padding: 10px 15px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-@media (min-width: 768px) {
-  .navbar-form .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control-static {
-    display: inline-block;
-  }
-  .navbar-form .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .navbar-form .input-group .input-group-addon,
-  .navbar-form .input-group .input-group-btn,
-  .navbar-form .input-group .form-control {
-    width: auto;
-  }
-  .navbar-form .input-group > .form-control {
-    width: 100%;
-  }
-  .navbar-form .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio,
-  .navbar-form .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio label,
-  .navbar-form .checkbox label {
-    padding-left: 0;
-  }
-  .navbar-form .radio input[type="radio"],
-  .navbar-form .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .navbar-form .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-@media (max-width: 767px) {
-  .navbar-form .form-group {
-    margin-bottom: 5px;
-  }
-  .navbar-form .form-group:last-child {
-    margin-bottom: 0;
-  }
-}
-@media (min-width: 768px) {
-  .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;
-  }
-}
-.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-top-right-radius: 4px;
-  border-top-left-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 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;
-  }
-}
-@media (min-width: 768px) {
-  .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:hover,
-.navbar-default .navbar-brand:focus {
-  color: #5e5e5e;
-  background-color: transparent;
-}
-.navbar-default .navbar-text {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
-  color: #333;
-  background-color: transparent;
-}
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
-  color: #ccc;
-  background-color: transparent;
-}
-.navbar-default .navbar-toggle {
-  border-color: #ddd;
-}
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
-  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:hover,
-.navbar-default .navbar-nav > .open > a:focus {
-  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:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #333;
-    background-color: transparent;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #555;
-    background-color: #e7e7e7;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    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:hover,
-.navbar-default .btn-link:focus {
-  color: #333;
-}
-.navbar-default .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-default .btn-link:hover,
-.navbar-default .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-default .btn-link:focus {
-  color: #ccc;
-}
-.navbar-inverse {
-  background-color: #222;
-  border-color: #080808;
-}
-.navbar-inverse .navbar-brand {
-  color: #9d9d9d;
-}
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
-  color: #fff;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-text {
-  color: #9d9d9d;
-}
-.navbar-inverse .navbar-nav > li > a {
-  color: #9d9d9d;
-}
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
-  color: #fff;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
-  color: #fff;
-  background-color: #080808;
-}
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
-  color: #444;
-  background-color: transparent;
-}
-.navbar-inverse .navbar-toggle {
-  border-color: #333;
-}
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
-  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:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
-  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:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #fff;
-    background-color: transparent;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #fff;
-    background-color: #080808;
-  }
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    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:hover,
-.navbar-inverse .btn-link:focus {
-  color: #fff;
-}
-.navbar-inverse .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-inverse .btn-link:focus {
-  color: #444;
-}
-.alert {
-  padding: 15px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.alert h4 {
-  margin-top: 0;
-  color: inherit;
-}
-.alert .alert-link {
-  font-weight: bold;
-}
-.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;
-}
-.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 {
-  overflow: hidden;
-  height: 20px;
-  margin-bottom: 20px;
-  background-color: #f5f5f5;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 2px rgba(0, 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, 0.15);
-  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-  -webkit-transition: width 0.6s ease;
-  -o-transition: width 0.6s ease;
-  transition: width 0.6s ease;
-}
-.progress-striped .progress-bar,
-.progress-bar-striped {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-size: 40px 40px;
-}
-.progress.active .progress-bar,
-.progress-bar.active {
-  -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: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-bar-info {
-  background-color: #5bc0de;
-}
-.progress-striped .progress-bar-info {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-}
-.progress-bar-warning {
-  background-color: #f0ad4e;
-}
-.progress-striped .progress-bar-warning {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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-object.img-thumbnail {
-  max-width: none;
-}
-.media-right,
-.media > .pull-right {
-  padding-left: 10px;
-}
-.media-left,
-.media > .pull-left {
-  padding-right: 10px;
-}
-.media-left,
-.media-right,
-.media-body {
-  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, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.well-lg {
-  padding: 24px;
-  border-radius: 6px;
-}
-.well-sm {
-  padding: 9px;
-  border-radius: 3px;
-}
-.close {
-  float: right;
-  font-size: 21px;
-  font-weight: bold;
-  line-height: 1;
-  color: #000;
-  text-shadow: 0 1px 0 #fff;
-  opacity: 0.2;
-  filter: alpha(opacity=20);
-}
-.close:hover,
-.close:focus {
-  color: #000;
-  text-decoration: none;
-  cursor: pointer;
-  opacity: 0.5;
-  filter: alpha(opacity=50);
-}
-button.close {
-  padding: 0;
-  cursor: pointer;
-  background: transparent;
-  border: 0;
-  -webkit-appearance: none;
-}
-.modal-open {
-  overflow: hidden;
-}
-.modal {
-  display: none;
-  overflow: hidden;
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1050;
-  -webkit-overflow-scrolling: touch;
-  outline: 0;
-}
-.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 0.3s ease-out;
-  -moz-transition: -moz-transform 0.3s ease-out;
-  -o-transition: -o-transform 0.3s ease-out;
-  transition: transform 0.3s ease-out;
-}
-.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, 0.2);
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
-  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
-  background-clip: padding-box;
-  outline: 0;
-}
-.modal-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 1040;
-  background-color: #000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-  filter: alpha(opacity=0);
-}
-.modal-backdrop.in {
-  opacity: 0.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;
-}
-@media (min-width: 768px) {
-  .modal-dialog {
-    width: 600px;
-    margin: 30px auto;
-  }
-  .modal-content {
-    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
-  }
-  .modal-sm {
-    width: 300px;
-  }
-}
-@media (min-width: 992px) {
-  .modal-lg {
-    width: 900px;
-  }
-}
-.clearfix:before,
-.clearfix:after,
-.dl-horizontal dd:before,
-.dl-horizontal dd:after,
-.container:before,
-.container:after,
-.container-fluid:before,
-.container-fluid:after,
-.row:before,
-.row:after,
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after,
-.nav:before,
-.nav:after,
-.navbar:before,
-.navbar:after,
-.navbar-header:before,
-.navbar-header:after,
-.navbar-collapse:before,
-.navbar-collapse:after,
-.modal-header:before,
-.modal-header:after,
-.modal-footer:before,
-.modal-footer:after {
-  content: " ";
-  display: table;
-}
-.clearfix:after,
-.dl-horizontal dd:after,
-.container:after,
-.container-fluid:after,
-.row:after,
-.form-horizontal .form-group:after,
-.nav:after,
-.navbar:after,
-.navbar-header:after,
-.navbar-collapse:after,
-.modal-header:after,
-.modal-footer: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;
-}
-.invisible {
-  visibility: hidden;
-}
-.text-hide {
-  font: 0/0 a;
-  color: transparent;
-  text-shadow: none;
-  background-color: transparent;
-  border: 0;
-}
-.hidden {
-  display: none !important;
-}
-.affix {
-  position: fixed;
-}
-@-ms-viewport {
-  width: device-width;
-}
-.visible-xs,
-.visible-sm,
-.visible-md,
-.visible-lg {
-  display: none !important;
-}
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block {
-  display: none !important;
-}
-@media (max-width: 767px) {
-  .visible-xs {
-    display: block !important;
-  }
-  table.visible-xs {
-    display: table !important;
-  }
-  tr.visible-xs {
-    display: table-row !important;
-  }
-  th.visible-xs,
-  td.visible-xs {
-    display: table-cell !important;
-  }
-}
-@media (max-width: 767px) {
-  .visible-xs-block {
-    display: block !important;
-  }
-}
-@media (max-width: 767px) {
-  .visible-xs-inline {
-    display: inline !important;
-  }
-}
-@media (max-width: 767px) {
-  .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;
-  }
-  th.visible-sm,
-  td.visible-sm {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-block {
-    display: block !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .visible-sm-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 768px) and (max-width: 991px) {
-  .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;
-  }
-  th.visible-md,
-  td.visible-md {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-block {
-    display: block !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .visible-md-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
-  .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;
-  }
-  th.visible-lg,
-  td.visible-lg {
-    display: table-cell !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-block {
-    display: block !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-inline {
-    display: inline !important;
-  }
-}
-@media (min-width: 1200px) {
-  .visible-lg-inline-block {
-    display: inline-block !important;
-  }
-}
-@media (max-width: 767px) {
-  .hidden-xs {
-    display: none !important;
-  }
-}
-@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;
-  }
-}
-@media (min-width: 1200px) {
-  .hidden-lg {
-    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;
-  }
-  th.visible-print,
-  td.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;
-  }
-}
-@media print {
-  .hidden-print {
-    display: none !important;
-  }
-}
-.auth-message {
-  background-color: #eeeeee;
-  padding: 20px 0px;
-  width: 100%;
-  position: fixed;
-  top: -100%;
-  left: 0px;
-  z-index: 1070;
-  transition: top 300ms ease;
-}
-.auth-message.show {
-  top: 0px;
-  bottom: auto;
-}
-.auth-message p {
-  padding: 5px 0px;
-  color: #222222;
-}
-@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%;
-  width: 100%;
-  z-index: 1060;
-  text-align: center;
-  font-size: 18px;
-  transition: top 300ms ease;
-  pointer-events: none;
-}
-.alerts-snackbar.in {
-  top: 0px;
-  transition: top 200ms ease;
-}
-.alerts-snackbar p {
-  display: inline-block;
-  border-radius: 0px 0px 4px 4px;
-  margin: 0px;
-  pointer-events: all;
-}
-.loader {
-  width: 100%;
-  height: 49px;
-  text-align: center;
-}
-.loader-spinning-wheel {
-  width: 49px;
-  height: 49px;
-  margin: 0 auto;
-  border: 3px solid #777777;
-  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: 0px;
-}
-.navbar .navbar-full .navbar-brand > * {
-  display: inline-block;
-}
-.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: 0px;
-  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: none;
-  border: none;
-  margin: 0px;
-  padding-top: 10px;
-  padding-bottom: 10px;
-  width: 100%;
-  color: #777;
-  text-align: center;
-}
-.navbar ul.navbar-compact-nav > li > a:hover,
-.navbar ul.navbar-compact-nav > li > button:hover,
-.navbar ul.navbar-compact-nav > li > a:focus,
-.navbar ul.navbar-compact-nav > li > button:focus {
-  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;
-}
-@media (max-width: 767px) {
-  .navbar.navbar-misago {
-    min-height: auto;
-  }
-}
-@font-face {
-  font-family: 'Material Icons';
-  font-style: normal;
-  font-weight: 400;
-  src: url(../fonts/MaterialIcons-Regular.eot);
-  /* For IE6-8 */
-  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-weight: normal;
-  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;
-  /* Support for all WebKit browsers. */
-  -webkit-font-smoothing: antialiased;
-  /* Support for Safari and Chrome. */
-  text-rendering: optimizeLegibility;
-  /* Support for Firefox. */
-  -moz-osx-font-smoothing: grayscale;
-  /* Support for IE. */
-  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: 0px;
-  }
-}
-.modal-loader {
-  padding: 50px 0px;
-}
-.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.66666667px;
-}
-@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.66666667px;
-}
-.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-loading,
-.btn.btn-loading:link,
-.btn.btn-loading:active,
-.btn.btn-loading:visited,
-.btn.btn-loading:hover,
-.btn.btn-loading:focus {
-  color: transparent;
-}
-.btn.btn-loading .loader,
-.btn.btn-loading:link .loader,
-.btn.btn-loading:active .loader,
-.btn.btn-loading:visited .loader,
-.btn.btn-loading:hover .loader,
-.btn.btn-loading:focus .loader {
-  height: 20px;
-  margin-top: -20px;
-}
-.btn.btn-loading .loader > div,
-.btn.btn-loading:link .loader > div,
-.btn.btn-loading:active .loader > div,
-.btn.btn-loading:visited .loader > div,
-.btn.btn-loading:hover .loader > div,
-.btn.btn-loading:focus .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-primary .loader > div {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.btn.btn-loading.btn-success .loader > div {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.btn.btn-loading.btn-info .loader > div {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.btn.btn-loading.btn-warning .loader > div {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.btn.btn-loading.btn-danger .loader > div {
-  border-top-color: #fff;
-  border-bottom-color: #fff;
-}
-.dropdown-menu > li > a,
-.dropdown-menu > li > .btn-link {
-  display: block;
-  border: none;
-  clear: both;
-  float: none;
-  padding: 4px 20px;
-  width: 100%;
-  color: #333333;
-  font-weight: normal;
-  line-height: 1.42857143;
-  text-align: left;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > .btn-link:hover,
-.dropdown-menu > li > a:focus,
-.dropdown-menu > li > .btn-link:focus {
-  background-color: #f5f5f5;
-  color: #262626;
-  text-decoration: none;
-}
-.dropdown-menu > li > a .material-icon,
-.dropdown-menu > li > .btn-link .material-icon {
-  margin: -2px 0px;
-  margin-right: 7px;
-  position: relative;
-  bottom: 1px;
-  font-size: 18px;
-}
-.dropdown-menu .dropdown-footer {
-  padding: 6px 20px;
-}
-.mobile-dropdown {
-  position: static;
-  margin: 0px;
-}
-.mobile-dropdown.open > .dropdown-menu {
-  border: none;
-  border-radius: 0;
-  -webkit-box-shadow: none;
-  box-shadow: none;
-  display: block;
-  margin: 0px;
-  width: 100%;
-  position: static;
-}
-.user-dropdown .guest-preview {
-  text-align: center;
-}
-.user-dropdown .guest-preview .row {
-  margin: 0px;
-}
-.navbar .user-dropdown {
-  width: 240px;
-}
-.user-dropdown .dropdown-header {
-  padding: 6px 20px;
-  font-size: 18px;
-}
-.user-dropdown .dropdown-header strong {
-  font-weight: normal;
-}
-.misago-footer {
-  margin-top: 30px;
-  margin-bottom: 50px;
-}
-.misago-footer .footer-content {
-  border-top: 1px solid #eeeeee;
-  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: 0px 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;
-  border-left-color: transparent;
-  border-right-color: transparent;
-  width: 100px;
-  height: 100px;
-}
-.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading img {
-  opacity: 0.33;
-  filter: alpha(opacity=33);
-}
-.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading .loader {
-  display: block;
-}
-.modal-change-avatar .modal-avatar-index .btn {
-  text-align: left;
-}
-@media screen and (max-width: 991px) {
-  .page-message,
-  .page-error {
-    text-align: center;
-  }
-  .page-message .message-icon,
-  .page-error .message-icon {
-    margin: 30px;
-  }
-  .page-message .message-icon .material-icon,
-  .page-error .message-icon .material-icon {
-    font-size: 160px;
-  }
-}
-@media screen and (min-width: 992px) {
-  .page-message .message-panel,
-  .page-error .message-panel {
-    margin: 60px auto;
-    max-width: 779.35px;
-    overflow: auto;
-  }
-  .page-message .message-icon,
-  .page-error .message-icon {
-    float: left;
-  }
-  .page-message .message-icon .material-icon,
-  .page-error .message-icon .material-icon {
-    font-size: 80px;
-  }
-  .page-message .message-body,
-  .page-error .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,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-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}.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}.modal-change-avatar .modal-avatar-index .btn{text-align:left}@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}}

BIN
misago/static/misago/img/site-icon.png


BIN
misago/static/misago/img/site-logo.png


+ 5 - 5888
misago/static/misago/js/misago.js

@@ -1,5888 +1,5 @@
-(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){
-(function (global){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.Misago = undefined;
-
-var _orderedList = require('../../../../documents/misago/frontend/src/utils/ordered-list');
-
-var _orderedList2 = _interopRequireDefault(_orderedList);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Misago = exports.Misago = function () {
-  function Misago() {
-    _classCallCheck(this, Misago);
-
-    this._initializers = [];
-    this._context = {};
-  }
-
-  _createClass(Misago, [{
-    key: 'addInitializer',
-    value: function addInitializer(initializer) {
-      this._initializers.push({
-        key: initializer.name,
-
-        item: initializer.initializer,
-
-        after: initializer.after,
-        before: initializer.before
-      });
-    }
-  }, {
-    key: 'init',
-    value: function init(context) {
-      var _this = this;
-
-      this._context = context;
-
-      var initOrder = new _orderedList2.default(this._initializers).orderedValues();
-      initOrder.forEach(function (initializer) {
-        initializer(_this);
-      });
-    }
-
-    // context accessors
-
-  }, {
-    key: 'has',
-    value: function has(key) {
-      return this._context.hasOwnProperty(key);
-    }
-  }, {
-    key: 'get',
-    value: function get(key, fallback) {
-      if (this.has(key)) {
-        return this._context[key];
-      } else {
-        return fallback || undefined;
-      }
-    }
-  }]);
-
-  return Misago;
-}();
-
-// create  singleton
-
-var misago = new Misago();
-
-// expose it globally
-global.misago = misago;
-
-// and export it for tests and stuff
-exports.default = misago;
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{"../../../../documents/misago/frontend/src/utils/ordered-list":62}],2:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _ajax = require('../../../../../documents/misago/frontend/src/services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _ajax2.default.init(_index2.default.get('CSRF_COOKIE_NAME'));
-}
-
-_index2.default.addInitializer({
-  name: 'ajax',
-  initializer: initializer
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/ajax":50}],3:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _reactRedux = require('react-redux');
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _authMessage = require('../../../../../documents/misago/frontend/src/components/auth-message');
-
-var _authMessage2 = _interopRequireDefault(_authMessage);
-
-var _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  (0, _mountComponent2.default)((0, _reactRedux.connect)(_authMessage.select)(_authMessage2.default), 'auth-message-mount');
-}
-
-_index2.default.addInitializer({
-  name: 'component:auth-message',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/components/auth-message":24,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61,"react-redux":"react-redux"}],4:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _auth = require('../../../../../documents/misago/frontend/src/reducers/auth');
-
-var _auth2 = _interopRequireDefault(_auth);
-
-var _store = require('../../../../../documents/misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  _store2.default.addReducer('auth', _auth2.default, Object.assign({
-    'isAuthenticated': context.get('isAuthenticated'),
-    'isAnonymous': !context.get('isAuthenticated'),
-
-    'user': context.get('user')
-  }, _auth.initialState));
-}
-
-_index2.default.addInitializer({
-  name: 'reducer:auth',
-  initializer: initializer,
-  before: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/reducers/auth":46,"../../../../../documents/misago/frontend/src/services/store":58}],5:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _auth = require('../../../../../documents/misago/frontend/src/services/auth');
-
-var _auth2 = _interopRequireDefault(_auth);
-
-var _modal = require('../../../../../documents/misago/frontend/src/services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-var _store = require('../../../../../documents/misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-var _localStorage = require('../../../../../documents/misago/frontend/src/services/local-storage');
-
-var _localStorage2 = _interopRequireDefault(_localStorage);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _auth2.default.init(_store2.default, _localStorage2.default, _modal2.default);
-}
-
-_index2.default.addInitializer({
-  name: 'auth',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/auth":51,"../../../../../documents/misago/frontend/src/services/local-storage":54,"../../../../../documents/misago/frontend/src/services/modal":56,"../../../../../documents/misago/frontend/src/services/store":58}],6:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _bannedPage = require('../../../../../documents/misago/frontend/src/utils/banned-page');
-
-var _bannedPage2 = _interopRequireDefault(_bannedPage);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  if (context.get('BAN_MESSAGE')) {
-    (0, _bannedPage2.default)(context.get('BAN_MESSAGE'), false);
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:baned-page',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/banned-page":60}],7:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _ajax = require('../../../../../documents/misago/frontend/src/services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _captcha = require('../../../../../documents/misago/frontend/src/services/captcha');
-
-var _captcha2 = _interopRequireDefault(_captcha);
-
-var _include = require('../../../../../documents/misago/frontend/src/services/include');
-
-var _include2 = _interopRequireDefault(_include);
-
-var _snackbar = require('../../../../../documents/misago/frontend/src/services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  _captcha2.default.init(context, _ajax2.default, _include2.default, _snackbar2.default);
-}
-
-_index2.default.addInitializer({
-  name: 'captcha',
-  initializer: initializer
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/ajax":50,"../../../../../documents/misago/frontend/src/services/captcha":52,"../../../../../documents/misago/frontend/src/services/include":53,"../../../../../documents/misago/frontend/src/services/snackbar":57}],8:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _include = require('../../../../../documents/misago/frontend/src/services/include');
-
-var _include2 = _interopRequireDefault(_include);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  _include2.default.init(context.get('STATIC_URL'));
-}
-
-_index2.default.addInitializer({
-  name: 'include',
-  initializer: initializer
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/include":53}],9:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _localStorage = require('../../../../../documents/misago/frontend/src/services/local-storage');
-
-var _localStorage2 = _interopRequireDefault(_localStorage);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _localStorage2.default.init('misago_');
-}
-
-_index2.default.addInitializer({
-  name: 'local-storage',
-  initializer: initializer
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/local-storage":54}],10:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _mobileNavbarDropdown = require('../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown');
-
-var _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  var element = document.getElementById('mobile-navbar-dropdown-mount');
-  if (element) {
-    _mobileNavbarDropdown2.default.init(element);
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'dropdown',
-  initializer: initializer,
-  before: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown":55}],11:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _modal = require('../../../../../documents/misago/frontend/src/services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  var element = document.getElementById('modal-mount');
-  if (element) {
-    _modal2.default.init(element);
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'modal',
-  initializer: initializer,
-  before: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/modal":56}],12:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _moment = require('moment');
-
-var _moment2 = _interopRequireDefault(_moment);
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _moment2.default.locale($('html').attr('lang'));
-}
-
-_index2.default.addInitializer({
-  name: 'moment',
-  initializer: initializer
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"moment":"moment"}],13:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _requestActivationLink = require('../../../../../documents/misago/frontend/src/components/request-activation-link');
-
-var _requestActivationLink2 = _interopRequireDefault(_requestActivationLink);
-
-var _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  if (document.getElementById('request-activation-link-mount')) {
-    (0, _mountComponent2.default)(_requestActivationLink2.default, 'request-activation-link-mount', false);
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:request-activation-link',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/components/request-activation-link":37,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61}],14:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _requestPasswordReset = require('../../../../../documents/misago/frontend/src/components/request-password-reset');
-
-var _requestPasswordReset2 = _interopRequireDefault(_requestPasswordReset);
-
-var _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  if (document.getElementById('request-password-reset-mount')) {
-    (0, _mountComponent2.default)(_requestPasswordReset2.default, 'request-password-reset-mount', false);
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:request-password-reset',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/components/request-password-reset":38,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61}],15:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _resetPasswordForm = require('../../../../../documents/misago/frontend/src/components/reset-password-form');
-
-var _resetPasswordForm2 = _interopRequireDefault(_resetPasswordForm);
-
-var _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  if (document.getElementById('reset-password-form-mount')) {
-    (0, _mountComponent2.default)(_resetPasswordForm2.default, 'reset-password-form-mount', false);
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:reset-password-form',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/components/reset-password-form":39,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61}],16:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _reactRedux = require('react-redux');
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _snackbar = require('../../../../../documents/misago/frontend/src/components/snackbar');
-
-var _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  (0, _mountComponent2.default)((0, _reactRedux.connect)(_snackbar.select)(_snackbar.Snackbar), 'snackbar-mount');
-}
-
-_index2.default.addInitializer({
-  name: 'component:snackbar',
-  initializer: initializer,
-  after: 'snackbar'
-});
-
-},{"../../../../../documents/misago/frontend/src/components/snackbar":41,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61,"react-redux":"react-redux"}],17:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _snackbar = require('../../../../../documents/misago/frontend/src/reducers/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _store = require('../../../../../documents/misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _store2.default.addReducer('snackbar', _snackbar2.default, _snackbar.initialState);
-}
-
-_index2.default.addInitializer({
-  name: 'reducer:snackbar',
-  initializer: initializer,
-  before: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/reducers/snackbar":47,"../../../../../documents/misago/frontend/src/services/store":58}],18:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _snackbar = require('../../../../../documents/misago/frontend/src/services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _store = require('../../../../../documents/misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _snackbar2.default.init(_store2.default);
-}
-
-_index2.default.addInitializer({
-  name: 'snackbar',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/snackbar":57,"../../../../../documents/misago/frontend/src/services/store":58}],19:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _store = require('../../../../../documents/misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _store2.default.init();
-}
-
-_index2.default.addInitializer({
-  name: 'store',
-  initializer: initializer,
-  before: '_end'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/store":58}],20:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _tick = require('../../../../../documents/misago/frontend/src/reducers/tick');
-
-var _tick2 = _interopRequireDefault(_tick);
-
-var _store = require('../../../../../documents/misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _store2.default.addReducer('tick', _tick2.default, _tick.initialState);
-}
-
-_index2.default.addInitializer({
-  name: 'reducer:tick',
-  initializer: initializer,
-  before: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/reducers/tick":48,"../../../../../documents/misago/frontend/src/services/store":58}],21:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _tick = require('../../../../../documents/misago/frontend/src/reducers/tick');
-
-var _store = require('../../../../../documents/misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var TICK_PERIOD = 50 * 1000; //do the tick every 50s
-
-function initializer() {
-  window.setInterval(function () {
-    _store2.default.dispatch((0, _tick.doTick)());
-  }, TICK_PERIOD);
-}
-
-_index2.default.addInitializer({
-  name: 'tick-start',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/reducers/tick":48,"../../../../../documents/misago/frontend/src/services/store":58}],22:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _reactRedux = require('react-redux');
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _root = require('../../../../../documents/misago/frontend/src/components/user-menu/root');
-
-var _mountComponent = require('../../../../../documents/misago/frontend/src/utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  (0, _mountComponent2.default)((0, _reactRedux.connect)(_root.select)(_root.UserMenu), 'user-menu-mount');
-  (0, _mountComponent2.default)((0, _reactRedux.connect)(_root.select)(_root.CompactUserMenu), 'user-menu-compact-mount');
-}
-
-_index2.default.addInitializer({
-  name: 'component:user-menu',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../documents/misago/frontend/src/components/user-menu/root":43,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61,"react-redux":"react-redux"}],23:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../documents/misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _include = require('../../../../../documents/misago/frontend/src/services/include');
-
-var _include2 = _interopRequireDefault(_include);
-
-var _zxcvbn = require('../../../../../documents/misago/frontend/src/services/zxcvbn');
-
-var _zxcvbn2 = _interopRequireDefault(_zxcvbn);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _zxcvbn2.default.init(_include2.default);
-}
-
-_index2.default.addInitializer({
-  name: 'zxcvbn',
-  initializer: initializer
-});
-
-},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/include":53,"../../../../../documents/misago/frontend/src/services/zxcvbn":59}],24:[function(require,module,exports){
-"use strict";
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.select = select;
-
-var _react = require("react");
-
-var _react2 = _interopRequireDefault(_react);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: "refresh",
-    value: function refresh() {
-      window.location.reload();
-    }
-  }, {
-    key: "getMessage",
-    value: function getMessage() {
-      if (this.props.signedIn) {
-        return interpolate(gettext("You have signed in as %(username)s. Please refresh the page before continuing."), { username: this.props.signedIn.username }, true);
-      } else if (this.props.signedOut) {
-        return interpolate(gettext("%(username)s, you have been signed out. Please refresh the page before continuing."), { username: this.props.user.username }, true);
-      }
-    }
-  }, {
-    key: "getClassName",
-    value: function getClassName() {
-      if (this.props.signedIn || this.props.signedOut) {
-        return "auth-message show";
-      } else {
-        return "auth-message";
-      }
-    }
-  }, {
-    key: "render",
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        "div",
-        { className: this.getClassName() },
-        _react2.default.createElement(
-          "div",
-          { className: "container" },
-          _react2.default.createElement(
-            "p",
-            { className: "lead" },
-            this.getMessage()
-          ),
-          _react2.default.createElement(
-            "p",
-            null,
-            _react2.default.createElement(
-              "button",
-              { type: "button", className: "btn btn-default",
-                onClick: this.refresh },
-              gettext("Reload page")
-            ),
-            " ",
-            _react2.default.createElement(
-              "span",
-              { className: "hidden-xs hidden-sm text-muted" },
-              gettext("or press F5 key.")
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-function select(state) {
-  return {
-    user: state.auth.user,
-    signedIn: state.auth.signedIn,
-    signedOut: state.auth.signedOut
-  };
-}
-
-},{"react":"react"}],25:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var BASE_URL = $('base').attr('href') + 'user-avatar/';
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'getSrc',
-    value: function getSrc() {
-      var size = this.props.size || 100; // jshint ignore:line
-      var url = BASE_URL;
-
-      if (this.props.user && this.props.user.id) {
-        // just avatar hash, size and user id
-        url += this.props.user.avatar_hash + '/' + size + '/' + this.props.user.id + '.png';
-      } else {
-        // just append avatar size to file to produce no-avatar placeholder
-        url += size + '.png';
-      }
-
-      return url;
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement('img', { src: this.getSrc(),
-        className: this.props.className || 'user-avatar',
-        title: gettext("User avatar") });
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],26:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _moment = require('moment');
-
-var _moment2 = _interopRequireDefault(_moment);
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'getReasonMessage',
-    value: function getReasonMessage() {
-      /* jshint ignore:start */
-      if (this.props.message.html) {
-        return _react2.default.createElement('div', { className: 'lead',
-          dangerouslySetInnerHTML: { __html: this.props.message.html } });
-      } else {
-        return _react2.default.createElement(
-          'p',
-          { className: 'lead' },
-          this.props.message.plain
-        );
-      }
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getExpirationMessage',
-    value: function getExpirationMessage() {
-      if (this.props.expires) {
-        if (this.props.expires.isAfter((0, _moment2.default)())) {
-          return interpolate(gettext("This ban expires %(expires_on)s."), { 'expires_on': this.props.expires.fromNow() }, true);
-        } else {
-          return gettext("This ban has expired.");
-        }
-      } else {
-        return gettext("This ban is permanent.");
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'page page-error page-error-banned' },
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'div',
-            { className: 'message-panel' },
-            _react2.default.createElement(
-              'div',
-              { className: 'message-icon' },
-              _react2.default.createElement(
-                'span',
-                { className: 'material-icon' },
-                'highlight_off'
-              )
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'message-body' },
-              this.getReasonMessage(),
-              _react2.default.createElement(
-                'p',
-                { className: 'message-footnote' },
-                this.getExpirationMessage()
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"moment":"moment","react":"react"}],27:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _loader = require('./loader');
-
-var _loader2 = _interopRequireDefault(_loader);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-// jshint ignore:line
-
-var Button = function (_React$Component) {
-  _inherits(Button, _React$Component);
-
-  function Button() {
-    _classCallCheck(this, Button);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(Button).apply(this, arguments));
-  }
-
-  _createClass(Button, [{
-    key: 'render',
-    value: function render() {
-      var className = 'btn ' + this.props.className;
-      var disabled = this.props.disabled;
-
-      if (this.props.loading) {
-        className += ' btn-loading';
-        disabled = true;
-      }
-
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'button',
-        { type: this.props.onClick ? 'button' : 'submit',
-          className: className,
-          disabled: disabled,
-          onClick: this.props.onClick },
-        this.props.children,
-        this.props.loading ? _react2.default.createElement(_loader2.default, null) : null
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return Button;
-}(_react2.default.Component);
-
-exports.default = Button;
-
-Button.defaultProps = {
-  className: "btn-default",
-
-  type: "submit",
-
-  loading: false,
-  disabled: false,
-
-  onClick: null
-};
-
-},{"./loader":32,"react":"react"}],28:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _avatar = require('../avatar');
-
-var _avatar2 = _interopRequireDefault(_avatar);
-
-var _button = require('../button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _loader = require('../loader');
-
-var _loader2 = _interopRequireDefault(_loader);
-
-var _ajax = require('../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.setGravatar = function () {
-      _this.callApi('gravatar');
-    };
-
-    _this.setGenerated = function () {
-      _this.callApi('generated');
-    };
-
-    _this.state = {
-      'isLoading': false
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'callApi',
-    value: function callApi(avatarType) {
-      var _this2 = this;
-
-      if (this.state.isLoading) {
-        return false;
-      }
-
-      this.setState({
-        'isLoading': true
-      });
-
-      _ajax2.default.post(this.props.user.avatar_api_url, {
-        avatar: avatarType
-      }).then(function (response) {
-        _snackbar2.default.success(response.detail);
-        _this2.props.updateAvatar(response.avatar_hash, response.options);
-
-        _this2.setState({
-          'isLoading': false
-        });
-      }, function (rejection) {
-        if (rejection.status === 400) {
-          _snackbar2.default.error(rejection.detail);
-        } else {
-          _snackbar2.default.showError(rejection);
-        }
-
-        _this2.setState({
-          'isLoading': false
-        });
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getGravatarButton',
-
-    /* jshint ignore:end */
-
-    value: function getGravatarButton() {
-      if (this.props.options.gravatar) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          _button2.default,
-          { onClick: this.setGravatar,
-            disabled: this.state.isLoading,
-            className: 'btn-default btn-block' },
-          gettext("Download my Gravatar")
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getAvatarPreview',
-    value: function getAvatarPreview() {
-      if (this.state.isLoading) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'avatar-preview preview-loading' },
-          _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '200' }),
-          _react2.default.createElement(_loader2.default, null)
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'div',
-            { className: 'avatar-preview' },
-            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '200' })
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'modal-body modal-avatar-index' },
-        _react2.default.createElement(
-          'div',
-          { className: 'row' },
-          _react2.default.createElement(
-            'div',
-            { className: 'col-md-5' },
-            this.getAvatarPreview()
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'col-md-7' },
-            this.getGravatarButton(),
-            _react2.default.createElement(
-              _button2.default,
-              { onClick: this.setGenerated,
-                disabled: this.state.isLoading,
-                className: 'btn-default btn-block' },
-              gettext("Generate my individual avatar")
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../services/ajax":50,"../../services/snackbar":57,"../avatar":25,"../button":27,"../loader":32,"react":"react"}],29:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ChangeAvatarError = undefined;
-exports.select = select;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _index = require('./index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _modalLoader = require('../modal-loader');
-
-var _modalLoader2 = _interopRequireDefault(_modalLoader);
-
-var _index3 = require('../../index');
-
-var _index4 = _interopRequireDefault(_index3);
-
-var _users = require('../../reducers/users');
-
-var _ajax = require('../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _store = require('../../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-
-// jshint ignore:line
-
-var ChangeAvatarError = exports.ChangeAvatarError = function (_React$Component) {
-  _inherits(ChangeAvatarError, _React$Component);
-
-  function ChangeAvatarError() {
-    _classCallCheck(this, ChangeAvatarError);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(ChangeAvatarError).apply(this, arguments));
-  }
-
-  _createClass(ChangeAvatarError, [{
-    key: 'getErrorReason',
-    value: function getErrorReason() {
-      if (this.props.reason) {
-        /* jshint ignore:start */
-        return _react2.default.createElement('p', { dangerouslySetInnerHTML: { __html: this.props.reason } });
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'modal-body' },
-        _react2.default.createElement(
-          'div',
-          { className: 'message-icon' },
-          _react2.default.createElement(
-            'span',
-            { className: 'material-icon' },
-            'remove_circle_outline'
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'message-body' },
-          _react2.default.createElement(
-            'p',
-            { className: 'lead' },
-            this.props.message
-          ),
-          this.getErrorReason()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return ChangeAvatarError;
-}(_react2.default.Component);
-
-var _class = function (_React$Component2) {
-  _inherits(_class, _React$Component2);
-
-  function _class() {
-    var _Object$getPrototypeO;
-
-    var _temp, _this2, _ret;
-
-    _classCallCheck(this, _class);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this2), _this2.showError = function (error) {
-      _this2.setState({
-        error: error
-      });
-    }, _this2.updateAvatar = function (avatarHash, options) {
-      _store2.default.dispatch((0, _users.updateAvatar)(_this2.props.user, avatarHash));
-
-      _this2.setState({
-        'component': _index2.default,
-        options: options
-      });
-    }, _this2.showIndex = function () {
-      _this2.setState({
-        'component': _index2.default
-      });
-    }, _temp), _possibleConstructorReturn(_this2, _ret);
-  }
-
-  _createClass(_class, [{
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      var _this3 = this;
-
-      Promise.all([_ajax2.default.get(_index4.default.get('user').avatar_api_url)]).then(function (resolutions) {
-        _this3.setState({
-          'component': _index2.default,
-          'options': resolutions[0]
-        });
-      }, function (rejection) {
-        _this3.showError(rejection);
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getBody',
-
-    /* jshint ignore:end */
-
-    value: function getBody() {
-      if (this.state) {
-        if (this.state.error) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(ChangeAvatarError, { message: this.state.error.detail,
-            reason: this.state.error.reason });
-          /* jshint ignore:end */
-        } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(this.state.component, { options: this.state.options,
-              user: this.props.user,
-              updateAvatar: this.updateAvatar,
-              showIndex: this.showIndex });
-            /* jshint ignore:end */
-          }
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_modalLoader2.default, null);
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.state && this.state.error) {
-        return "modal-dialog modal-message modal-change-avatar";
-      } else {
-        return "modal-dialog modal-change-avatar";
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: this.getClassName(),
-          role: 'document' },
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-content' },
-          _react2.default.createElement(
-            'div',
-            { className: 'modal-header' },
-            _react2.default.createElement(
-              'button',
-              { type: 'button', className: 'close', 'data-dismiss': 'modal',
-                'aria-label': gettext("Close") },
-              _react2.default.createElement(
-                'span',
-                { 'aria-hidden': 'true' },
-                '×'
-              )
-            ),
-            _react2.default.createElement(
-              'h4',
-              { className: 'modal-title' },
-              gettext("Change your avatar")
-            )
-          ),
-          this.getBody()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-function select(state) {
-  return {
-    'user': state.auth.user
-  };
-}
-
-},{"../../index":45,"../../reducers/users":49,"../../services/ajax":50,"../../services/store":58,"../modal-loader":33,"./index":28,"react":"react"}],30:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'isValidated',
-    value: function isValidated() {
-      return typeof this.props.validation !== "undefined";
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      var className = 'form-group';
-      if (this.isValidated()) {
-        className += ' has-feedback';
-        if (this.props.validation === null) {
-          className += ' has-success';
-        } else {
-          className += ' has-error';
-        }
-      }
-      return className;
-    }
-  }, {
-    key: 'getFeedback',
-    value: function getFeedback() {
-      var _this2 = this;
-
-      if (this.props.validation) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'help-block errors' },
-          this.props.validation.map(function (error, i) {
-            return _react2.default.createElement(
-              'p',
-              { key: _this2.props.for + 'FeedbackItem' + i },
-              error
-            );
-          })
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getFeedbackIcon',
-    value: function getFeedbackIcon() {
-      if (this.isValidated()) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'span',
-          { className: 'material-icon form-control-feedback',
-            'aria-hidden': 'true', key: this.props.for + 'FeedbackIcon' },
-          this.props.validation ? 'clear' : 'check'
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getFeedbackDescription',
-    value: function getFeedbackDescription() {
-      if (this.isValidated()) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'span',
-          { id: this.props.for + '_status', className: 'sr-only' },
-          this.props.validation ? gettext('(error)') : gettext('(success)')
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getHelpText',
-    value: function getHelpText() {
-      if (this.props.helpText) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'p',
-          { className: 'help-block' },
-          this.props.helpText
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: this.getClassName() },
-        _react2.default.createElement(
-          'label',
-          { className: 'control-label ' + (this.props.labelClass || ''),
-            htmlFor: this.props.for || '' },
-          this.props.label,
-          ':'
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: this.props.controlClass || '' },
-          this.props.children,
-          this.getFeedbackIcon(),
-          this.getFeedbackDescription(),
-          this.getFeedback(),
-          this.getHelpText(),
-          this.props.extra || null
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],31:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _validators = require('../utils/validators');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var validateRequired = (0, _validators.required)();
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    var _Object$getPrototypeO;
-
-    var _temp, _this, _ret;
-
-    _classCallCheck(this, _class);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.bindInput = function (name) {
-      return function (event) {
-        var newState = {};
-        newState[name] = event.target.value;
-
-        var formErrors = _this.state.errors || {};
-        formErrors[name] = _this.validateField(name, newState[name]);
-        newState.errors = formErrors;
-
-        _this.setState(newState);
-      };
-    }, _this.handleSubmit = function (event) {
-      // we don't reload page on submissions
-      event.preventDefault();
-      if (_this.state.isLoading) {
-        return;
-      }
-
-      if (_this.clean()) {
-        _this.setState({ 'isLoading': true });
-        var promise = _this.send();
-
-        if (promise) {
-          promise.then(function (success) {
-            _this.setState({ 'isLoading': false });
-            _this.handleSuccess(success);
-          }, function (rejection) {
-            _this.setState({ 'isLoading': false });
-            _this.handleError(rejection);
-          });
-        } else {
-          _this.setState({ 'isLoading': false });
-        }
-      }
-    }, _temp), _possibleConstructorReturn(_this, _ret);
-  }
-
-  _createClass(_class, [{
-    key: 'validate',
-    value: function validate() {
-      var errors = {};
-
-      var validators = {
-        required: this.state.validators.required || this.state.validators,
-        optional: this.state.validators.optional || {}
-      };
-
-      var validatedFields = [];
-
-      // add required fields to validation
-      for (var name in validators.required) {
-        if (validators.required.hasOwnProperty(name) && validators.required[name]) {
-          validatedFields.push(name);
-        }
-      }
-
-      // add optional fields to validation
-      for (var name in validators.optional) {
-        if (validators.optional.hasOwnProperty(name) && validators.optional[name]) {
-          validatedFields.push(name);
-        }
-      }
-
-      // validate fields values
-      for (var i in validatedFields) {
-        var name = validatedFields[i];
-        var fieldErrors = this.validateField(name, this.state[name]);
-
-        if (fieldErrors === null) {
-          errors[name] = null;
-        } else if (fieldErrors) {
-          errors[name] = fieldErrors;
-        }
-      }
-
-      return errors;
-    }
-  }, {
-    key: 'isValid',
-    value: function isValid() {
-      var errors = this.validate();
-      for (var field in errors) {
-        if (errors.hasOwnProperty(field)) {
-          if (errors[field] !== null) {
-            return false;
-          }
-        }
-      }
-
-      return true;
-    }
-  }, {
-    key: 'validateField',
-    value: function validateField(name, value) {
-      var errors = [];
-
-      var validators = {
-        required: (this.state.validators.required || this.state.validators)[name],
-        optional: (this.state.validators.optional || {})[name]
-      };
-
-      var requiredError = validateRequired(value) || false;
-
-      if (validators.required) {
-        if (requiredError) {
-          errors = [requiredError];
-        } else {
-          for (var i in validators.required) {
-            var validationError = validators.required[i](value);
-            if (validationError) {
-              errors.push(validationError);
-            }
-          }
-        }
-
-        return errors.length ? errors : null;
-      } else if (requiredError === false && validators.optional) {
-        for (var i in validators.optional) {
-          var validationError = validators.optional[i](value);
-          if (validationError) {
-            errors.push(validationError);
-          }
-        }
-
-        return errors.length ? errors : null;
-      }
-
-      return false; // false === field wasn't validated
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'clean',
-    value: function clean() {
-      return true;
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return null;
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(success) {
-      return;
-    }
-  }, {
-    key: 'handleError',
-
-    /* jshint ignore:end */
-    value: function handleError(rejection) {
-      return;
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../utils/validators":63,"react":"react"}],32:[function(require,module,exports){
-"use strict";
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require("react");
-
-var _react2 = _interopRequireDefault(_react);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: "render",
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        "div",
-        { className: "loader" },
-        _react2.default.createElement("div", { className: "loader-spinning-wheel" })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],33:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _loader = require('./loader');
-
-var _loader2 = _interopRequireDefault(_loader);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-// jshint ignore:line
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'modal-body modal-loader' },
-        _react2.default.createElement(_loader2.default, null)
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"./loader":32,"react":"react"}],34:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.LABELS = exports.STYLES = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _zxcvbn = require('../services/zxcvbn');
-
-var _zxcvbn2 = _interopRequireDefault(_zxcvbn);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-var STYLES = exports.STYLES = ['progress-bar-danger', 'progress-bar-warning', 'progress-bar-warning', 'progress-bar-primary', 'progress-bar-success'];
-
-var 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.")];
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this._score = 0;
-    _this._password = null;
-    _this._inputs = [];
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'getScore',
-    value: function getScore(password, inputs) {
-      var _this2 = this;
-
-      var cacheStale = false;
-
-      if (password.trim() !== this._password) {
-        cacheStale = true;
-      }
-
-      if (inputs.length !== this._inputs.length) {
-        cacheStale = true;
-      } else {
-        inputs.map(function (value, i) {
-          if (value.trim() !== _this2._inputs[i]) {
-            cacheStale = true;
-          }
-        });
-      }
-
-      if (cacheStale) {
-        this._score = _zxcvbn2.default.scorePassword(password, inputs);
-        this._password = password.trim();
-        this._inputs = inputs.map(function (value) {
-          return value.trim();
-        });
-      }
-
-      return this._score;
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      var score = this.getScore(this.props.password, this.props.inputs);
-
-      return _react2.default.createElement(
-        'div',
-        { className: 'help-block password-strength' },
-        _react2.default.createElement(
-          'div',
-          { className: 'progress' },
-          _react2.default.createElement(
-            'div',
-            { className: "progress-bar " + STYLES[score],
-              style: { width: 20 + 20 * score + '%' },
-              role: 'progress-bar',
-              'aria-valuenow': score,
-              'aria-valuemin': '0',
-              'aria-valuemax': '4' },
-            _react2.default.createElement(
-              'span',
-              { className: 'sr-only' },
-              LABELS[score]
-            )
-          )
-        ),
-        _react2.default.createElement(
-          'p',
-          { className: 'text-small' },
-          LABELS[score]
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../services/zxcvbn":59,"react":"react"}],35:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _loader = require('./loader');
-
-var _loader2 = _interopRequireDefault(_loader);
-
-var _register = require('./register.js');
-
-var _register2 = _interopRequireDefault(_register);
-
-var _captcha = require('../services/captcha');
-
-var _captcha2 = _interopRequireDefault(_captcha);
-
-var _modal = require('../services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-var _snackbar = require('../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _zxcvbn = require('../services/zxcvbn');
-
-var _zxcvbn2 = _interopRequireDefault(_zxcvbn);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-
-// jshint ignore:line
-
-var _class = function (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.showRegisterModal = function () {
-      if (misago.get('SETTINGS').account_activation === 'closed') {
-        _snackbar2.default.info(gettext("New registrations are currently disabled."));
-      } else if (_this.state.isLoaded) {
-        _modal2.default.show(_register2.default);
-      } else {
-        _this.setState({
-          'isLoading': true
-        });
-
-        Promise.all([_captcha2.default.load(), _zxcvbn2.default.load()]).then(function () {
-          if (!_this.state.isLoaded) {
-            _this.setState({
-              'isLoading': false,
-              'isLoaded': false
-            });
-          }
-
-          _modal2.default.show(_register2.default);
-        });
-      }
-    };
-
-    _this.state = {
-      'isLoading': false,
-      'isLoaded': false
-    };
-    return _this;
-  }
-
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'getClassName',
-
-    /* jshint ignore:end */
-
-    value: function getClassName() {
-      return this.props.className + (this.state.isLoading ? ' btn-loading' : '');
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'button',
-        { type: 'button', onClick: this.showRegisterModal,
-          className: 'btn ' + this.getClassName(),
-          disabled: this.state.isLoaded },
-        gettext("Register"),
-        this.state.isLoading ? _react2.default.createElement(_loader2.default, null) : null
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../services/captcha":52,"../services/modal":56,"../services/snackbar":57,"../services/zxcvbn":59,"./loader":32,"./register.js":36,"react":"react"}],36:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.RegisterComplete = exports.RegisterForm = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _button = require('./button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _form = require('./form');
-
-var _form2 = _interopRequireDefault(_form);
-
-var _formGroup = require('./form-group');
-
-var _formGroup2 = _interopRequireDefault(_formGroup);
-
-var _passwordStrength = require('./password-strength');
-
-var _passwordStrength2 = _interopRequireDefault(_passwordStrength);
-
-var _index = require('../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _ajax = require('../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _auth = require('../services/auth');
-
-var _auth2 = _interopRequireDefault(_auth);
-
-var _captcha = require('../services/captcha');
-
-var _captcha2 = _interopRequireDefault(_captcha);
-
-var _modal = require('../services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-var _snackbar = require('../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _bannedPage = require('../utils/banned-page');
-
-var _bannedPage2 = _interopRequireDefault(_bannedPage);
-
-var _validators = require('../utils/validators');
-
-var validators = _interopRequireWildcard(_validators);
-
-function _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; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-
-var RegisterForm = exports.RegisterForm = function (_Form) {
-  _inherits(RegisterForm, _Form);
-
-  function RegisterForm(props) {
-    _classCallCheck(this, RegisterForm);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RegisterForm).call(this, props));
-
-    _this.state = {
-      'isLoading': false,
-
-      'username': '',
-      'email': '',
-      'password': '',
-      'captcha': '',
-
-      'validators': {
-        'username': [validators.usernameContent(), validators.usernameMinLength(_index2.default.get('SETTINGS')), validators.usernameMaxLength(_index2.default.get('SETTINGS'))],
-        'email': [validators.email()],
-        'password': [validators.passwordMinLength(_index2.default.get('SETTINGS'))],
-        'captcha': _captcha2.default.validator()
-      },
-
-      'errors': {}
-    };
-    return _this;
-  }
-
-  _createClass(RegisterForm, [{
-    key: 'clean',
-    value: function clean() {
-      if (this.isValid()) {
-        return true;
-      } else {
-        _snackbar2.default.error(gettext("Form contains errors."));
-        this.setState({
-          'errors': this.validate()
-        });
-        return false;
-      }
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(_index2.default.get('USERS_API'), {
-        'username': this.state.username,
-        'email': this.state.email,
-        'password': this.state.password,
-        'captcha': this.state.captcha
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(apiResponse) {
-      this.props.callback(apiResponse);
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      if (rejection.status === 400) {
-        this.setState({
-          'errors': Object.assign({}, this.state.errors, rejection)
-        });
-        _snackbar2.default.error(gettext("Form contains errors."));
-      } else if (rejection.status === 403 && rejection.ban) {
-        (0, _bannedPage2.default)(rejection.ban);
-        _modal2.default.hide();
-      } else {
-        _snackbar2.default.apiError(rejection);
-      }
-    }
-  }, {
-    key: 'getLegalFootNote',
-    value: function getLegalFootNote() {
-      if (_index2.default.get('TERMS_OF_SERVICE_URL')) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'a',
-          { href: _index2.default.get('TERMS_OF_SERVICE_URL'),
-            target: '_blank' },
-          gettext("By registering you agree to site's terms and conditions.")
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'modal-dialog modal-register', role: 'document' },
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-content' },
-          _react2.default.createElement(
-            'div',
-            { className: 'modal-header' },
-            _react2.default.createElement(
-              'button',
-              { type: 'button', className: 'close', 'data-dismiss': 'modal',
-                'aria-label': gettext("Close") },
-              _react2.default.createElement(
-                'span',
-                { 'aria-hidden': 'true' },
-                '×'
-              )
-            ),
-            _react2.default.createElement(
-              'h4',
-              { className: 'modal-title' },
-              gettext("Register")
-            )
-          ),
-          _react2.default.createElement(
-            'form',
-            { onSubmit: this.handleSubmit, className: 'form-horizontal' },
-            _react2.default.createElement('input', { type: 'type', style: { display: 'none' } }),
-            _react2.default.createElement('input', { type: 'password', style: { display: 'none' } }),
-            _react2.default.createElement(
-              'div',
-              { className: 'modal-body' },
-              _react2.default.createElement(
-                _formGroup2.default,
-                { label: gettext("Username"), 'for': 'id_username',
-                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',
-                  validation: this.state.errors.username },
-                _react2.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 })
-              ),
-              _react2.default.createElement(
-                _formGroup2.default,
-                { label: gettext("E-mail"), 'for': 'id_email',
-                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',
-                  validation: this.state.errors.email },
-                _react2.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 })
-              ),
-              _react2.default.createElement(
-                _formGroup2.default,
-                { label: gettext("Password"), 'for': 'id_password',
-                  labelClass: 'col-sm-4', controlClass: 'col-sm-8',
-                  validation: this.state.errors.password,
-                  extra: _react2.default.createElement(_passwordStrength2.default, { password: this.state.password,
-                    inputs: [this.state.username, this.state.email] }) },
-                _react2.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 })
-              ),
-              _captcha2.default.component({
-                form: this,
-                labelClass: "col-sm-4",
-                controlClass: "col-sm-8"
-              })
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'modal-footer' },
-              this.getLegalFootNote(),
-              _react2.default.createElement(
-                _button2.default,
-                { className: 'btn-primary', loading: this.state.isLoading },
-                gettext("Register account")
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return RegisterForm;
-}(_form2.default);
-
-var RegisterComplete = exports.RegisterComplete = function (_React$Component) {
-  _inherits(RegisterComplete, _React$Component);
-
-  function RegisterComplete() {
-    _classCallCheck(this, RegisterComplete);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(RegisterComplete).apply(this, arguments));
-  }
-
-  _createClass(RegisterComplete, [{
-    key: 'getLead',
-    value: function getLead() {
-      if (this.props.activation === 'user') {
-        return gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in.");
-      } else if (this.props.activation === 'admin') {
-        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.");
-      }
-    }
-  }, {
-    key: 'getSubscript',
-    value: function getSubscript() {
-      if (this.props.activation === 'user') {
-        return gettext("We have sent an e-mail to %(email)s with link that you have to click to activate your account.");
-      } else if (this.props.activation === 'admin') {
-        return gettext("We will send an e-mail to %(email)s when this takes place.");
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'modal-dialog modal-message modal-register',
-          role: 'document' },
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-content' },
-          _react2.default.createElement(
-            'div',
-            { className: 'modal-header' },
-            _react2.default.createElement(
-              'button',
-              { type: 'button', className: 'close', 'data-dismiss': 'modal',
-                'aria-label': gettext("Close") },
-              _react2.default.createElement(
-                'span',
-                { 'aria-hidden': 'true' },
-                '×'
-              )
-            ),
-            _react2.default.createElement(
-              'h4',
-              { className: 'modal-title' },
-              gettext("Registration complete")
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'modal-body' },
-            _react2.default.createElement(
-              'div',
-              { className: 'message-icon' },
-              _react2.default.createElement(
-                'span',
-                { className: 'material-icon' },
-                'info_outline'
-              )
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'message-body' },
-              _react2.default.createElement(
-                'p',
-                { className: 'lead' },
-                interpolate(this.getLead(), { 'username': this.props.username }, true)
-              ),
-              _react2.default.createElement(
-                'p',
-                null,
-                interpolate(this.getSubscript(), { 'email': this.props.email }, true)
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return RegisterComplete;
-}(_react2.default.Component);
-
-var _class = function (_React$Component2) {
-  _inherits(_class, _React$Component2);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this3.completeRegistration = function (apiResponse) {
-      if (apiResponse.activation === 'active') {
-        _modal2.default.hide();
-        _auth2.default.signIn(apiResponse);
-      } else {
-        _this3.setState({
-          'complete': apiResponse
-        });
-      }
-    };
-
-    _this3.state = {
-      'complete': false
-    };
-    return _this3;
-  }
-
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'render',
-
-    /* jshint ignore:end */
-
-    value: function render() {
-      /* jshint ignore:start */
-      if (this.state.complete) {
-        return _react2.default.createElement(RegisterComplete, { activation: this.state.complete.activation,
-          username: this.state.complete.username,
-          email: this.state.complete.email });
-      } else {
-        return _react2.default.createElement(RegisterForm, { callback: this.completeRegistration });
-      }
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../index":45,"../services/ajax":50,"../services/auth":51,"../services/captcha":52,"../services/modal":56,"../services/snackbar":57,"../utils/banned-page":60,"../utils/validators":63,"./button":27,"./form":31,"./form-group":30,"./password-strength":34,"react":"react"}],37:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.LinkSent = exports.RequestLinkForm = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _index = require('../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _button = require('./button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _form = require('./form');
-
-var _form2 = _interopRequireDefault(_form);
-
-var _ajax = require('../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _validators = require('../utils/validators');
-
-var validators = _interopRequireWildcard(_validators);
-
-var _bannedPage = require('../utils/banned-page');
-
-var _bannedPage2 = _interopRequireDefault(_bannedPage);
-
-function _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; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-
-var RequestLinkForm = exports.RequestLinkForm = function (_Form) {
-  _inherits(RequestLinkForm, _Form);
-
-  function RequestLinkForm(props) {
-    _classCallCheck(this, RequestLinkForm);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RequestLinkForm).call(this, props));
-
-    _this.state = {
-      'isLoading': false,
-
-      'email': '',
-
-      'validators': {
-        'email': [validators.email()]
-      }
-    };
-    return _this;
-  }
-
-  _createClass(RequestLinkForm, [{
-    key: 'clean',
-    value: function clean() {
-      if (this.isValid()) {
-        return true;
-      } else {
-        _snackbar2.default.error(gettext("Enter a valid email address."));
-        return false;
-      }
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(_index2.default.get('SEND_ACTIVATION_API'), {
-        'email': this.state.email
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(apiResponse) {
-      this.props.callback(apiResponse);
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      if (['already_active', 'inactive_admin'].indexOf(rejection.code) > -1) {
-        _snackbar2.default.info(rejection.detail);
-      } else if (rejection.status === 403 && rejection.ban) {
-        (0, _bannedPage2.default)(rejection.ban);
-      } else {
-        _snackbar2.default.apiError(rejection);
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'well well-form well-form-request-activation-link' },
-        _react2.default.createElement(
-          'form',
-          { onSubmit: this.handleSubmit },
-          _react2.default.createElement(
-            'div',
-            { className: 'form-group' },
-            _react2.default.createElement(
-              'div',
-              { className: 'control-input' },
-              _react2.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 })
-            )
-          ),
-          _react2.default.createElement(
-            _button2.default,
-            { className: 'btn-primary btn-block',
-              loading: this.state.isLoading },
-            gettext("Send link")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return RequestLinkForm;
-}(_form2.default);
-
-var LinkSent = exports.LinkSent = function (_React$Component) {
-  _inherits(LinkSent, _React$Component);
-
-  function LinkSent() {
-    _classCallCheck(this, LinkSent);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(LinkSent).apply(this, arguments));
-  }
-
-  _createClass(LinkSent, [{
-    key: 'getMessage',
-    value: function getMessage() {
-      return interpolate(gettext("Activation link was sent to %(email)s"), {
-        email: this.props.user.email
-      }, true);
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'well well-form well-form-request-activation-link well-done' },
-        _react2.default.createElement(
-          'div',
-          { className: 'done-message' },
-          _react2.default.createElement(
-            'div',
-            { className: 'message-icon' },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'check'
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'message-body' },
-            _react2.default.createElement(
-              'p',
-              null,
-              this.getMessage()
-            )
-          ),
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn btn-primary btn-block',
-              onClick: this.props.callback },
-            gettext("Request another link")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return LinkSent;
-}(_react2.default.Component);
-
-var _class = function (_React$Component2) {
-  _inherits(_class, _React$Component2);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this3.complete = function (apiResponse) {
-      _this3.setState({
-        complete: apiResponse
-      });
-    };
-
-    _this3.reset = function () {
-      _this3.setState({
-        complete: false
-      });
-    };
-
-    _this3.state = {
-      complete: false
-    };
-    return _this3;
-  }
-
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'render',
-
-    /* jshint ignore:end */
-
-    value: function render() {
-      /* jshint ignore:start */
-      if (this.state.complete) {
-        return _react2.default.createElement(LinkSent, { user: this.state.complete, callback: this.reset });
-      } else {
-        return _react2.default.createElement(RequestLinkForm, { callback: this.complete });
-      };
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../index":45,"../services/ajax":50,"../services/snackbar":57,"../utils/banned-page":60,"../utils/validators":63,"./button":27,"./form":31,"react":"react"}],38:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.AccountInactivePage = exports.LinkSent = exports.RequestResetForm = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactDom = require('react-dom');
-
-var _reactDom2 = _interopRequireDefault(_reactDom);
-
-var _index = require('../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _button = require('./button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _form = require('./form');
-
-var _form2 = _interopRequireDefault(_form);
-
-var _ajax = require('../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _validators = require('../utils/validators');
-
-var validators = _interopRequireWildcard(_validators);
-
-var _bannedPage = require('../utils/banned-page');
-
-var _bannedPage2 = _interopRequireDefault(_bannedPage);
-
-function _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; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-
-var RequestResetForm = exports.RequestResetForm = function (_Form) {
-  _inherits(RequestResetForm, _Form);
-
-  function RequestResetForm(props) {
-    _classCallCheck(this, RequestResetForm);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(RequestResetForm).call(this, props));
-
-    _this.state = {
-      'isLoading': false,
-
-      'email': '',
-
-      'validators': {
-        'email': [validators.email()]
-      }
-    };
-    return _this;
-  }
-
-  _createClass(RequestResetForm, [{
-    key: 'clean',
-    value: function clean() {
-      if (this.isValid()) {
-        return true;
-      } else {
-        _snackbar2.default.error(gettext("Enter a valid email address."));
-        return false;
-      }
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(_index2.default.get('SEND_PASSWORD_RESET_API'), {
-        'email': this.state.email
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(apiResponse) {
-      this.props.callback(apiResponse);
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      if (['inactive_user', 'inactive_admin'].indexOf(rejection.code) > -1) {
-        this.props.showInactivePage(rejection);
-      } else if (rejection.status === 403 && rejection.ban) {
-        (0, _bannedPage2.default)(rejection.ban);
-      } else {
-        _snackbar2.default.apiError(rejection);
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'well well-form well-form-request-password-reset' },
-        _react2.default.createElement(
-          'form',
-          { onSubmit: this.handleSubmit },
-          _react2.default.createElement(
-            'div',
-            { className: 'form-group' },
-            _react2.default.createElement(
-              'div',
-              { className: 'control-input' },
-              _react2.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 })
-            )
-          ),
-          _react2.default.createElement(
-            _button2.default,
-            { className: 'btn-primary btn-block',
-              loading: this.state.isLoading },
-            gettext("Send link")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return RequestResetForm;
-}(_form2.default);
-
-var LinkSent = exports.LinkSent = function (_React$Component) {
-  _inherits(LinkSent, _React$Component);
-
-  function LinkSent() {
-    _classCallCheck(this, LinkSent);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(LinkSent).apply(this, arguments));
-  }
-
-  _createClass(LinkSent, [{
-    key: 'getMessage',
-    value: function getMessage() {
-      return interpolate(gettext("Reset password link was sent to %(email)s"), {
-        email: this.props.user.email
-      }, true);
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'well well-form well-form-request-password-reset well-done' },
-        _react2.default.createElement(
-          'div',
-          { className: 'done-message' },
-          _react2.default.createElement(
-            'div',
-            { className: 'message-icon' },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'check'
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'message-body' },
-            _react2.default.createElement(
-              'p',
-              null,
-              this.getMessage()
-            )
-          ),
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn btn-primary btn-block',
-              onClick: this.props.callback },
-            gettext("Request another link")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return LinkSent;
-}(_react2.default.Component);
-
-var AccountInactivePage = exports.AccountInactivePage = function (_React$Component2) {
-  _inherits(AccountInactivePage, _React$Component2);
-
-  function AccountInactivePage() {
-    _classCallCheck(this, AccountInactivePage);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(AccountInactivePage).apply(this, arguments));
-  }
-
-  _createClass(AccountInactivePage, [{
-    key: 'getActivateButton',
-    value: function getActivateButton() {
-      if (this.props.activation === 'inactive_user') {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'p',
-          null,
-          _react2.default.createElement(
-            'a',
-            { href: _index2.default.get('REQUEST_ACTIVATION_URL') },
-            gettext("Activate your account.")
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'page page-message page-message-info page-forgotten-password-inactive' },
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'div',
-            { className: 'message-panel' },
-            _react2.default.createElement(
-              'div',
-              { className: 'message-icon' },
-              _react2.default.createElement(
-                'span',
-                { className: 'material-icon' },
-                'info_outline'
-              )
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'message-body' },
-              _react2.default.createElement(
-                'p',
-                { className: 'lead' },
-                gettext("Your account is inactive.")
-              ),
-              _react2.default.createElement(
-                'p',
-                null,
-                this.props.message
-              ),
-              this.getActivateButton()
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return AccountInactivePage;
-}(_react2.default.Component);
-
-var _class = function (_React$Component3) {
-  _inherits(_class, _React$Component3);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this4 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this4.complete = function (apiResponse) {
-      _this4.setState({
-        complete: apiResponse
-      });
-    };
-
-    _this4.reset = function () {
-      _this4.setState({
-        complete: false
-      });
-    };
-
-    _this4.state = {
-      complete: false
-    };
-    return _this4;
-  }
-
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'showInactivePage',
-    value: function showInactivePage(apiResponse) {
-      _reactDom2.default.render(_react2.default.createElement(AccountInactivePage, { activation: apiResponse.code,
-        message: apiResponse.detail }), document.getElementById('page-mount'));
-    }
-    /* jshint ignore:end */
-
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      if (this.state.complete) {
-        return _react2.default.createElement(LinkSent, { user: this.state.complete, callback: this.reset });
-      } else {
-        return _react2.default.createElement(RequestResetForm, { callback: this.complete,
-          showInactivePage: this.showInactivePage });
-      };
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../index":45,"../services/ajax":50,"../services/snackbar":57,"../utils/banned-page":60,"../utils/validators":63,"./button":27,"./form":31,"react":"react","react-dom":"react-dom"}],39:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PasswordChangedPage = exports.ResetPasswordForm = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactDom = require('react-dom');
-
-var _reactDom2 = _interopRequireDefault(_reactDom);
-
-var _index = require('../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _button = require('./button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _form = require('./form');
-
-var _form2 = _interopRequireDefault(_form);
-
-var _signIn = require('./sign-in.js');
-
-var _signIn2 = _interopRequireDefault(_signIn);
-
-var _ajax = require('../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _auth = require('../services/auth');
-
-var _auth2 = _interopRequireDefault(_auth);
-
-var _modal = require('../services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-var _snackbar = require('../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _validators = require('../utils/validators');
-
-var validators = _interopRequireWildcard(_validators);
-
-var _bannedPage = require('../utils/banned-page');
-
-var _bannedPage2 = _interopRequireDefault(_bannedPage);
-
-function _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; } }
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-
-var ResetPasswordForm = exports.ResetPasswordForm = function (_Form) {
-  _inherits(ResetPasswordForm, _Form);
-
-  function ResetPasswordForm(props) {
-    _classCallCheck(this, ResetPasswordForm);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ResetPasswordForm).call(this, props));
-
-    _this.state = {
-      'isLoading': false,
-
-      'password': '',
-
-      'validators': {
-        'password': [validators.passwordMinLength(_index2.default.get('SETTINGS'))]
-      }
-    };
-    return _this;
-  }
-
-  _createClass(ResetPasswordForm, [{
-    key: 'clean',
-    value: function clean() {
-      if (this.isValid()) {
-        return true;
-      } else {
-        if (this.state.password.trim().length) {
-          _snackbar2.default.error(this.state.errors.password[0]);
-        } else {
-          _snackbar2.default.error(gettext("Enter new password."));
-        }
-        return false;
-      }
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(_index2.default.get('CHANGE_PASSWORD_API'), {
-        'password': this.state.password
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(apiResponse) {
-      this.props.callback(apiResponse);
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      if (rejection.status === 403 && rejection.ban) {
-        (0, _bannedPage2.default)(rejection.ban);
-      } else {
-        _snackbar2.default.apiError(rejection);
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'well well-form well-form-reset-password' },
-        _react2.default.createElement(
-          'form',
-          { onSubmit: this.handleSubmit },
-          _react2.default.createElement(
-            'div',
-            { className: 'form-group' },
-            _react2.default.createElement(
-              'div',
-              { className: 'control-input' },
-              _react2.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 })
-            )
-          ),
-          _react2.default.createElement(
-            _button2.default,
-            { className: 'btn-primary btn-block',
-              loading: this.state.isLoading },
-            gettext("Change password")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return ResetPasswordForm;
-}(_form2.default);
-
-var PasswordChangedPage = exports.PasswordChangedPage = function (_React$Component) {
-  _inherits(PasswordChangedPage, _React$Component);
-
-  function PasswordChangedPage() {
-    _classCallCheck(this, PasswordChangedPage);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(PasswordChangedPage).apply(this, arguments));
-  }
-
-  _createClass(PasswordChangedPage, [{
-    key: 'getMessage',
-    value: function getMessage() {
-      return interpolate(gettext("%(username)s, your password has been changed successfully."), {
-        username: this.props.user.username
-      }, true);
-    }
-  }, {
-    key: 'showSignIn',
-    value: function showSignIn() {
-      _modal2.default.show(_signIn2.default);
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'page page-message page-message-success page-forgotten-password-changed' },
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'div',
-            { className: 'message-panel' },
-            _react2.default.createElement(
-              'div',
-              { className: 'message-icon' },
-              _react2.default.createElement(
-                'span',
-                { className: 'material-icon' },
-                'check'
-              )
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'message-body' },
-              _react2.default.createElement(
-                'p',
-                { className: 'lead' },
-                this.getMessage()
-              ),
-              _react2.default.createElement(
-                'p',
-                null,
-                gettext("You will have to sign in using new password before continuing.")
-              ),
-              _react2.default.createElement(
-                'p',
-                null,
-                _react2.default.createElement(
-                  'button',
-                  { type: 'button', className: 'btn btn-primary', onClick: this.showSignIn },
-                  gettext("Sign in")
-                )
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return PasswordChangedPage;
-}(_react2.default.Component);
-
-var _class = function (_React$Component2) {
-  _inherits(_class, _React$Component2);
-
-  function _class() {
-    var _Object$getPrototypeO;
-
-    var _temp, _this3, _ret;
-
-    _classCallCheck(this, _class);
-
-    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
-
-    return _ret = (_temp = (_this3 = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this3), _this3.complete = function (apiResponse) {
-      _auth2.default.softSignOut();
-
-      // nuke "redirect_to" field so we don't end
-      // coming back to error page after sign in
-      $('#hidden-login-form input[name="redirect_to"]').remove();
-
-      _reactDom2.default.render(_react2.default.createElement(PasswordChangedPage, { user: apiResponse }), document.getElementById('page-mount'));
-    }, _temp), _possibleConstructorReturn(_this3, _ret);
-  }
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'render',
-
-    /* jshint ignore:end */
-
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(ResetPasswordForm, { callback: this.complete });
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../index":45,"../services/ajax":50,"../services/auth":51,"../services/modal":56,"../services/snackbar":57,"../utils/banned-page":60,"../utils/validators":63,"./button":27,"./form":31,"./sign-in.js":40,"react":"react","react-dom":"react-dom"}],40:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _index = require('../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _button = require('./button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _form = require('./form');
-
-var _form2 = _interopRequireDefault(_form);
-
-var _ajax = require('../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _modal = require('../services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-var _snackbar = require('../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _bannedPage = require('../utils/banned-page');
-
-var _bannedPage2 = _interopRequireDefault(_bannedPage);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-
-var _class = function (_Form) {
-  _inherits(_class, _Form);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.state = {
-      'isLoading': false,
-      'showActivation': false,
-
-      'username': '',
-      'password': '',
-
-      'validators': {
-        'username': [],
-        'password': []
-      }
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'clean',
-    value: function clean() {
-      if (!this.isValid()) {
-        _snackbar2.default.error(gettext("Fill out both fields."));
-        return false;
-      } else {
-        return true;
-      }
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(_index2.default.get('AUTH_API'), {
-        'username': this.state.username,
-        'password': this.state.password
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess() {
-      var form = $('#hidden-login-form');
-
-      form.append('<input type="text" name="username" />');
-      form.append('<input type="password" name="password" />');
-
-      // fill out form with user credentials and submit it, this will tell
-      // Misago to redirect user back to right page, and will trigger browser's
-      // key ring feature
-      form.find('input[type="hidden"]').val(_ajax2.default.getCsrfToken());
-      form.find('input[name="redirect_to"]').val(window.location.pathname);
-      form.find('input[name="username"]').val(this.state.username);
-      form.find('input[name="password"]').val(this.state.password);
-      form.submit();
-
-      // keep form loading
-      this.setState({
-        'isLoading': true
-      });
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      if (rejection.status === 400) {
-        if (rejection.code === 'inactive_admin') {
-          _snackbar2.default.info(rejection.detail);
-        } else if (rejection.code === 'inactive_user') {
-          _snackbar2.default.info(rejection.detail);
-          this.setState({
-            'showActivation': true
-          });
-        } else if (rejection.code === 'banned') {
-          (0, _bannedPage2.default)(rejection.detail);
-          _modal2.default.hide();
-        } else {
-          _snackbar2.default.error(rejection.detail);
-        }
-      } else if (rejection.status === 403 && rejection.ban) {
-        (0, _bannedPage2.default)(rejection.ban);
-        _modal2.default.hide();
-      } else {
-        _snackbar2.default.apiError(rejection);
-      }
-    }
-  }, {
-    key: 'getActivationButton',
-    value: function getActivationButton() {
-      if (this.state.showActivation) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'a',
-          { href: _index2.default.get('REQUEST_ACTIVATION_URL'),
-            className: 'btn btn-success btn-block' },
-          gettext("Activate account")
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'modal-dialog modal-sm modal-sign-in',
-          role: 'document' },
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-content' },
-          _react2.default.createElement(
-            'div',
-            { className: 'modal-header' },
-            _react2.default.createElement(
-              'button',
-              { type: 'button', className: 'close', 'data-dismiss': 'modal',
-                'aria-label': gettext("Close") },
-              _react2.default.createElement(
-                'span',
-                { 'aria-hidden': 'true' },
-                '×'
-              )
-            ),
-            _react2.default.createElement(
-              'h4',
-              { className: 'modal-title' },
-              gettext("Sign in")
-            )
-          ),
-          _react2.default.createElement(
-            'form',
-            { onSubmit: this.handleSubmit },
-            _react2.default.createElement(
-              'div',
-              { className: 'modal-body' },
-              _react2.default.createElement(
-                'div',
-                { className: 'form-group' },
-                _react2.default.createElement(
-                  'div',
-                  { className: 'control-input' },
-                  _react2.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 })
-                )
-              ),
-              _react2.default.createElement(
-                'div',
-                { className: 'form-group' },
-                _react2.default.createElement(
-                  'div',
-                  { className: 'control-input' },
-                  _react2.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 })
-                )
-              )
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'modal-footer' },
-              this.getActivationButton(),
-              _react2.default.createElement(
-                _button2.default,
-                { className: 'btn-primary btn-block',
-                  loading: this.state.isLoading },
-                gettext("Sign in")
-              ),
-              _react2.default.createElement(
-                'a',
-                { href: _index2.default.get('FORGOTTEN_PASSWORD_URL'),
-                  className: 'btn btn-default btn-block' },
-                gettext("Forgot password?")
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_form2.default);
-
-exports.default = _class;
-
-},{"../index":45,"../services/ajax":50,"../services/modal":56,"../services/snackbar":57,"../utils/banned-page":60,"./button":27,"./form":31,"react":"react"}],41:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.Snackbar = undefined;
-exports.select = select;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-/* jshint ignore:start */
-var TYPES_CLASSES = {
-  'info': 'alert-info',
-  'success': 'alert-success',
-  'warning': 'alert-warning',
-  'error': 'alert-danger'
-};
-/* jshint ignore:end */
-
-var Snackbar = exports.Snackbar = function (_React$Component) {
-  _inherits(Snackbar, _React$Component);
-
-  function Snackbar() {
-    _classCallCheck(this, Snackbar);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(Snackbar).apply(this, arguments));
-  }
-
-  _createClass(Snackbar, [{
-    key: 'getSnackbarClass',
-    value: function getSnackbarClass() {
-      var snackbarClass = 'alerts-snackbar';
-      if (this.props.isVisible) {
-        snackbarClass += ' in';
-      } else {
-        snackbarClass += ' out';
-      }
-      return snackbarClass;
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: this.getSnackbarClass() },
-        _react2.default.createElement(
-          'p',
-          { className: 'alert ' + TYPES_CLASSES[this.props.type] },
-          this.props.message
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return Snackbar;
-}(_react2.default.Component);
-
-function select(state) {
-  return state.snackbar;
-}
-
-},{"react":"react"}],42:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.CompactGuestNav = exports.GuestNav = exports.GuestMenu = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _avatar = require('../avatar');
-
-var _avatar2 = _interopRequireDefault(_avatar);
-
-var _registerButton = require('../register-button');
-
-var _registerButton2 = _interopRequireDefault(_registerButton);
-
-var _signIn = require('../sign-in.js');
-
-var _signIn2 = _interopRequireDefault(_signIn);
-
-var _mobileNavbarDropdown = require('../../services/mobile-navbar-dropdown');
-
-var _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);
-
-var _modal = require('../../services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-
-var GuestMenu = exports.GuestMenu = function (_React$Component) {
-  _inherits(GuestMenu, _React$Component);
-
-  function GuestMenu() {
-    _classCallCheck(this, GuestMenu);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(GuestMenu).apply(this, arguments));
-  }
-
-  _createClass(GuestMenu, [{
-    key: 'showSignInModal',
-    value: function showSignInModal() {
-      _modal2.default.show(_signIn2.default);
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'ul',
-        { className: 'dropdown-menu user-dropdown dropdown-menu-right',
-          role: 'menu' },
-        _react2.default.createElement(
-          'li',
-          { className: 'guest-preview' },
-          _react2.default.createElement(
-            'h4',
-            null,
-            gettext("You are browsing as guest.")
-          ),
-          _react2.default.createElement(
-            'p',
-            null,
-            gettext('Sign in or register to start and participate in discussions.')
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'row' },
-            _react2.default.createElement(
-              'div',
-              { className: 'col-xs-6' },
-              _react2.default.createElement(
-                'button',
-                { type: 'button', className: 'btn btn-default btn-block',
-                  onClick: this.showSignInModal },
-                gettext("Sign in")
-              )
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'col-xs-6' },
-              _react2.default.createElement(
-                _registerButton2.default,
-                { className: 'btn-primary btn-block' },
-                gettext("Register")
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return GuestMenu;
-}(_react2.default.Component);
-
-var GuestNav = exports.GuestNav = function (_GuestMenu) {
-  _inherits(GuestNav, _GuestMenu);
-
-  function GuestNav() {
-    _classCallCheck(this, GuestNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(GuestNav).apply(this, arguments));
-  }
-
-  _createClass(GuestNav, [{
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'nav nav-guest' },
-        _react2.default.createElement(
-          'button',
-          { type: 'button', className: 'btn navbar-btn btn-default',
-            onClick: this.showSignInModal },
-          gettext("Sign in")
-        ),
-        _react2.default.createElement(
-          _registerButton2.default,
-          { className: 'navbar-btn btn-primary' },
-          gettext("Register")
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return GuestNav;
-}(GuestMenu);
-
-var CompactGuestNav = exports.CompactGuestNav = function (_React$Component2) {
-  _inherits(CompactGuestNav, _React$Component2);
-
-  function CompactGuestNav() {
-    _classCallCheck(this, CompactGuestNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactGuestNav).apply(this, arguments));
-  }
-
-  _createClass(CompactGuestNav, [{
-    key: 'showGuestMenu',
-    value: function showGuestMenu() {
-      _mobileNavbarDropdown2.default.show(GuestMenu);
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'button',
-        { type: 'button', onClick: this.showGuestMenu },
-        _react2.default.createElement(_avatar2.default, { size: '64' })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return CompactGuestNav;
-}(_react2.default.Component);
-
-},{"../../services/mobile-navbar-dropdown":55,"../../services/modal":56,"../avatar":25,"../register-button":35,"../sign-in.js":40,"react":"react"}],43:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.CompactUserMenu = exports.UserMenu = undefined;
-exports.select = select;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _guestNav = require('./guest-nav');
-
-var _userNav = require('./user-nav');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-
-// jshint ignore:line
-
-var UserMenu = exports.UserMenu = function (_React$Component) {
-  _inherits(UserMenu, _React$Component);
-
-  function UserMenu() {
-    _classCallCheck(this, UserMenu);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserMenu).apply(this, arguments));
-  }
-
-  _createClass(UserMenu, [{
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      if (this.props.isAuthenticated) {
-        return _react2.default.createElement(_userNav.UserNav, { user: this.props.user });
-      } else {
-        return _react2.default.createElement(_guestNav.GuestNav, null);
-      }
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return UserMenu;
-}(_react2.default.Component);
-
-var CompactUserMenu = exports.CompactUserMenu = function (_React$Component2) {
-  _inherits(CompactUserMenu, _React$Component2);
-
-  function CompactUserMenu() {
-    _classCallCheck(this, CompactUserMenu);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactUserMenu).apply(this, arguments));
-  }
-
-  _createClass(CompactUserMenu, [{
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      if (this.props.isAuthenticated) {
-        return _react2.default.createElement(_userNav.CompactUserNav, { user: this.props.user });
-      } else {
-        return _react2.default.createElement(_guestNav.CompactGuestNav, null);
-      }
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return CompactUserMenu;
-}(_react2.default.Component);
-
-function select(state) {
-  return state.auth;
-}
-
-},{"./guest-nav":42,"./user-nav":44,"react":"react"}],44:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.CompactUserNav = exports.UserNav = exports.UserMenu = undefined;
-exports.selectUserMenu = selectUserMenu;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactRedux = require('react-redux');
-
-var _avatar = require('../avatar');
-
-var _avatar2 = _interopRequireDefault(_avatar);
-
-var _root = require('../change-avatar/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _mobileNavbarDropdown = require('../../services/mobile-navbar-dropdown');
-
-var _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);
-
-var _modal = require('../../services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line
-// jshint ignore:line
-// jshint ignore:line
-
-var UserMenu = exports.UserMenu = function (_React$Component) {
-  _inherits(UserMenu, _React$Component);
-
-  function UserMenu() {
-    _classCallCheck(this, UserMenu);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserMenu).apply(this, arguments));
-  }
-
-  _createClass(UserMenu, [{
-    key: 'logout',
-    value: function logout() {
-      var decision = confirm(gettext("Are you sure you want to sign out?"));
-      if (decision) {
-        $('#hidden-logout-form').submit();
-      }
-    }
-  }, {
-    key: 'changeAvatar',
-    value: function changeAvatar() {
-      _modal2.default.show((0, _reactRedux.connect)(_root.select)(_root2.default));
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'ul',
-        { className: 'dropdown-menu user-dropdown dropdown-menu-right',
-          role: 'menu' },
-        _react2.default.createElement(
-          'li',
-          { className: 'dropdown-header' },
-          _react2.default.createElement(
-            'strong',
-            null,
-            this.props.user.username
-          )
-        ),
-        _react2.default.createElement('li', { className: 'divider' }),
-        _react2.default.createElement(
-          'li',
-          null,
-          _react2.default.createElement(
-            'a',
-            { href: this.props.user.absolute_url },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'account_circle'
-            ),
-            gettext("See your profile")
-          )
-        ),
-        _react2.default.createElement(
-          'li',
-          null,
-          _react2.default.createElement(
-            'a',
-            { href: _index2.default.get('USERCP_URL') },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'done_all'
-            ),
-            gettext("Change options")
-          )
-        ),
-        _react2.default.createElement(
-          'li',
-          null,
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn-link', onClick: this.changeAvatar },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'face'
-            ),
-            gettext("Change avatar")
-          )
-        ),
-        _react2.default.createElement('li', { className: 'divider' }),
-        _react2.default.createElement(
-          'li',
-          { className: 'dropdown-footer' },
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn btn-default btn-block',
-              onClick: this.logout },
-            gettext("Log out")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return UserMenu;
-}(_react2.default.Component);
-
-var UserNav = exports.UserNav = function (_React$Component2) {
-  _inherits(UserNav, _React$Component2);
-
-  function UserNav() {
-    _classCallCheck(this, UserNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserNav).apply(this, arguments));
-  }
-
-  _createClass(UserNav, [{
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'ul',
-        { className: 'ul nav navbar-nav nav-user' },
-        _react2.default.createElement(
-          'li',
-          { className: 'dropdown' },
-          _react2.default.createElement(
-            'a',
-            { href: this.props.user.absolute_url, className: 'dropdown-toggle',
-              'data-toggle': 'dropdown', 'aria-haspopup': 'true', 'aria-expanded': 'false',
-              role: 'button' },
-            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '64' })
-          ),
-          _react2.default.createElement(UserMenu, { user: this.props.user })
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return UserNav;
-}(_react2.default.Component);
-
-function selectUserMenu(state) {
-  console.log(state);
-  return { user: state.auth.user };
-}
-
-var CompactUserNav = exports.CompactUserNav = function (_React$Component3) {
-  _inherits(CompactUserNav, _React$Component3);
-
-  function CompactUserNav() {
-    _classCallCheck(this, CompactUserNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactUserNav).apply(this, arguments));
-  }
-
-  _createClass(CompactUserNav, [{
-    key: 'showUserMenu',
-    value: function showUserMenu() {
-      _mobileNavbarDropdown2.default.showConnected('user-menu', (0, _reactRedux.connect)(selectUserMenu)(UserMenu));
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'button',
-        { type: 'button', onClick: this.showUserMenu },
-        _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '64' })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return CompactUserNav;
-}(_react2.default.Component);
-
-},{"../../index":45,"../../services/mobile-navbar-dropdown":55,"../../services/modal":56,"../avatar":25,"../change-avatar/root":29,"react":"react","react-redux":"react-redux"}],45:[function(require,module,exports){
-(function (global){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.Misago = undefined;
-
-var _orderedList = require('./utils/ordered-list');
-
-var _orderedList2 = _interopRequireDefault(_orderedList);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Misago = exports.Misago = function () {
-  function Misago() {
-    _classCallCheck(this, Misago);
-
-    this._initializers = [];
-    this._context = {};
-  }
-
-  _createClass(Misago, [{
-    key: 'addInitializer',
-    value: function addInitializer(initializer) {
-      this._initializers.push({
-        key: initializer.name,
-
-        item: initializer.initializer,
-
-        after: initializer.after,
-        before: initializer.before
-      });
-    }
-  }, {
-    key: 'init',
-    value: function init(context) {
-      var _this = this;
-
-      this._context = context;
-
-      var initOrder = new _orderedList2.default(this._initializers).orderedValues();
-      initOrder.forEach(function (initializer) {
-        initializer(_this);
-      });
-    }
-
-    // context accessors
-
-  }, {
-    key: 'has',
-    value: function has(key) {
-      return this._context.hasOwnProperty(key);
-    }
-  }, {
-    key: 'get',
-    value: function get(key, fallback) {
-      if (this.has(key)) {
-        return this._context[key];
-      } else {
-        return fallback || undefined;
-      }
-    }
-  }]);
-
-  return Misago;
-}();
-
-// create  singleton
-
-var misago = new Misago();
-
-// expose it globally
-global.misago = misago;
-
-// and export it for tests and stuff
-exports.default = misago;
-
-}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-
-},{"./utils/ordered-list":62}],46:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.SIGN_OUT = exports.SIGN_IN = exports.initialState = undefined;
-exports.signIn = signIn;
-exports.signOut = signOut;
-exports.default = auth;
-
-var _users = require('./users');
-
-var initialState = exports.initialState = {
-  signedIn: false,
-  signedOut: false
-};
-
-var SIGN_IN = exports.SIGN_IN = 'SIGN_IN';
-var SIGN_OUT = exports.SIGN_OUT = 'SIGN_OUT';
-
-function signIn(user) {
-  return {
-    type: SIGN_IN,
-    user: user
-  };
-}
-
-function signOut() {
-  var soft = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0];
-
-  return {
-    type: SIGN_OUT,
-    soft: soft
-  };
-}
-
-function auth() {
-  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];
-  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
-  switch (action.type) {
-    case SIGN_IN:
-      return Object.assign({}, state, {
-        signedIn: action.user
-      });
-
-    case SIGN_OUT:
-      return Object.assign({}, state, {
-        isAuthenticated: false,
-        isAnonymous: true,
-        signedOut: !action.soft
-      });
-
-    case _users.UPDATE_AVATAR:
-      if (state.isAuthenticated && state.user.id === action.userId) {
-        var newState = Object.assign({}, state);
-        newState.user = Object.assign({}, state.user, {
-          'avatar_hash': action.avatarHash
-        });
-        return newState;
-      }
-      return state;
-
-    default:
-      return state;
-  }
-}
-
-},{"./users":49}],47:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.showSnackbar = showSnackbar;
-exports.hideSnackbar = hideSnackbar;
-exports.default = snackbar;
-var initialState = exports.initialState = {
-  type: 'info',
-  message: '',
-  isVisible: false
-};
-
-var SHOW_SNACKBAR = exports.SHOW_SNACKBAR = 'SHOW_SNACKBAR';
-var HIDE_SNACKBAR = exports.HIDE_SNACKBAR = 'HIDE_SNACKBAR';
-
-function showSnackbar(message, type) {
-  return {
-    type: SHOW_SNACKBAR,
-    message: message,
-    messageType: type
-  };
-}
-
-function hideSnackbar() {
-  return {
-    type: HIDE_SNACKBAR
-  };
-}
-
-function snackbar() {
-  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];
-  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
-  if (action.type === SHOW_SNACKBAR) {
-    return {
-      type: action.messageType,
-      message: action.message,
-      isVisible: true
-    };
-  } else if (action.type === HIDE_SNACKBAR) {
-    return Object.assign({}, state, {
-      isVisible: false
-    });
-  } else {
-    return state;
-  }
-}
-
-},{}],48:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.doTick = doTick;
-exports.default = tick;
-var initialState = exports.initialState = {
-  tick: 0
-};
-
-var TICK = exports.TICK = 'TICK';
-
-function doTick() {
-  return {
-    type: TICK
-  };
-}
-
-function tick() {
-  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];
-  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
-  if (action.type === TICK) {
-    return Object.assign({}, state, {
-      tick: state.tick + 1
-    });
-  } else {
-    return state;
-  }
-}
-
-},{}],49:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.updateAvatar = updateAvatar;
-var UPDATE_AVATAR = exports.UPDATE_AVATAR = 'UPDATE_AVATAR';
-
-function updateAvatar(user, avatarHash) {
-  return {
-    type: UPDATE_AVATAR,
-    userId: user.id,
-    avatarHash: avatarHash
-  };
-}
-
-},{}],50:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Ajax = exports.Ajax = function () {
-  function Ajax() {
-    _classCallCheck(this, Ajax);
-
-    this._cookieName = null;
-    this._csrfToken = null;
-  }
-
-  _createClass(Ajax, [{
-    key: 'init',
-    value: function init(cookieName) {
-      this._cookieName = cookieName;
-      this._csrfToken = this.getCsrfToken();
-    }
-  }, {
-    key: 'getCsrfToken',
-    value: function getCsrfToken() {
-      if (document.cookie.indexOf(this._cookieName) !== -1) {
-        var cookieRegex = new RegExp(this._cookieName + '\=([^;]*)');
-        var cookie = document.cookie.match(cookieRegex)[0];
-        return cookie ? cookie.split('=')[1] : null;
-      } else {
-        return null;
-      }
-    }
-  }, {
-    key: 'request',
-    value: function request(method, url, data) {
-      var self = this;
-      return new Promise(function (resolve, reject) {
-        var xhr = {
-          url: url,
-          method: method,
-          headers: {
-            'X-CSRFToken': self._csrfToken
-          },
-
-          data: data || {},
-          dataType: 'json',
-
-          success: function success(data) {
-            resolve(data);
-          },
-
-          error: function error(jqXHR) {
-            var rejection = jqXHR.responseJSON || {};
-
-            rejection.status = jqXHR.status;
-            rejection.statusText = jqXHR.statusText;
-
-            reject(rejection);
-          }
-        };
-
-        $.ajax(xhr);
-      });
-    }
-  }, {
-    key: 'get',
-    value: function get(url) {
-      return this.request('GET', url);
-    }
-  }, {
-    key: 'post',
-    value: function post(url, data) {
-      return this.request('POST', url, data);
-    }
-  }, {
-    key: 'patch',
-    value: function patch(url, data) {
-      return this.request('PATCH', url, data);
-    }
-  }, {
-    key: 'put',
-    value: function put(url, data) {
-      return this.request('PUT', url, data);
-    }
-  }, {
-    key: 'delete',
-    value: function _delete(url) {
-      return this.request('DELETE', url);
-    }
-  }]);
-
-  return Ajax;
-}();
-
-exports.default = new Ajax();
-
-},{}],51:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.Auth = undefined;
-
-var _auth = require('../reducers/auth');
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-// jshint ignore:line
-
-var Auth = exports.Auth = function () {
-  function Auth() {
-    _classCallCheck(this, Auth);
-  }
-
-  _createClass(Auth, [{
-    key: 'init',
-    value: function init(store, local, modal) {
-      this._store = store;
-      this._local = local;
-      this._modal = modal;
-
-      // tell other tabs what auth state is because we are most current with it
-      this.syncSession();
-
-      // listen for other tabs to tell us that state changed
-      this.watchState();
-    }
-  }, {
-    key: 'syncSession',
-    value: function syncSession() {
-      var state = this._store.getState().auth;
-      if (state.isAuthenticated) {
-        this._local.set('auth', {
-          isAuthenticated: true,
-          username: state.user.username
-        });
-      } else {
-        this._local.set('auth', {
-          isAuthenticated: false
-        });
-      }
-    }
-  }, {
-    key: 'watchState',
-    value: function watchState() {
-      var _this = this;
-
-      this._local.watch('auth', function (newState) {
-        if (newState.isAuthenticated) {
-          _this._store.dispatch((0, _auth.signIn)({
-            username: newState.username
-          }));
-        } else {
-          _this._store.dispatch((0, _auth.signOut)());
-        }
-      });
-      this._modal.hide();
-    }
-  }, {
-    key: 'signIn',
-    value: function signIn(user) {
-      this._store.dispatch((0, _auth.signIn)(user));
-      this._local.set('auth', {
-        isAuthenticated: true,
-        username: user.username
-      });
-      this._modal.hide();
-    }
-  }, {
-    key: 'signOut',
-    value: function signOut() {
-      this._store.dispatch((0, _auth.signOut)());
-      this._local.set('auth', {
-        isAuthenticated: false
-      });
-      this._modal.hide();
-    }
-  }, {
-    key: 'softSignOut',
-    value: function softSignOut() {
-      this._store.dispatch((0, _auth.signOut)(true));
-      this._local.set('auth', {
-        isAuthenticated: false
-      });
-      this._modal.hide();
-    }
-  }]);
-
-  return Auth;
-}();
-
-exports.default = new Auth();
-
-},{"../reducers/auth":46}],52:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global grecaptcha */
-// jshint ignore:line
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.Captcha = exports.ReCaptcha = exports.ReCaptchaComponent = exports.QACaptcha = exports.NoCaptcha = exports.BaseCaptcha = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _formGroup = require('../components/form-group');
-
-var _formGroup2 = _interopRequireDefault(_formGroup);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-// jshint ignore:line
-
-var BaseCaptcha = exports.BaseCaptcha = function () {
-  function BaseCaptcha() {
-    _classCallCheck(this, BaseCaptcha);
-  }
-
-  _createClass(BaseCaptcha, [{
-    key: 'init',
-    value: function init(context, ajax, include, snackbar) {
-      this._context = context;
-      this._ajax = ajax;
-      this._include = include;
-      this._snackbar = snackbar;
-    }
-  }]);
-
-  return BaseCaptcha;
-}();
-
-var NoCaptcha = exports.NoCaptcha = function (_BaseCaptcha) {
-  _inherits(NoCaptcha, _BaseCaptcha);
-
-  function NoCaptcha() {
-    _classCallCheck(this, NoCaptcha);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(NoCaptcha).apply(this, arguments));
-  }
-
-  _createClass(NoCaptcha, [{
-    key: 'load',
-    value: function load() {
-      return new Promise(function (resolve) {
-        // immediately resolve as we don't have anything to validate
-        resolve();
-      });
-    }
-  }, {
-    key: 'validator',
-    value: function validator() {
-      return null;
-    }
-  }, {
-    key: 'component',
-    value: function component() {
-      return null;
-    }
-  }]);
-
-  return NoCaptcha;
-}(BaseCaptcha);
-
-var QACaptcha = exports.QACaptcha = function (_BaseCaptcha2) {
-  _inherits(QACaptcha, _BaseCaptcha2);
-
-  function QACaptcha() {
-    _classCallCheck(this, QACaptcha);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(QACaptcha).apply(this, arguments));
-  }
-
-  _createClass(QACaptcha, [{
-    key: 'load',
-    value: function load() {
-      var self = this;
-      return new Promise(function (resolve, reject) {
-        self._ajax.get(self._context.get('CAPTCHA_API_URL')).then(function (data) {
-          self.question = data.question;
-          self.helpText = data.help_text;
-          resolve();
-        }, function () {
-          self._snackbar.error(gettext("Failed to load CAPTCHA."));
-          reject();
-        });
-      });
-    }
-  }, {
-    key: 'validator',
-    value: function validator() {
-      return [];
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'component',
-    value: function component(kwargs) {
-      return _react2.default.createElement(
-        _formGroup2.default,
-        { label: this.question, 'for': 'id_captcha',
-          labelClass: kwargs.labelClass || "col-sm-4",
-          controlClass: kwargs.controlClass || "col-sm-8",
-          validation: kwargs.form.state.errors.captcha,
-          helpText: this.helpText || null },
-        _react2.default.createElement('input', { type: 'text', id: 'id_captcha', className: 'form-control',
-          'aria-describedby': 'id_captcha_status',
-          disabled: kwargs.form.state.isLoading,
-          onChange: kwargs.form.bindInput('captcha'),
-          value: kwargs.form.state.captcha })
-      );
-    }
-    /* jshint ignore:end */
-
-  }]);
-
-  return QACaptcha;
-}(BaseCaptcha);
-
-var ReCaptchaComponent = exports.ReCaptchaComponent = function (_React$Component) {
-  _inherits(ReCaptchaComponent, _React$Component);
-
-  function ReCaptchaComponent() {
-    _classCallCheck(this, ReCaptchaComponent);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(ReCaptchaComponent).apply(this, arguments));
-  }
-
-  _createClass(ReCaptchaComponent, [{
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      var _this4 = this;
-
-      grecaptcha.render('recaptcha', {
-        'sitekey': this.props.siteKey,
-        'callback': function callback(response) {
-          // fire fakey event to binding
-          _this4.props.binding({
-            target: {
-              value: response
-            }
-          });
-        }
-      });
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement('div', { id: 'recaptcha' });
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return ReCaptchaComponent;
-}(_react2.default.Component);
-
-var ReCaptcha = exports.ReCaptcha = function (_BaseCaptcha3) {
-  _inherits(ReCaptcha, _BaseCaptcha3);
-
-  function ReCaptcha() {
-    _classCallCheck(this, ReCaptcha);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(ReCaptcha).apply(this, arguments));
-  }
-
-  _createClass(ReCaptcha, [{
-    key: 'load',
-    value: function load() {
-      this._include.include('https://www.google.com/recaptcha/api.js', true);
-
-      return new Promise(function (resolve) {
-        var wait = function wait() {
-          if (typeof grecaptcha === "undefined") {
-            window.setTimeout(function () {
-              wait();
-            }, 200);
-          } else {
-            resolve();
-          }
-        };
-        wait();
-      });
-    }
-  }, {
-    key: 'validator',
-    value: function validator() {
-      return [];
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'component',
-    value: function component(kwargs) {
-      return _react2.default.createElement(
-        _formGroup2.default,
-        { label: gettext("Captcha"), 'for': 'id_captcha',
-          labelClass: kwargs.labelClass || "col-sm-4",
-          controlClass: kwargs.controlClass || "col-sm-8",
-          validation: kwargs.form.state.errors.captcha,
-          helpText: gettext("Please solve the quick test.") },
-        _react2.default.createElement(ReCaptchaComponent, { siteKey: this._context.get('SETTINGS').recaptcha_site_key,
-          binding: kwargs.form.bindInput('captcha') })
-      );
-    }
-    /* jshint ignore:end */
-
-  }]);
-
-  return ReCaptcha;
-}(BaseCaptcha);
-
-var Captcha = exports.Captcha = function () {
-  function Captcha() {
-    _classCallCheck(this, Captcha);
-  }
-
-  _createClass(Captcha, [{
-    key: 'init',
-    value: function init(context, ajax, include, snackbar) {
-      switch (context.get('SETTINGS').captcha_type) {
-        case 'no':
-          this._captcha = new NoCaptcha();
-          break;
-
-        case 'qa':
-          this._captcha = new QACaptcha();
-          break;
-
-        case 're':
-          this._captcha = new ReCaptcha();
-          break;
-      }
-
-      this._captcha.init(context, ajax, include, snackbar);
-    }
-
-    // accessors for underlying strategy
-
-  }, {
-    key: 'load',
-    value: function load() {
-      return this._captcha.load();
-    }
-  }, {
-    key: 'validator',
-    value: function validator() {
-      return this._captcha.validator();
-    }
-  }, {
-    key: 'component',
-    value: function component(kwargs) {
-      return this._captcha.component(kwargs);
-    }
-  }]);
-
-  return Captcha;
-}();
-
-exports.default = new Captcha();
-
-},{"../components/form-group":30,"react":"react"}],53:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Include = exports.Include = function () {
-  function Include() {
-    _classCallCheck(this, Include);
-  }
-
-  _createClass(Include, [{
-    key: 'init',
-    value: function init(staticUrl) {
-      this._staticUrl = staticUrl;
-      this._included = [];
-    }
-  }, {
-    key: 'include',
-    value: function include(script) {
-      var remote = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
-
-      if (this._included.indexOf(script) === -1) {
-        this._included.push(script);
-        this._include(script, remote);
-      }
-    }
-  }, {
-    key: '_include',
-    value: function _include(script, remote) {
-      $.ajax({
-        url: (!remote ? this._staticUrl : '') + script,
-        cache: true,
-        dataType: 'script'
-      });
-    }
-  }]);
-
-  return Include;
-}();
-
-exports.default = new Include();
-
-},{}],54:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var storage = window.localStorage;
-
-var LocalStorage = exports.LocalStorage = function () {
-  function LocalStorage() {
-    _classCallCheck(this, LocalStorage);
-  }
-
-  _createClass(LocalStorage, [{
-    key: 'init',
-    value: function init(prefix) {
-      var _this = this;
-
-      this._prefix = prefix;
-      this._watchers = [];
-
-      window.addEventListener('storage', function (e) {
-        var newValueJson = JSON.parse(e.newValue);
-        _this._watchers.forEach(function (watcher) {
-          if (watcher.key === e.key && e.oldValue !== e.newValue) {
-            watcher.callback(newValueJson);
-          }
-        });
-      });
-    }
-  }, {
-    key: 'set',
-    value: function set(key, value) {
-      storage.setItem(this._prefix + key, JSON.stringify(value));
-    }
-  }, {
-    key: 'get',
-    value: function get(key) {
-      var itemString = storage.getItem(this._prefix + key);
-      if (itemString) {
-        return JSON.parse(itemString);
-      } else {
-        return null;
-      }
-    }
-  }, {
-    key: 'watch',
-    value: function watch(key, callback) {
-      this._watchers.push({
-        key: this._prefix + key,
-        callback: callback
-      });
-    }
-  }]);
-
-  return LocalStorage;
-}();
-
-exports.default = new LocalStorage();
-
-},{}],55:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.MobileNavbarDropdown = undefined;
-
-var _mountComponent = require('../utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var MobileNavbarDropdown = exports.MobileNavbarDropdown = function () {
-  function MobileNavbarDropdown() {
-    _classCallCheck(this, MobileNavbarDropdown);
-  }
-
-  _createClass(MobileNavbarDropdown, [{
-    key: 'init',
-    value: function init(element) {
-      this._element = element;
-      this._component = null;
-    }
-  }, {
-    key: 'show',
-    value: function show(component) {
-      if (this._component === component) {
-        this.hide();
-      } else {
-        this._component = component;
-        (0, _mountComponent2.default)(component, this._element.id);
-        $(this._element).addClass('open');
-      }
-    }
-  }, {
-    key: 'showConnected',
-    value: function showConnected(name, component) {
-      if (this._component === name) {
-        this.hide();
-      } else {
-        this._component = name;
-        (0, _mountComponent2.default)(component, this._element.id, true);
-        $(this._element).addClass('open');
-      }
-    }
-  }, {
-    key: 'hide',
-    value: function hide() {
-      $(this._element).removeClass('open');
-      this._component = null;
-    }
-  }]);
-
-  return MobileNavbarDropdown;
-}();
-
-exports.default = new MobileNavbarDropdown();
-
-},{"../utils/mount-component":61}],56:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.Modal = undefined;
-
-var _reactDom = require('react-dom');
-
-var _reactDom2 = _interopRequireDefault(_reactDom);
-
-var _mountComponent = require('../utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var Modal = exports.Modal = function () {
-  function Modal() {
-    _classCallCheck(this, Modal);
-  }
-
-  _createClass(Modal, [{
-    key: 'init',
-    value: function init(element) {
-      var _this = this;
-
-      this._element = element;
-
-      this._modal = $(element).modal({ show: false });
-
-      this._modal.on('hidden.bs.modal', function () {
-        _reactDom2.default.unmountComponentAtNode(_this._element);
-      });
-    }
-  }, {
-    key: 'show',
-    value: function show(component) {
-      (0, _mountComponent2.default)(component, this._element.id);
-      this._modal.modal('show');
-    }
-  }, {
-    key: 'hide',
-    value: function hide() {
-      this._modal.modal('hide');
-    }
-  }]);
-
-  return Modal;
-}();
-
-exports.default = new Modal();
-
-},{"../utils/mount-component":61,"react-dom":"react-dom"}],57:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.Snackbar = undefined;
-
-var _snackbar = require('../reducers/snackbar');
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var HIDE_ANIMATION_LENGTH = 300;
-var MESSAGE_SHOW_LENGTH = 5000;
-
-var Snackbar = exports.Snackbar = function () {
-  function Snackbar() {
-    _classCallCheck(this, Snackbar);
-  }
-
-  _createClass(Snackbar, [{
-    key: 'init',
-    value: function init(store) {
-      this._store = store;
-      this._timeout = null;
-    }
-  }, {
-    key: 'alert',
-    value: function alert(message, type) {
-      var _this = this;
-
-      if (this._timeout) {
-        window.clearTimeout(this._timeout);
-        this._store.dispatch((0, _snackbar.hideSnackbar)());
-
-        this._timeout = window.setTimeout(function () {
-          _this._timeout = null;
-          _this.alert(message, type);
-        }, HIDE_ANIMATION_LENGTH);
-      } else {
-        this._store.dispatch((0, _snackbar.showSnackbar)(message, type));
-        this._timeout = window.setTimeout(function () {
-          _this._store.dispatch((0, _snackbar.hideSnackbar)());
-          _this._timeout = null;
-        }, MESSAGE_SHOW_LENGTH);
-      }
-    }
-
-    // shorthands for message types
-
-  }, {
-    key: 'info',
-    value: function info(message) {
-      this.alert(message, 'info');
-    }
-  }, {
-    key: 'success',
-    value: function success(message) {
-      this.alert(message, 'success');
-    }
-  }, {
-    key: 'warning',
-    value: function warning(message) {
-      this.alert(message, 'warning');
-    }
-  }, {
-    key: 'error',
-    value: function error(message) {
-      this.alert(message, 'error');
-    }
-
-    // shorthand for api errors
-
-  }, {
-    key: 'apiError',
-    value: function apiError(rejection) {
-      var message = gettext("Unknown error has occured.");
-
-      if (rejection.status === 0) {
-        message = gettext("Lost connection with application.");
-      }
-
-      if (rejection.status === 400 && rejection.detail) {
-        message = rejection.detail;
-      }
-
-      if (rejection.status === 403) {
-        message = rejection.detail;
-        if (message === "Permission denied") {
-          message = gettext("You don't have permission to perform this action.");
-        }
-      }
-
-      if (rejection.status === 404) {
-        message = gettext("Action link is invalid.");
-      }
-
-      this.error(message);
-    }
-  }]);
-
-  return Snackbar;
-}();
-
-exports.default = new Snackbar();
-
-},{"../reducers/snackbar":47}],58:[function(require,module,exports){
-'use strict';
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.StoreWrapper = undefined;
-
-var _redux = require('redux');
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var StoreWrapper = exports.StoreWrapper = function () {
-  function StoreWrapper() {
-    _classCallCheck(this, StoreWrapper);
-
-    this._store = null;
-    this._reducers = {};
-    this._initialState = {};
-  }
-
-  _createClass(StoreWrapper, [{
-    key: 'addReducer',
-    value: function addReducer(name, reducer, initialState) {
-      this._reducers[name] = reducer;
-      this._initialState[name] = initialState;
-    }
-  }, {
-    key: 'init',
-    value: function init() {
-      this._store = (0, _redux.createStore)((0, _redux.combineReducers)(this._reducers), this._initialState);
-    }
-  }, {
-    key: 'getStore',
-    value: function getStore() {
-      return this._store;
-    }
-
-    // Store API
-
-  }, {
-    key: 'getState',
-    value: function getState() {
-      return this._store.getState();
-    }
-  }, {
-    key: 'dispatch',
-    value: function dispatch(action) {
-      return this._store.dispatch(action);
-    }
-  }]);
-
-  return StoreWrapper;
-}();
-
-exports.default = new StoreWrapper();
-
-},{"redux":"redux"}],59:[function(require,module,exports){
-"use strict";
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-/* global zxcvbn */
-
-var Zxcvbn = exports.Zxcvbn = function () {
-  function Zxcvbn() {
-    _classCallCheck(this, Zxcvbn);
-  }
-
-  _createClass(Zxcvbn, [{
-    key: "init",
-    value: function init(include) {
-      this._include = include;
-    }
-  }, {
-    key: "scorePassword",
-    value: function scorePassword(password, inputs) {
-      // 0-4 score, the more the stronger password
-      return zxcvbn(password, inputs).score;
-    }
-  }, {
-    key: "load",
-    value: function load() {
-      if (typeof zxcvbn === "undefined") {
-        this._include.include('misago/js/zxcvbn.js');
-        return this._loadingPromise();
-      } else {
-        return this._loadedPromise();
-      }
-    }
-  }, {
-    key: "_loadingPromise",
-    value: function _loadingPromise() {
-      return new Promise(function (resolve) {
-        var wait = function wait() {
-          if (typeof zxcvbn === "undefined") {
-            window.setTimeout(function () {
-              wait();
-            }, 200);
-          } else {
-            resolve();
-          }
-        };
-        wait();
-      });
-    }
-  }, {
-    key: "_loadedPromise",
-    value: function _loadedPromise() {
-      // we have already loaded zxcvbn.js, resolve away!
-      return new Promise(function (resolve) {
-        resolve();
-      });
-    }
-  }]);
-
-  return Zxcvbn;
-}();
-
-exports.default = new Zxcvbn();
-
-},{}],60:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-exports.default = function (ban, changeState) {
-  _reactDom2.default.render(
-  /* jshint ignore:start */
-  _react2.default.createElement(
-    _reactRedux.Provider,
-    { store: _store2.default.getStore() },
-    _react2.default.createElement(RedrawedBannedPage, { message: ban.message,
-      expires: ban.expires_on ? (0, _moment2.default)(ban.expires_on) : null })
-  ),
-  /* jshint ignore:end */
-  document.getElementById('page-mount'));
-
-  if (typeof changeState === 'undefined' || changeState) {
-    var forumName = _index2.default.get('SETTINGS').forum_name;
-    document.title = gettext("You are banned") + ' | ' + forumName;
-    window.history.pushState({}, "", _index2.default.get('BANNED_URL'));
-  }
-};
-
-var _moment = require('moment');
-
-var _moment2 = _interopRequireDefault(_moment);
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactDom = require('react-dom');
-
-var _reactDom2 = _interopRequireDefault(_reactDom);
-
-var _reactRedux = require('react-redux');
-
-var _bannedPage = require('../components/banned-page');
-
-var _bannedPage2 = _interopRequireDefault(_bannedPage);
-
-var _index = require('../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _store = require('../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// jshint ignore:line
-
-/* jshint ignore:start */
-// jshint ignore:line
-// jshint ignore:line
-var select = function select(state) {
-  return state.tick;
-}; // jshint ignore:line
-// jshint ignore:line
-
-var RedrawedBannedPage = (0, _reactRedux.connect)(select)(_bannedPage2.default);
-/* jshint ignore:end */
-
-},{"../components/banned-page":26,"../index":45,"../services/store":58,"moment":"moment","react":"react","react-dom":"react-dom","react-redux":"react-redux"}],61:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-exports.default = function (Component, rootElementId) {
-  var connected = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2];
-
-  var rootElement = document.getElementById(rootElementId);
-
-  if (rootElement) {
-    if (connected) {
-      _reactDom2.default.render(
-      /* jshint ignore:start */
-      _react2.default.createElement(
-        _reactRedux.Provider,
-        { store: _store2.default.getStore() },
-        _react2.default.createElement(Component, null)
-      ),
-      /* jshint ignore:end */
-      rootElement);
-    } else {
-      _reactDom2.default.render(
-      /* jshint ignore:start */
-      _react2.default.createElement(Component, null),
-      /* jshint ignore:end */
-      rootElement);
-    }
-  }
-};
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactDom = require('react-dom');
-
-var _reactDom2 = _interopRequireDefault(_reactDom);
-
-var _reactRedux = require('react-redux');
-
-var _store = require('../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-},{"../services/store":58,"react":"react","react-dom":"react-dom","react-redux":"react-redux"}],62:[function(require,module,exports){
-"use strict";
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-var OrderedList = function () {
-  function OrderedList(items) {
-    _classCallCheck(this, OrderedList);
-
-    this.isOrdered = false;
-    this._items = items || [];
-  }
-
-  _createClass(OrderedList, [{
-    key: "add",
-    value: function add(key, item, order) {
-      this._items.push({
-        key: key,
-        item: item,
-
-        after: order ? order.after || null : null,
-        before: order ? order.before || null : null
-      });
-    }
-  }, {
-    key: "get",
-    value: function get(key, value) {
-      for (var i = 0; i < this._items.length; i++) {
-        if (this._items[i].key === key) {
-          return this._items[i].item;
-        }
-      }
-
-      return value;
-    }
-  }, {
-    key: "has",
-    value: function has(key) {
-      return this.get(key) !== undefined;
-    }
-  }, {
-    key: "values",
-    value: function values() {
-      var values = [];
-      for (var i = 0; i < this._items.length; i++) {
-        values.push(this._items[i].item);
-      }
-      return values;
-    }
-  }, {
-    key: "order",
-    value: function order(values_only) {
-      if (!this.isOrdered) {
-        this._items = this._order(this._items);
-        this.isOrdered = true;
-      }
-
-      if (values_only || typeof values_only === 'undefined') {
-        return this.values();
-      } else {
-        return this._items;
-      }
-    }
-  }, {
-    key: "orderedValues",
-    value: function orderedValues() {
-      return this.order(true);
-    }
-  }, {
-    key: "_order",
-    value: function _order(unordered) {
-      // Index of unordered items
-      var index = [];
-      unordered.forEach(function (item) {
-        index.push(item.key);
-      });
-
-      // Ordered items
-      var ordered = [];
-      var ordering = [];
-
-      // First pass: register items that
-      // don't specify their order
-      unordered.forEach(function (item) {
-        if (!item.after && !item.before) {
-          ordered.push(item);
-          ordering.push(item.key);
-        }
-      });
-
-      // Second pass: register items that
-      // specify their before to "_end"
-      unordered.forEach(function (item) {
-        if (item.before === "_end") {
-          ordered.push(item);
-          ordering.push(item.key);
-        }
-      });
-
-      // Third pass: keep iterating items
-      // until we hit iterations limit or finish
-      // ordering list
-      function insertItem(item) {
-        var insertAt = -1;
-        if (ordering.indexOf(item.key) === -1) {
-          if (item.after) {
-            insertAt = ordering.indexOf(item.after);
-            if (insertAt !== -1) {
-              insertAt += 1;
-            }
-          } else if (item.before) {
-            insertAt = ordering.indexOf(item.before);
-          }
-
-          if (insertAt !== -1) {
-            ordered.splice(insertAt, 0, item);
-            ordering.splice(insertAt, 0, item.key);
-          }
-        }
-      }
-
-      var iterations = 200;
-      while (iterations > 0 && index.length !== ordering.length) {
-        iterations -= 1;
-        unordered.forEach(insertItem);
-      }
-
-      return ordered;
-    }
-  }]);
-
-  return OrderedList;
-}();
-
-exports.default = OrderedList;
-
-},{}],63:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.required = required;
-exports.email = email;
-exports.minLength = minLength;
-exports.maxLength = maxLength;
-exports.usernameMinLength = usernameMinLength;
-exports.usernameMaxLength = usernameMaxLength;
-exports.usernameContent = usernameContent;
-exports.passwordMinLength = passwordMinLength;
-var EMAIL = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
-var USERNAME = new RegExp('^[0-9a-z]+$', 'i');
-
-function required() {
-  return function (value) {
-    if ($.trim(value).length === 0) {
-      return gettext("This field is required.");
-    }
-  };
-}
-
-function email(message) {
-  return function (value) {
-    if (!EMAIL.test(value)) {
-      return message || gettext("Enter a valid email address.");
-    }
-  };
-}
-
-function minLength(limitValue, message) {
-  return function (value) {
-    var returnMessage = '';
-    var length = $.trim(value).length;
-
-    if (length < limitValue) {
-      if (message) {
-        returnMessage = message(limitValue, length);
-      } else {
-        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);
-      }
-      return interpolate(returnMessage, {
-        limit_value: limitValue,
-        show_value: length
-      }, true);
-    }
-  };
-}
-
-function maxLength(limitValue, message) {
-  return function (value) {
-    var returnMessage = '';
-    var length = $.trim(value).length;
-
-    if (length > limitValue) {
-      if (message) {
-        returnMessage = message(limitValue, length);
-      } else {
-        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);
-      }
-      return interpolate(returnMessage, {
-        limit_value: limitValue,
-        show_value: length
-      }, true);
-    }
-  };
-}
-
-function usernameMinLength(settings) {
-  var message = function message(limitValue) {
-    return ngettext("Username must be at least %(limit_value)s character long.", "Username must be at least %(limit_value)s characters long.", limitValue);
-  };
-  return this.minLength(settings.username_length_min, message);
-}
-
-function usernameMaxLength(settings) {
-  var message = function message(limitValue) {
-    return ngettext("Username cannot be longer than %(limit_value)s character.", "Username cannot be longer than %(limit_value)s characters.", limitValue);
-  };
-  return this.maxLength(settings.username_length_max, message);
-}
-
-function usernameContent() {
-  return function (value) {
-    if (!USERNAME.test($.trim(value))) {
-      return gettext("Username can only contain latin alphabet letters and digits.");
-    }
-  };
-}
-
-function passwordMinLength(settings) {
-  var message = function message(limitValue) {
-    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);
-  };
-  return this.minLength(settings.password_length_min, message);
-}
-
-},{}]},{},[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvaW5kZXguanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2FqYXguanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2F1dGgtbWVzc2FnZS1jb21wb25lbnQuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2F1dGgtcmVkdWNlci5qcyIsInNyYy9pbml0aWFsaXplcnMvYXV0aC5qcyIsInNyYy9pbml0aWFsaXplcnMvYmFubmVkLXBhZ2UtY29tcG9uZW50LmpzIiwic3JjL2luaXRpYWxpemVycy9jYXRjaGEuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2luY2x1ZGUuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2xvY2FsLXN0b3JhZ2UuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL21vYmlsZS1uYXZiYXItZHJvcGRvd24uanMiLCJzcmMvaW5pdGlhbGl6ZXJzL21vZGFsLmpzIiwic3JjL2luaXRpYWxpemVycy9tb21lbnQtbG9jYWxlLmpzIiwic3JjL2luaXRpYWxpemVycy9yZXF1ZXN0LWFjdGl2YXRpb24tbGluay1jb21wb25lbnQuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL3JlcXVlc3QtcGFzc3dvcmQtcmVzZXQtY29tcG9uZW50LmpzIiwic3JjL2luaXRpYWxpemVycy9yZXNldC1wYXNzd29yZC1mb3JtLWNvbXBvbmVudC5qcyIsInNyYy9pbml0aWFsaXplcnMvc25hY2tiYXItY29tcG9uZW50LmpzIiwic3JjL2luaXRpYWxpemVycy9zbmFja2Jhci1yZWR1Y2VyLmpzIiwic3JjL2luaXRpYWxpemVycy9zbmFja2Jhci5qcyIsInNyYy9pbml0aWFsaXplcnMvc3RvcmUuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL3RpY2stcmVkdWNlci5qcyIsInNyYy9pbml0aWFsaXplcnMvdGljay1zdGFydC5qcyIsInNyYy9pbml0aWFsaXplcnMvdXNlci1tZW51LWNvbXBvbmVudC5qcyIsInNyYy9pbml0aWFsaXplcnMvenhjdmJuLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9hdXRoLW1lc3NhZ2UuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2F2YXRhci5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvYmFubmVkLXBhZ2UuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2J1dHRvbi5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvY2hhbmdlLWF2YXRhci9pbmRleC5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvY2hhbmdlLWF2YXRhci9yb290LmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9mb3JtLWdyb3VwLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9mb3JtLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9sb2FkZXIuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL21vZGFsLWxvYWRlci5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvcGFzc3dvcmQtc3RyZW5ndGguanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3JlZ2lzdGVyLWJ1dHRvbi5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvcmVnaXN0ZXIuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3JlcXVlc3QtYWN0aXZhdGlvbi1saW5rLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9yZXF1ZXN0LXBhc3N3b3JkLXJlc2V0LmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9yZXNldC1wYXNzd29yZC1mb3JtLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9zaWduLWluLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9zbmFja2Jhci5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlci1tZW51L2d1ZXN0LW5hdi5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlci1tZW51L3Jvb3QuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3VzZXItbWVudS91c2VyLW5hdi5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvcmVkdWNlcnMvYXV0aC5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL3JlZHVjZXJzL3NuYWNrYmFyLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvcmVkdWNlcnMvdGljay5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL3JlZHVjZXJzL3VzZXJzLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvc2VydmljZXMvYWpheC5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL2F1dGguanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9zZXJ2aWNlcy9jYXB0Y2hhLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvc2VydmljZXMvaW5jbHVkZS5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9zZXJ2aWNlcy9tb2JpbGUtbmF2YmFyLWRyb3Bkb3duLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvc2VydmljZXMvbW9kYWwuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy9zZXJ2aWNlcy9zbmFja2Jhci5qcyIsIi4uLy4uLy4uL2RvY3VtZW50cy9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL3N0b3JlLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvc2VydmljZXMvenhjdmJuLmpzIiwiLi4vLi4vLi4vZG9jdW1lbnRzL21pc2Fnby9mcm9udGVuZC9zcmMvdXRpbHMvYmFubmVkLXBhZ2UuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy91dGlscy9tb3VudC1jb21wb25lbnQuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy91dGlscy9vcmRlcmVkLWxpc3QuanMiLCIuLi8uLi8uLi9kb2N1bWVudHMvbWlzYWdvL2Zyb250ZW5kL3NyYy91dGlscy92YWxpZGF0b3JzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDRWEsTUFBTSxXQUFOLE1BQU07QUFDakIsV0FEVyxNQUFNLEdBQ0g7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LENBQUM7R0FDZixDQUFDO0FBQ0YsU0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztDQUM5RDs7QUFFTSxTQUFTLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtBQUMxQyxNQUFJLE9BQU8sR0FBRyxTQUFWLE9BQU8sQ0FBWSxVQUFVLEVBQUU7QUFDakMsV0FBTyxRQUFRLENBQ2IsMkRBQTJELEVBQzNELDREQUE0RCxFQUM1RCxVQUFVLENBQUMsQ0FBQztHQUNmLENBQUM7QUFDRixTQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0NBQzlEOztBQUVNLFNBQVMsZUFBZSxHQUFHO0FBQ2hDLFNBQU8sVUFBUyxLQUFLLEVBQUU7QUFDckIsUUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ2pDLGFBQU8sT0FBTyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7S0FDaEY7R0FDRixDQUFDO0NBQ0g7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7QUFDMUMsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLENBQVksVUFBVSxFQUFFO0FBQ2pDLFdBQU8sUUFBUSxDQUNiLGlFQUFpRSxFQUNqRSxrRUFBa0UsRUFDbEUsVUFBVSxDQUFDLENBQUM7R0FDZixDQUFDO0FBQ0YsU0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztDQUM5RCIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJpbXBvcnQgT3JkZXJlZExpc3QgZnJvbSAnbWlzYWdvL3V0aWxzL29yZGVyZWQtbGlzdCc7XG5cbmV4cG9ydCBjbGFzcyBNaXNhZ28ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pbml0aWFsaXplcnMgPSBbXTtcbiAgICB0aGlzLl9jb250ZXh0ID0ge307XG4gIH1cblxuICBhZGRJbml0aWFsaXplcihpbml0aWFsaXplcikge1xuICAgIHRoaXMuX2luaXRpYWxpemVycy5wdXNoKHtcbiAgICAgIGtleTogaW5pdGlhbGl6ZXIubmFtZSxcblxuICAgICAgaXRlbTogaW5pdGlhbGl6ZXIuaW5pdGlhbGl6ZXIsXG5cbiAgICAgIGFmdGVyOiBpbml0aWFsaXplci5hZnRlcixcbiAgICAgIGJlZm9yZTogaW5pdGlhbGl6ZXIuYmVmb3JlXG4gICAgfSk7XG4gIH1cblxuICBpbml0KGNvbnRleHQpIHtcbiAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcblxuICAgIHZhciBpbml0T3JkZXIgPSBuZXcgT3JkZXJlZExpc3QodGhpcy5faW5pdGlhbGl6ZXJzKS5vcmRlcmVkVmFsdWVzKCk7XG4gICAgaW5pdE9yZGVyLmZvckVhY2goaW5pdGlhbGl6ZXIgPT4ge1xuICAgICAgaW5pdGlhbGl6ZXIodGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBjb250ZXh0IGFjY2Vzc29yc1xuICBoYXMoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRleHQuaGFzT3duUHJvcGVydHkoa2V5KTtcbiAgfVxuXG4gIGdldChrZXksIGZhbGxiYWNrKSB7XG4gICAgaWYgKHRoaXMuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0W2tleV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxsYmFjayB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG5cbi8vIGNyZWF0ZSAgc2luZ2xldG9uXG52YXIgbWlzYWdvID0gbmV3IE1pc2FnbygpO1xuXG4vLyBleHBvc2UgaXQgZ2xvYmFsbHlcbmdsb2JhbC5taXNhZ28gPSBtaXNhZ287XG5cbi8vIGFuZCBleHBvcnQgaXQgZm9yIHRlc3RzIGFuZCBzdHVmZlxuZXhwb3J0IGRlZmF1bHQgbWlzYWdvO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgYWpheC5pbml0KG1pc2Fnby5nZXQoJ0NTUkZfQ09PS0lFX05BTUUnKSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdhamF4JyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyXG59KTtcbiIsImltcG9ydCB7IGNvbm5lY3QgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgQXV0aE1lc3NhZ2UsIHsgc2VsZWN0IH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYXV0aC1tZXNzYWdlJztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIG1vdW50KGNvbm5lY3Qoc2VsZWN0KShBdXRoTWVzc2FnZSksICdhdXRoLW1lc3NhZ2UtbW91bnQnKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2NvbXBvbmVudDphdXRoLW1lc3NhZ2UnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCByZWR1Y2VyLCB7IGluaXRpYWxTdGF0ZSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy9hdXRoJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcihjb250ZXh0KSB7XG4gIHN0b3JlLmFkZFJlZHVjZXIoJ2F1dGgnLCByZWR1Y2VyLCBPYmplY3QuYXNzaWduKHtcbiAgICAnaXNBdXRoZW50aWNhdGVkJzogY29udGV4dC5nZXQoJ2lzQXV0aGVudGljYXRlZCcpLFxuICAgICdpc0Fub255bW91cyc6ICFjb250ZXh0LmdldCgnaXNBdXRoZW50aWNhdGVkJyksXG5cbiAgICAndXNlcic6IGNvbnRleHQuZ2V0KCd1c2VyJylcbiAgfSwgaW5pdGlhbFN0YXRlKSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdyZWR1Y2VyOmF1dGgnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGJlZm9yZTogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgYXV0aCBmcm9tICdtaXNhZ28vc2VydmljZXMvYXV0aCc7XG5pbXBvcnQgbW9kYWwgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL21vZGFsJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgYXV0aC5pbml0KHN0b3JlLCBzdG9yYWdlLCBtb2RhbCk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdhdXRoJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3N0b3JlJ1xufSk7IiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHNob3dCYW5uZWRQYWdlIGZyb20gJ21pc2Fnby91dGlscy9iYW5uZWQtcGFnZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKGNvbnRleHQpIHtcbiAgaWYgKGNvbnRleHQuZ2V0KCdCQU5fTUVTU0FHRScpKSB7XG4gICAgc2hvd0Jhbm5lZFBhZ2UoY29udGV4dC5nZXQoJ0JBTl9NRVNTQUdFJyksIGZhbHNlKTtcbiAgfVxufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnY29tcG9uZW50OmJhbmVkLXBhZ2UnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBjYXB0Y2hhIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9jYXB0Y2hhJztcbmltcG9ydCBpbmNsdWRlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9pbmNsdWRlJztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcihjb250ZXh0KSB7XG4gIGNhcHRjaGEuaW5pdChjb250ZXh0LCBhamF4LCBpbmNsdWRlLCBzbmFja2Jhcik7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjYXB0Y2hhJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBpbmNsdWRlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9pbmNsdWRlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoY29udGV4dCkge1xuICBpbmNsdWRlLmluaXQoY29udGV4dC5nZXQoJ1NUQVRJQ19VUkwnKSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdpbmNsdWRlJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBzdG9yYWdlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIHN0b3JhZ2UuaW5pdCgnbWlzYWdvXycpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnbG9jYWwtc3RvcmFnZScsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplclxufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgZHJvcGRvd24gZnJvbSAnbWlzYWdvL3NlcnZpY2VzL21vYmlsZS1uYXZiYXItZHJvcGRvd24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9iaWxlLW5hdmJhci1kcm9wZG93bi1tb3VudCcpO1xuICBpZiAoZWxlbWVudCkge1xuICAgIGRyb3Bkb3duLmluaXQoZWxlbWVudCk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2Ryb3Bkb3duJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBiZWZvcmU6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IG1vZGFsIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2RhbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1tb3VudCcpO1xuICBpZiAoZWxlbWVudCkge1xuICAgIG1vZGFsLmluaXQoZWxlbWVudCk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ21vZGFsJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBiZWZvcmU6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgbW9tZW50LmxvY2FsZSgkKCdodG1sJykuYXR0cignbGFuZycpKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ21vbWVudCcsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplclxufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgUmVxdWVzdEFjdGl2YXRpb25MaW5rIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3JlcXVlc3QtYWN0aXZhdGlvbi1saW5rJztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVxdWVzdC1hY3RpdmF0aW9uLWxpbmstbW91bnQnKSkge1xuICAgIG1vdW50KFJlcXVlc3RBY3RpdmF0aW9uTGluaywgJ3JlcXVlc3QtYWN0aXZhdGlvbi1saW5rLW1vdW50JywgZmFsc2UpO1xuICB9XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjb21wb25lbnQ6cmVxdWVzdC1hY3RpdmF0aW9uLWxpbmsnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBSZXF1ZXN0UGFzc3dvcmRSZXNldCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9yZXF1ZXN0LXBhc3N3b3JkLXJlc2V0JztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVxdWVzdC1wYXNzd29yZC1yZXNldC1tb3VudCcpKSB7XG4gICAgbW91bnQoUmVxdWVzdFBhc3N3b3JkUmVzZXQsICdyZXF1ZXN0LXBhc3N3b3JkLXJlc2V0LW1vdW50JywgZmFsc2UpO1xuICB9XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjb21wb25lbnQ6cmVxdWVzdC1wYXNzd29yZC1yZXNldCcsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplcixcbiAgYWZ0ZXI6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IFJlc2V0UGFzc3dvcmRGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3Jlc2V0LXBhc3N3b3JkLWZvcm0nO1xuaW1wb3J0IG1vdW50IGZyb20gJ21pc2Fnby91dGlscy9tb3VudC1jb21wb25lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldC1wYXNzd29yZC1mb3JtLW1vdW50JykpIHtcbiAgICBtb3VudChSZXNldFBhc3N3b3JkRm9ybSwgJ3Jlc2V0LXBhc3N3b3JkLWZvcm0tbW91bnQnLCBmYWxzZSk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2NvbXBvbmVudDpyZXNldC1wYXNzd29yZC1mb3JtJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHsgU25hY2tiYXIsIHNlbGVjdCB9IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3NuYWNrYmFyJztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIG1vdW50KGNvbm5lY3Qoc2VsZWN0KShTbmFja2JhciksICdzbmFja2Jhci1tb3VudCcpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnY29tcG9uZW50OnNuYWNrYmFyJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3NuYWNrYmFyJ1xufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgcmVkdWNlciwgeyBpbml0aWFsU3RhdGUgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvc25hY2tiYXInO1xuaW1wb3J0IHN0b3JlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zdG9yZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuICBzdG9yZS5hZGRSZWR1Y2VyKCdzbmFja2JhcicsIHJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdyZWR1Y2VyOnNuYWNrYmFyJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBiZWZvcmU6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIHNuYWNrYmFyLmluaXQoc3RvcmUpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnc25hY2tiYXInLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgc3RvcmUuaW5pdCgpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnc3RvcmUnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGJlZm9yZTogJ19lbmQnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCByZWR1Y2VyLCB7IGluaXRpYWxTdGF0ZSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy90aWNrJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgc3RvcmUuYWRkUmVkdWNlcigndGljaycsIHJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdyZWR1Y2VyOnRpY2snLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGJlZm9yZTogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgeyBkb1RpY2sgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvdGljayc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcblxuY29uc3QgVElDS19QRVJJT0QgPSA1MCAqIDEwMDA7IC8vZG8gdGhlIHRpY2sgZXZlcnkgNTBzXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuICB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gICAgc3RvcmUuZGlzcGF0Y2goZG9UaWNrKCkpO1xuICB9LCBUSUNLX1BFUklPRCk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICd0aWNrLXN0YXJ0JyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHsgVXNlck1lbnUsIENvbXBhY3RVc2VyTWVudSwgc2VsZWN0IH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlci1tZW51L3Jvb3QnO1xuaW1wb3J0IG1vdW50IGZyb20gJ21pc2Fnby91dGlscy9tb3VudC1jb21wb25lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgbW91bnQoY29ubmVjdChzZWxlY3QpKFVzZXJNZW51KSwgJ3VzZXItbWVudS1tb3VudCcpO1xuICBtb3VudChjb25uZWN0KHNlbGVjdCkoQ29tcGFjdFVzZXJNZW51KSwgJ3VzZXItbWVudS1jb21wYWN0LW1vdW50Jyk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjb21wb25lbnQ6dXNlci1tZW51JyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgaW5jbHVkZSBmcm9tICdtaXNhZ28vc2VydmljZXMvaW5jbHVkZSc7XG5pbXBvcnQgenhjdmJuIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy96eGN2Ym4nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgenhjdmJuLmluaXQoaW5jbHVkZSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICd6eGN2Ym4nLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXJcbn0pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZWZyZXNoKCkge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgfVxuXG4gIGdldE1lc3NhZ2UoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2lnbmVkSW4pIHtcbiAgICAgIHJldHVybiBpbnRlcnBvbGF0ZShcbiAgICAgICAgZ2V0dGV4dChcIllvdSBoYXZlIHNpZ25lZCBpbiBhcyAlKHVzZXJuYW1lKXMuIFBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIGJlZm9yZSBjb250aW51aW5nLlwiKSxcbiAgICAgICAge3VzZXJuYW1lOiB0aGlzLnByb3BzLnNpZ25lZEluLnVzZXJuYW1lfSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnNpZ25lZE91dCkge1xuICAgICAgcmV0dXJuIGludGVycG9sYXRlKFxuICAgICAgICBnZXR0ZXh0KFwiJSh1c2VybmFtZSlzLCB5b3UgaGF2ZSBiZWVuIHNpZ25lZCBvdXQuIFBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIGJlZm9yZSBjb250aW51aW5nLlwiKSxcbiAgICAgICAge3VzZXJuYW1lOiB0aGlzLnByb3BzLnVzZXIudXNlcm5hbWV9LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRDbGFzc05hbWUoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc2lnbmVkSW4gfHwgdGhpcy5wcm9wcy5zaWduZWRPdXQpIHtcbiAgICAgIHJldHVybiBcImF1dGgtbWVzc2FnZSBzaG93XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcImF1dGgtbWVzc2FnZVwiO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cImxlYWRcIj57dGhpcy5nZXRNZXNzYWdlKCl9PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5yZWZyZXNofT5cbiAgICAgICAgICAgIHtnZXR0ZXh0KFwiUmVsb2FkIHBhZ2VcIil9XG4gICAgICAgICAgPC9idXR0b24+IDxzcGFuIGNsYXNzTmFtZT1cImhpZGRlbi14cyBoaWRkZW4tc20gdGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAge2dldHRleHQoXCJvciBwcmVzcyBGNSBrZXkuXCIpfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdChzdGF0ZSkge1xuICByZXR1cm4ge1xuICAgIHVzZXI6IHN0YXRlLmF1dGgudXNlcixcbiAgICBzaWduZWRJbjogc3RhdGUuYXV0aC5zaWduZWRJbixcbiAgICBzaWduZWRPdXQ6IHN0YXRlLmF1dGguc2lnbmVkT3V0XG4gIH07XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuY29uc3QgQkFTRV9VUkwgPSAkKCdiYXNlJykuYXR0cignaHJlZicpICsgJ3VzZXItYXZhdGFyLyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0U3JjKCkge1xuICAgIGxldCBzaXplID0gdGhpcy5wcm9wcy5zaXplIHx8IDEwMDsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG4gICAgbGV0IHVybCA9IEJBU0VfVVJMO1xuXG4gICAgaWYgKHRoaXMucHJvcHMudXNlciAmJiB0aGlzLnByb3BzLnVzZXIuaWQpIHtcbiAgICAgIC8vIGp1c3QgYXZhdGFyIGhhc2gsIHNpemUgYW5kIHVzZXIgaWRcbiAgICAgIHVybCArPSB0aGlzLnByb3BzLnVzZXIuYXZhdGFyX2hhc2ggKyAnLycgKyBzaXplICsgJy8nICsgdGhpcy5wcm9wcy51c2VyLmlkICsgJy5wbmcnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBqdXN0IGFwcGVuZCBhdmF0YXIgc2l6ZSB0byBmaWxlIHRvIHByb2R1Y2Ugbm8tYXZhdGFyIHBsYWNlaG9sZGVyXG4gICAgICB1cmwgKz0gc2l6ZSArICcucG5nJztcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGltZyBzcmM9e3RoaXMuZ2V0U3JjKCl9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNsYXNzTmFtZSB8fCAndXNlci1hdmF0YXInfVxuICAgICAgICAgICAgICAgIHRpdGxlPXtnZXR0ZXh0KFwiVXNlciBhdmF0YXJcIil9Lz47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuIiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRSZWFzb25NZXNzYWdlKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICBpZiAodGhpcy5wcm9wcy5tZXNzYWdlLmh0bWwpIHtcbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImxlYWRcIlxuICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tfX2h0bWw6IHRoaXMucHJvcHMubWVzc2FnZS5odG1sfX0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8cCBjbGFzc05hbWU9XCJsZWFkXCI+e3RoaXMucHJvcHMubWVzc2FnZS5wbGFpbn08L3A+O1xuICAgIH1cbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG5cbiAgZ2V0RXhwaXJhdGlvbk1lc3NhZ2UoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuZXhwaXJlcykge1xuICAgICAgaWYgKHRoaXMucHJvcHMuZXhwaXJlcy5pc0FmdGVyKG1vbWVudCgpKSkge1xuICAgICAgICByZXR1cm4gaW50ZXJwb2xhdGUoXG4gICAgICAgICAgZ2V0dGV4dChcIlRoaXMgYmFuIGV4cGlyZXMgJShleHBpcmVzX29uKXMuXCIpLFxuICAgICAgICAgIHsnZXhwaXJlc19vbic6IHRoaXMucHJvcHMuZXhwaXJlcy5mcm9tTm93KCl9LFxuICAgICAgICAgIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGdldHRleHQoXCJUaGlzIGJhbiBoYXMgZXhwaXJlZC5cIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiVGhpcyBiYW4gaXMgcGVybWFuZW50LlwiKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInBhZ2UgcGFnZS1lcnJvciBwYWdlLWVycm9yLWJhbm5lZFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLXBhbmVsXCI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtaWNvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPmhpZ2hsaWdodF9vZmY8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWJvZHlcIj5cbiAgICAgICAgICAgIHt0aGlzLmdldFJlYXNvbk1lc3NhZ2UoKX1cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm1lc3NhZ2UtZm9vdG5vdGVcIj5cbiAgICAgICAgICAgICAge3RoaXMuZ2V0RXhwaXJhdGlvbk1lc3NhZ2UoKX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2FkZXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvbG9hZGVyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1dHRvbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJ2J0biAnICsgdGhpcy5wcm9wcy5jbGFzc05hbWU7XG4gICAgbGV0IGRpc2FibGVkID0gdGhpcy5wcm9wcy5kaXNhYmxlZDtcblxuICAgIGlmICh0aGlzLnByb3BzLmxvYWRpbmcpIHtcbiAgICAgIGNsYXNzTmFtZSArPSAnIGJ0bi1sb2FkaW5nJztcbiAgICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxidXR0b24gdHlwZT17dGhpcy5wcm9wcy5vbkNsaWNrID8gJ2J1dHRvbicgOiAnc3VibWl0J31cbiAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrfT5cbiAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAge3RoaXMucHJvcHMubG9hZGluZyA/IDxMb2FkZXIgLz4gOiBudWxsfVxuICAgIDwvYnV0dG9uPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cblxuQnV0dG9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lOiBcImJ0bi1kZWZhdWx0XCIsXG5cbiAgdHlwZTogXCJzdWJtaXRcIixcblxuICBsb2FkaW5nOiBmYWxzZSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuXG4gIG9uQ2xpY2s6IG51bGxcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEF2YXRhciBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9hdmF0YXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBCdXR0b24gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYnV0dG9uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgTG9hZGVyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2xvYWRlcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGNhbGxBcGkoYXZhdGFyVHlwZSkge1xuICAgIGlmICh0aGlzLnN0YXRlLmlzTG9hZGluZykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgJ2lzTG9hZGluZyc6IHRydWVcbiAgICB9KTtcblxuICAgIGFqYXgucG9zdCh0aGlzLnByb3BzLnVzZXIuYXZhdGFyX2FwaV91cmwsIHtcbiAgICAgIGF2YXRhcjogYXZhdGFyVHlwZVxuICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICBzbmFja2Jhci5zdWNjZXNzKHJlc3BvbnNlLmRldGFpbCk7XG4gICAgICB0aGlzLnByb3BzLnVwZGF0ZUF2YXRhcihyZXNwb25zZS5hdmF0YXJfaGFzaCwgcmVzcG9uc2Uub3B0aW9ucyk7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAnaXNMb2FkaW5nJzogZmFsc2VcbiAgICAgIH0pO1xuICAgIH0sIChyZWplY3Rpb24pID0+IHtcbiAgICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgc25hY2tiYXIuZXJyb3IocmVqZWN0aW9uLmRldGFpbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IocmVqZWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICdpc0xvYWRpbmcnOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIHNldEdyYXZhdGFyID0gKCkgPT4ge1xuICAgIHRoaXMuY2FsbEFwaSgnZ3JhdmF0YXInKTtcbiAgfTtcblxuICBzZXRHZW5lcmF0ZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5jYWxsQXBpKCdnZW5lcmF0ZWQnKTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBnZXRHcmF2YXRhckJ1dHRvbigpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zLmdyYXZhdGFyKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPEJ1dHRvbiBvbkNsaWNrPXt0aGlzLnNldEdyYXZhdGFyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1kZWZhdWx0IGJ0bi1ibG9ja1wiPlxuICAgICAgICB7Z2V0dGV4dChcIkRvd25sb2FkIG15IEdyYXZhdGFyXCIpfVxuICAgICAgPC9CdXR0b24+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXZhdGFyUHJldmlldygpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5pc0xvYWRpbmcpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImF2YXRhci1wcmV2aWV3IHByZXZpZXctbG9hZGluZ1wiPlxuICAgICAgICA8QXZhdGFyIHVzZXI9e3RoaXMucHJvcHMudXNlcn0gc2l6ZT1cIjIwMFwiIC8+XG4gICAgICAgIDxMb2FkZXIgLz5cbiAgICAgIDwvZGl2PjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImF2YXRhci1wcmV2aWV3XCI+XG4gICAgICAgIDxBdmF0YXIgdXNlcj17dGhpcy5wcm9wcy51c2VyfSBzaXplPVwiMjAwXCIgLz5cbiAgICAgIDwvZGl2PjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1ib2R5IG1vZGFsLWF2YXRhci1pbmRleFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbWQtNVwiPlxuXG4gICAgICAgICAge3RoaXMuZ2V0QXZhdGFyUHJldmlldygpfVxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC03XCI+XG5cbiAgICAgICAgICB7dGhpcy5nZXRHcmF2YXRhckJ1dHRvbigpfVxuXG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXt0aGlzLnNldEdlbmVyYXRlZH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1kZWZhdWx0IGJ0bi1ibG9ja1wiPlxuICAgICAgICAgICAge2dldHRleHQoXCJHZW5lcmF0ZSBteSBpbmRpdmlkdWFsIGF2YXRhclwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBBdmF0YXJJbmRleCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9jaGFuZ2UtYXZhdGFyL2luZGV4JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgTG9hZGVyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL21vZGFsLWxvYWRlcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHsgdXBkYXRlQXZhdGFyIH0gZnJvbSAnbWlzYWdvL3JlZHVjZXJzL3VzZXJzJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VBdmF0YXJFcnJvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldEVycm9yUmVhc29uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnJlYXNvbikge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxwIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7X19odG1sOiB0aGlzLnByb3BzLnJlYXNvbn19IC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtaWNvblwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgcmVtb3ZlX2NpcmNsZV9vdXRsaW5lXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWJvZHlcIj5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwibGVhZFwiPlxuICAgICAgICAgIHt0aGlzLnByb3BzLm1lc3NhZ2V9XG4gICAgICAgIDwvcD5cbiAgICAgICAge3RoaXMuZ2V0RXJyb3JSZWFzb24oKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgUHJvbWlzZS5hbGwoW1xuICAgICAgYWpheC5nZXQobWlzYWdvLmdldCgndXNlcicpLmF2YXRhcl9hcGlfdXJsKVxuICAgIF0pLnRoZW4oKHJlc29sdXRpb25zKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgJ2NvbXBvbmVudCc6IEF2YXRhckluZGV4LFxuICAgICAgICAnb3B0aW9ucyc6IHJlc29sdXRpb25zWzBdXG4gICAgICB9KTtcbiAgICB9LCAocmVqZWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLnNob3dFcnJvcihyZWplY3Rpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBzaG93RXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGVycm9yXG4gICAgfSk7XG4gIH07XG5cbiAgdXBkYXRlQXZhdGFyID0gKGF2YXRhckhhc2gsIG9wdGlvbnMpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaCh1cGRhdGVBdmF0YXIodGhpcy5wcm9wcy51c2VyLCBhdmF0YXJIYXNoKSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICdjb21wb25lbnQnOiBBdmF0YXJJbmRleCxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgfTtcblxuICBzaG93SW5kZXggPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAnY29tcG9uZW50JzogQXZhdGFySW5kZXhcbiAgICB9KTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBnZXRCb2R5KCkge1xuICAgIGlmICh0aGlzLnN0YXRlKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8Q2hhbmdlQXZhdGFyRXJyb3IgbWVzc2FnZT17dGhpcy5zdGF0ZS5lcnJvci5kZXRhaWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uPXt0aGlzLnN0YXRlLmVycm9yLnJlYXNvbn0gLz47XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8dGhpcy5zdGF0ZS5jb21wb25lbnQgb3B0aW9ucz17dGhpcy5zdGF0ZS5vcHRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3RoaXMucHJvcHMudXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVBdmF0YXI9e3RoaXMudXBkYXRlQXZhdGFyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dJbmRleD17dGhpcy5zaG93SW5kZXh9IC8+O1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPExvYWRlciAvPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lKCkge1xuICAgaWYgKHRoaXMuc3RhdGUgJiYgdGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgcmV0dXJuIFwibW9kYWwtZGlhbG9nIG1vZGFsLW1lc3NhZ2UgbW9kYWwtY2hhbmdlLWF2YXRhclwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJtb2RhbC1kaWFsb2cgbW9kYWwtY2hhbmdlLWF2YXRhclwiO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfVxuICAgICAgICAgICAgICAgIHJvbGU9XCJkb2N1bWVudFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXR0ZXh0KFwiQ2xvc2VcIil9PlxuICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8aDQgY2xhc3NOYW1lPVwibW9kYWwtdGl0bGVcIj57Z2V0dGV4dChcIkNoYW5nZSB5b3VyIGF2YXRhclwiKX08L2g0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7dGhpcy5nZXRCb2R5KCl9XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3Qoc3RhdGUpIHtcbiAgcmV0dXJuIHtcbiAgICAndXNlcic6IHN0YXRlLmF1dGgudXNlclxuICB9O1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBpc1ZhbGlkYXRlZCgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucHJvcHMudmFsaWRhdGlvbiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgfVxuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJ2Zvcm0tZ3JvdXAnO1xuICAgIGlmICh0aGlzLmlzVmFsaWRhdGVkKCkpIHtcbiAgICAgIGNsYXNzTmFtZSArPSAnIGhhcy1mZWVkYmFjayc7XG4gICAgICBpZiAodGhpcy5wcm9wcy52YWxpZGF0aW9uID09PSBudWxsKSB7XG4gICAgICAgIGNsYXNzTmFtZSArPSAnIGhhcy1zdWNjZXNzJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsYXNzTmFtZSArPSAnIGhhcy1lcnJvcic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICBnZXRGZWVkYmFjaygpIHtcbiAgICBpZiAodGhpcy5wcm9wcy52YWxpZGF0aW9uKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJoZWxwLWJsb2NrIGVycm9yc1wiPlxuICAgICAgICB7dGhpcy5wcm9wcy52YWxpZGF0aW9uLm1hcCgoZXJyb3IsIGkpID0+IHtcbiAgICAgICAgICByZXR1cm4gPHAga2V5PXt0aGlzLnByb3BzLmZvciArICdGZWVkYmFja0l0ZW0nICsgaX0+e2Vycm9yfTwvcD47XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmVlZGJhY2tJY29uKCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWRhdGVkKCkpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uIGZvcm0tY29udHJvbC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCIga2V5PXt0aGlzLnByb3BzLmZvciArICdGZWVkYmFja0ljb24nfT5cbiAgICAgICAge3RoaXMucHJvcHMudmFsaWRhdGlvbiA/ICdjbGVhcicgOiAnY2hlY2snfVxuICAgICAgPC9zcGFuPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldEZlZWRiYWNrRGVzY3JpcHRpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZGF0ZWQoKSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxzcGFuIGlkPXt0aGlzLnByb3BzLmZvciArICdfc3RhdHVzJ30gY2xhc3NOYW1lPVwic3Itb25seVwiPlxuICAgICAgICB7dGhpcy5wcm9wcy52YWxpZGF0aW9uID8gZ2V0dGV4dCgnKGVycm9yKScpIDogZ2V0dGV4dCgnKHN1Y2Nlc3MpJyl9XG4gICAgICA8L3NwYW4+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0SGVscFRleHQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaGVscFRleHQpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8cCBjbGFzc05hbWU9XCJoZWxwLWJsb2NrXCI+e3RoaXMucHJvcHMuaGVscFRleHR9PC9wPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfT5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9eydjb250cm9sLWxhYmVsICcgKyAodGhpcy5wcm9wcy5sYWJlbENsYXNzIHx8ICcnKX1cbiAgICAgICAgICAgICBodG1sRm9yPXt0aGlzLnByb3BzLmZvciB8fCAnJ30+XG4gICAgICAgIHt0aGlzLnByb3BzLmxhYmVsfTpcbiAgICAgIDwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jb250cm9sQ2xhc3MgfHwgJyd9PlxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAge3RoaXMuZ2V0RmVlZGJhY2tJY29uKCl9XG4gICAgICAgIHt0aGlzLmdldEZlZWRiYWNrRGVzY3JpcHRpb24oKX1cbiAgICAgICAge3RoaXMuZ2V0RmVlZGJhY2soKX1cbiAgICAgICAge3RoaXMuZ2V0SGVscFRleHQoKX1cbiAgICAgICAge3RoaXMucHJvcHMuZXh0cmEgfHwgbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZXF1aXJlZCB9IGZyb20gJ21pc2Fnby91dGlscy92YWxpZGF0b3JzJztcblxubGV0IHZhbGlkYXRlUmVxdWlyZWQgPSByZXF1aXJlZCgpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHZhbGlkYXRlKCkge1xuICAgIGxldCBlcnJvcnMgPSB7fTtcblxuICAgIGxldCB2YWxpZGF0b3JzID0ge1xuICAgICAgcmVxdWlyZWQ6IHRoaXMuc3RhdGUudmFsaWRhdG9ycy5yZXF1aXJlZCB8fCB0aGlzLnN0YXRlLnZhbGlkYXRvcnMsXG4gICAgICBvcHRpb25hbDogdGhpcy5zdGF0ZS52YWxpZGF0b3JzLm9wdGlvbmFsIHx8IHt9XG4gICAgfTtcblxuICAgIGxldCB2YWxpZGF0ZWRGaWVsZHMgPSBbXTtcblxuICAgIC8vIGFkZCByZXF1aXJlZCBmaWVsZHMgdG8gdmFsaWRhdGlvblxuICAgIGZvciAobGV0IG5hbWUgaW4gdmFsaWRhdG9ycy5yZXF1aXJlZCkge1xuICAgICAgaWYgKHZhbGlkYXRvcnMucmVxdWlyZWQuaGFzT3duUHJvcGVydHkobmFtZSkgJiZcbiAgICAgICAgICB2YWxpZGF0b3JzLnJlcXVpcmVkW25hbWVdKSB7XG4gICAgICAgIHZhbGlkYXRlZEZpZWxkcy5wdXNoKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZCBvcHRpb25hbCBmaWVsZHMgdG8gdmFsaWRhdGlvblxuICAgIGZvciAobGV0IG5hbWUgaW4gdmFsaWRhdG9ycy5vcHRpb25hbCkge1xuICAgICAgaWYgKHZhbGlkYXRvcnMub3B0aW9uYWwuaGFzT3duUHJvcGVydHkobmFtZSkgJiZcbiAgICAgICAgICB2YWxpZGF0b3JzLm9wdGlvbmFsW25hbWVdKSB7XG4gICAgICAgIHZhbGlkYXRlZEZpZWxkcy5wdXNoKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHZhbGlkYXRlIGZpZWxkcyB2YWx1ZXNcbiAgICBmb3IgKGxldCBpIGluIHZhbGlkYXRlZEZpZWxkcykge1xuICAgICAgbGV0IG5hbWUgPSB2YWxpZGF0ZWRGaWVsZHNbaV07XG4gICAgICBsZXQgZmllbGRFcnJvcnMgPSB0aGlzLnZhbGlkYXRlRmllbGQobmFtZSwgdGhpcy5zdGF0ZVtuYW1lXSk7XG5cbiAgICAgIGlmIChmaWVsZEVycm9ycyA9PT0gbnVsbCkge1xuICAgICAgICBlcnJvcnNbbmFtZV0gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZEVycm9ycykge1xuICAgICAgICBlcnJvcnNbbmFtZV0gPSBmaWVsZEVycm9ycztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgaXNWYWxpZCgpIHtcbiAgICBsZXQgZXJyb3JzID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIGZvciAobGV0IGZpZWxkIGluIGVycm9ycykge1xuICAgICAgaWYgKGVycm9ycy5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgaWYgKGVycm9yc1tmaWVsZF0gIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlRmllbGQobmFtZSwgdmFsdWUpIHtcbiAgICBsZXQgZXJyb3JzID0gW107XG5cbiAgICBsZXQgdmFsaWRhdG9ycyA9IHtcbiAgICAgIHJlcXVpcmVkOiAodGhpcy5zdGF0ZS52YWxpZGF0b3JzLnJlcXVpcmVkIHx8IHRoaXMuc3RhdGUudmFsaWRhdG9ycylbbmFtZV0sXG4gICAgICBvcHRpb25hbDogKHRoaXMuc3RhdGUudmFsaWRhdG9ycy5vcHRpb25hbCB8fCB7fSlbbmFtZV1cbiAgICB9O1xuXG4gICAgbGV0IHJlcXVpcmVkRXJyb3IgPSB2YWxpZGF0ZVJlcXVpcmVkKHZhbHVlKSB8fCBmYWxzZTtcblxuICAgIGlmICh2YWxpZGF0b3JzLnJlcXVpcmVkKSB7XG4gICAgICBpZiAocmVxdWlyZWRFcnJvcikge1xuICAgICAgICBlcnJvcnMgPSBbcmVxdWlyZWRFcnJvcl07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBpIGluIHZhbGlkYXRvcnMucmVxdWlyZWQpIHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGlvbkVycm9yID0gdmFsaWRhdG9ycy5yZXF1aXJlZFtpXSh2YWx1ZSk7XG4gICAgICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICAgICAgZXJyb3JzLnB1c2godmFsaWRhdGlvbkVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPyBlcnJvcnMgOiBudWxsO1xuICAgIH0gZWxzZSBpZiAocmVxdWlyZWRFcnJvciA9PT0gZmFsc2UgJiYgdmFsaWRhdG9ycy5vcHRpb25hbCkge1xuICAgICAgZm9yIChsZXQgaSBpbiB2YWxpZGF0b3JzLm9wdGlvbmFsKSB7XG4gICAgICAgIGxldCB2YWxpZGF0aW9uRXJyb3IgPSB2YWxpZGF0b3JzLm9wdGlvbmFsW2ldKHZhbHVlKTtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICAgIGVycm9ycy5wdXNoKHZhbGlkYXRpb25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVycm9ycy5sZW5ndGggPyBlcnJvcnMgOiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTsgLy8gZmFsc2UgPT09IGZpZWxkIHdhc24ndCB2YWxpZGF0ZWRcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgYmluZElucHV0ID0gKG5hbWUpID0+IHtcbiAgICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgICBsZXQgbmV3U3RhdGUgPSB7fTtcbiAgICAgIG5ld1N0YXRlW25hbWVdID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgICBsZXQgZm9ybUVycm9ycyA9IHRoaXMuc3RhdGUuZXJyb3JzIHx8IHt9O1xuICAgICAgZm9ybUVycm9yc1tuYW1lXSA9IHRoaXMudmFsaWRhdGVGaWVsZChuYW1lLCBuZXdTdGF0ZVtuYW1lXSk7XG4gICAgICBuZXdTdGF0ZS5lcnJvcnMgPSBmb3JtRXJyb3JzO1xuXG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICB9XG4gIH07XG5cbiAgY2xlYW4oKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzZW5kKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaGFuZGxlU3VjY2VzcyhzdWNjZXNzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IocmVqZWN0aW9uKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaGFuZGxlU3VibWl0ID0gKGV2ZW50KSA9PiB7XG4gICAgLy8gd2UgZG9uJ3QgcmVsb2FkIHBhZ2Ugb24gc3VibWlzc2lvbnNcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgaWYgKHRoaXMuc3RhdGUuaXNMb2FkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2xlYW4oKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7J2lzTG9hZGluZyc6IHRydWV9KTtcbiAgICAgIGxldCBwcm9taXNlID0gdGhpcy5zZW5kKCk7XG5cbiAgICAgIGlmIChwcm9taXNlKSB7XG4gICAgICAgIHByb21pc2UudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeydpc0xvYWRpbmcnOiBmYWxzZX0pO1xuICAgICAgICAgIHRoaXMuaGFuZGxlU3VjY2VzcyhzdWNjZXNzKTtcbiAgICAgICAgfSwgKHJlamVjdGlvbikgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeydpc0xvYWRpbmcnOiBmYWxzZX0pO1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IocmVqZWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsnaXNMb2FkaW5nJzogZmFsc2V9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImxvYWRlclwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2FkZXItc3Bpbm5pbmctd2hlZWxcIj48L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2FkZXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvbG9hZGVyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1ib2R5IG1vZGFsLWxvYWRlclwiPlxuICAgICAgPExvYWRlciAvPlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgenhjdmJuIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy96eGN2Ym4nO1xuXG5leHBvcnQgY29uc3QgU1RZTEVTID0gW1xuICAncHJvZ3Jlc3MtYmFyLWRhbmdlcicsXG4gICdwcm9ncmVzcy1iYXItd2FybmluZycsXG4gICdwcm9ncmVzcy1iYXItd2FybmluZycsXG4gICdwcm9ncmVzcy1iYXItcHJpbWFyeScsXG4gICdwcm9ncmVzcy1iYXItc3VjY2Vzcydcbl07XG5cbmV4cG9ydCBjb25zdCBMQUJFTFMgPSBbXG4gIGdldHRleHQoXCJFbnRlcmVkIHBhc3N3b3JkIGlzIHZlcnkgd2Vhay5cIiksXG4gIGdldHRleHQoXCJFbnRlcmVkIHBhc3N3b3JkIGlzIHdlYWsuXCIpLFxuICBnZXR0ZXh0KFwiRW50ZXJlZCBwYXNzd29yZCBpcyBhdmVyYWdlLlwiKSxcbiAgZ2V0dGV4dChcIkVudGVyZWQgcGFzc3dvcmQgaXMgc3Ryb25nLlwiKSxcbiAgZ2V0dGV4dChcIkVudGVyZWQgcGFzc3dvcmQgaXMgdmVyeSBzdHJvbmcuXCIpXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5fc2NvcmUgPSAwO1xuICAgIHRoaXMuX3Bhc3N3b3JkID0gbnVsbDtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXTtcbiAgfVxuXG4gIGdldFNjb3JlKHBhc3N3b3JkLCBpbnB1dHMpIHtcbiAgICBsZXQgY2FjaGVTdGFsZSA9IGZhbHNlO1xuXG4gICAgaWYgKHBhc3N3b3JkLnRyaW0oKSAhPT0gdGhpcy5fcGFzc3dvcmQpIHtcbiAgICAgIGNhY2hlU3RhbGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpbnB1dHMubGVuZ3RoICE9PSB0aGlzLl9pbnB1dHMubGVuZ3RoKSB7XG4gICAgICBjYWNoZVN0YWxlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRzLm1hcCgodmFsdWUsIGkpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLnRyaW0oKSAhPT0gdGhpcy5faW5wdXRzW2ldKSB7XG4gICAgICAgICAgY2FjaGVTdGFsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjYWNoZVN0YWxlKSB7XG4gICAgICB0aGlzLl9zY29yZSA9IHp4Y3Zibi5zY29yZVBhc3N3b3JkKHBhc3N3b3JkLCBpbnB1dHMpO1xuICAgICAgdGhpcy5fcGFzc3dvcmQgPSBwYXNzd29yZC50cmltKCk7XG4gICAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHMubWFwKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50cmltKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc2NvcmU7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIGxldCBzY29yZSA9IHRoaXMuZ2V0U2NvcmUodGhpcy5wcm9wcy5wYXNzd29yZCwgdGhpcy5wcm9wcy5pbnB1dHMpO1xuXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiaGVscC1ibG9jayBwYXNzd29yZC1zdHJlbmd0aFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcm9ncmVzc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJwcm9ncmVzcy1iYXIgXCIgKyBTVFlMRVNbc2NvcmVdfVxuICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICgyMCArICgyMCAqIHNjb3JlKSkgKyAnJSd9fVxuICAgICAgICAgICAgIHJvbGU9XCJwcm9ncmVzcy1iYXJcIlxuICAgICAgICAgICAgIGFyaWEtdmFsdWVub3c9e3Njb3JlfVxuICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCJcbiAgICAgICAgICAgICBhcmlhLXZhbHVlbWF4PVwiNFwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgIHtMQUJFTFNbc2NvcmVdfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc21hbGxcIj5cbiAgICAgICAge0xBQkVMU1tzY29yZV19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IExvYWRlciBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9sb2FkZXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBSZWdpc3Rlck1vZGFsIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3JlZ2lzdGVyLmpzJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgY2FwdGNoYSBmcm9tICdtaXNhZ28vc2VydmljZXMvY2FwdGNoYSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1vZGFsIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2RhbCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IHp4Y3ZibiBmcm9tICdtaXNhZ28vc2VydmljZXMvenhjdmJuJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlLFxuICAgICAgJ2lzTG9hZGVkJzogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBzaG93UmVnaXN0ZXJNb2RhbCA9ICgpID0+IHtcbiAgICBpZiAobWlzYWdvLmdldCgnU0VUVElOR1MnKS5hY2NvdW50X2FjdGl2YXRpb24gPT09ICdjbG9zZWQnKSB7XG4gICAgICBzbmFja2Jhci5pbmZvKGdldHRleHQoXCJOZXcgcmVnaXN0cmF0aW9ucyBhcmUgY3VycmVudGx5IGRpc2FibGVkLlwiKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmlzTG9hZGVkKSB7XG4gICAgICBtb2RhbC5zaG93KFJlZ2lzdGVyTW9kYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgJ2lzTG9hZGluZyc6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICBQcm9taXNlLmFsbChbXG4gICAgICAgIGNhcHRjaGEubG9hZCgpLFxuICAgICAgICB6eGN2Ym4ubG9hZCgpXG4gICAgICBdKS50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmlzTG9hZGVkKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAnaXNMb2FkaW5nJzogZmFsc2UsXG4gICAgICAgICAgICAnaXNMb2FkZWQnOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbW9kYWwuc2hvdyhSZWdpc3Rlck1vZGFsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBnZXRDbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2xhc3NOYW1lICsgKHRoaXMuc3RhdGUuaXNMb2FkaW5nID8gJyBidG4tbG9hZGluZycgOiAnJyk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXt0aGlzLnNob3dSZWdpc3Rlck1vZGFsfVxuICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2J0biAnICsgdGhpcy5nZXRDbGFzc05hbWUoKX1cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRlZH0+XG4gICAgICB7Z2V0dGV4dChcIlJlZ2lzdGVyXCIpfVxuICAgICAge3RoaXMuc3RhdGUuaXNMb2FkaW5nID8gPExvYWRlciAvPiA6IG51bGwgfVxuICAgIDwvYnV0dG9uPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IEZvcm1Hcm91cCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtLWdyb3VwJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgUGFzc3dvcmRTdHJlbmd0aCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9wYXNzd29yZC1zdHJlbmd0aCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnO1xuaW1wb3J0IGF1dGggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2F1dGgnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBjYXB0Y2hhIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9jYXB0Y2hhJztcbmltcG9ydCBtb2RhbCBmcm9tICdtaXNhZ28vc2VydmljZXMvbW9kYWwnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7XG5pbXBvcnQgc2hvd0Jhbm5lZFBhZ2UgZnJvbSAnbWlzYWdvL3V0aWxzL2Jhbm5lZC1wYWdlJztcbmltcG9ydCAqIGFzIHZhbGlkYXRvcnMgZnJvbSAnbWlzYWdvL3V0aWxzL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJGb3JtIGV4dGVuZHMgRm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICdpc0xvYWRpbmcnOiBmYWxzZSxcblxuICAgICAgJ3VzZXJuYW1lJzogJycsXG4gICAgICAnZW1haWwnOiAnJyxcbiAgICAgICdwYXNzd29yZCc6ICcnLFxuICAgICAgJ2NhcHRjaGEnOiAnJyxcblxuICAgICAgJ3ZhbGlkYXRvcnMnOiB7XG4gICAgICAgICd1c2VybmFtZSc6IFtcbiAgICAgICAgICB2YWxpZGF0b3JzLnVzZXJuYW1lQ29udGVudCgpLFxuICAgICAgICAgIHZhbGlkYXRvcnMudXNlcm5hbWVNaW5MZW5ndGgobWlzYWdvLmdldCgnU0VUVElOR1MnKSksXG4gICAgICAgICAgdmFsaWRhdG9ycy51c2VybmFtZU1heExlbmd0aChtaXNhZ28uZ2V0KCdTRVRUSU5HUycpKVxuICAgICAgICBdLFxuICAgICAgICAnZW1haWwnOiBbXG4gICAgICAgICAgdmFsaWRhdG9ycy5lbWFpbCgpXG4gICAgICAgIF0sXG4gICAgICAgICdwYXNzd29yZCc6IFtcbiAgICAgICAgICB2YWxpZGF0b3JzLnBhc3N3b3JkTWluTGVuZ3RoKG1pc2Fnby5nZXQoJ1NFVFRJTkdTJykpXG4gICAgICAgIF0sXG4gICAgICAgICdjYXB0Y2hhJzogY2FwdGNoYS52YWxpZGF0b3IoKVxuICAgICAgfSxcblxuICAgICAgJ2Vycm9ycyc6IHt9XG4gICAgfTtcbiAgfVxuXG4gIGNsZWFuKCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmVycm9yKGdldHRleHQoXCJGb3JtIGNvbnRhaW5zIGVycm9ycy5cIikpO1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICdlcnJvcnMnOiB0aGlzLnZhbGlkYXRlKClcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNlbmQoKSB7XG4gICAgcmV0dXJuIGFqYXgucG9zdChtaXNhZ28uZ2V0KCdVU0VSU19BUEknKSwge1xuICAgICAgJ3VzZXJuYW1lJzogdGhpcy5zdGF0ZS51c2VybmFtZSxcbiAgICAgICdlbWFpbCc6IHRoaXMuc3RhdGUuZW1haWwsXG4gICAgICAncGFzc3dvcmQnOiB0aGlzLnN0YXRlLnBhc3N3b3JkLFxuICAgICAgJ2NhcHRjaGEnOiB0aGlzLnN0YXRlLmNhcHRjaGFcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN1Y2Nlc3MoYXBpUmVzcG9uc2UpIHtcbiAgICB0aGlzLnByb3BzLmNhbGxiYWNrKGFwaVJlc3BvbnNlKTtcbiAgfVxuXG4gIGhhbmRsZUVycm9yKHJlamVjdGlvbikge1xuICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDApIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAnZXJyb3JzJzogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZS5lcnJvcnMsIHJlamVjdGlvbilcbiAgICAgIH0pO1xuICAgICAgc25hY2tiYXIuZXJyb3IoZ2V0dGV4dChcIkZvcm0gY29udGFpbnMgZXJyb3JzLlwiKSk7XG4gICAgfSBlbHNlIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDMgJiYgcmVqZWN0aW9uLmJhbikge1xuICAgICAgc2hvd0Jhbm5lZFBhZ2UocmVqZWN0aW9uLmJhbik7XG4gICAgICBtb2RhbC5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmFwaUVycm9yKHJlamVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGVnYWxGb290Tm90ZSgpIHtcbiAgICBpZiAobWlzYWdvLmdldCgnVEVSTVNfT0ZfU0VSVklDRV9VUkwnKSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxhIGhyZWY9e21pc2Fnby5nZXQoJ1RFUk1TX09GX1NFUlZJQ0VfVVJMJyl9XG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgIHtnZXR0ZXh0KFwiQnkgcmVnaXN0ZXJpbmcgeW91IGFncmVlIHRvIHNpdGUncyB0ZXJtcyBhbmQgY29uZGl0aW9ucy5cIil9XG4gICAgICA8L2E+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1kaWFsb2cgbW9kYWwtcmVnaXN0ZXJcIiByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0dGV4dChcIkNsb3NlXCIpfT5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGg0IGNsYXNzTmFtZT1cIm1vZGFsLXRpdGxlXCI+e2dldHRleHQoXCJSZWdpc3RlclwiKX08L2g0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fSBjbGFzc05hbWU9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInR5cGVcIiBzdHlsZT17e2Rpc3BsYXk6ICdub25lJ319IC8+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIHN0eWxlPXt7ZGlzcGxheTogJ25vbmUnfX0gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHlcIj5cblxuICAgICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIlVzZXJuYW1lXCIpfSBmb3I9XCJpZF91c2VybmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9XCJjb2wtc20tNFwiIGNvbnRyb2xDbGFzcz1cImNvbC1zbS04XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbj17dGhpcy5zdGF0ZS5lcnJvcnMudXNlcm5hbWV9PlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImlkX3VzZXJuYW1lXCIgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJpZF91c2VybmFtZV9zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCd1c2VybmFtZScpfVxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudXNlcm5hbWV9IC8+XG4gICAgICAgICAgICA8L0Zvcm1Hcm91cD5cblxuICAgICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIkUtbWFpbFwiKX0gZm9yPVwiaWRfZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPVwiY29sLXNtLTRcIiBjb250cm9sQ2xhc3M9XCJjb2wtc20tOFwiXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb249e3RoaXMuc3RhdGUuZXJyb3JzLmVtYWlsfT5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJpZF9lbWFpbFwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiaWRfZW1haWxfc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgnZW1haWwnKX1cbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmVtYWlsfSAvPlxuICAgICAgICAgICAgPC9Gb3JtR3JvdXA+XG5cbiAgICAgICAgICAgIDxGb3JtR3JvdXAgbGFiZWw9e2dldHRleHQoXCJQYXNzd29yZFwiKX0gZm9yPVwiaWRfcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPVwiY29sLXNtLTRcIiBjb250cm9sQ2xhc3M9XCJjb2wtc20tOFwiXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb249e3RoaXMuc3RhdGUuZXJyb3JzLnBhc3N3b3JkfVxuICAgICAgICAgICAgICAgICAgICAgICBleHRyYT17PFBhc3N3b3JkU3RyZW5ndGggcGFzc3dvcmQ9e3RoaXMuc3RhdGUucGFzc3dvcmR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS51c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5lbWFpbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXX0gLz59ID5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGlkPVwiaWRfcGFzc3dvcmRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImlkX3Bhc3N3b3JkX3N0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ3Bhc3N3b3JkJyl9XG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5wYXNzd29yZH0gLz5cbiAgICAgICAgICAgIDwvRm9ybUdyb3VwPlxuXG4gICAgICAgICAgICB7Y2FwdGNoYS5jb21wb25lbnQoe1xuICAgICAgICAgICAgICBmb3JtOiB0aGlzLFxuICAgICAgICAgICAgICBsYWJlbENsYXNzOiBcImNvbC1zbS00XCIsXG4gICAgICAgICAgICAgIGNvbnRyb2xDbGFzczogXCJjb2wtc20tOFwiXG4gICAgICAgICAgICB9KX1cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICB7dGhpcy5nZXRMZWdhbEZvb3ROb3RlKCl9XG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5XCIgbG9hZGluZz17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9PlxuICAgICAgICAgICAgICB7Z2V0dGV4dChcIlJlZ2lzdGVyIGFjY291bnRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyQ29tcGxldGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRMZWFkKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmFjdGl2YXRpb24gPT09ICd1c2VyJykge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCIlKHVzZXJuYW1lKXMsIHlvdXIgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ1dCB5b3UgbmVlZCB0byBhY3RpdmF0ZSBpdCBiZWZvcmUgeW91IHdpbGwgYmUgYWJsZSB0byBzaWduIGluLlwiKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuYWN0aXZhdGlvbiA9PT0gJ2FkbWluJykge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCIlKHVzZXJuYW1lKXMsIHlvdXIgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ1dCBib2FyZCBhZG1pbmlzdHJhdG9yIHdpbGwgaGF2ZSB0byBhY3RpdmF0ZSBpdCBiZWZvcmUgeW91IHdpbGwgYmUgYWJsZSB0byBzaWduIGluLlwiKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdWJzY3JpcHQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWN0aXZhdGlvbiA9PT0gJ3VzZXInKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIldlIGhhdmUgc2VudCBhbiBlLW1haWwgdG8gJShlbWFpbClzIHdpdGggbGluayB0aGF0IHlvdSBoYXZlIHRvIGNsaWNrIHRvIGFjdGl2YXRlIHlvdXIgYWNjb3VudC5cIik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmFjdGl2YXRpb24gPT09ICdhZG1pbicpIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiV2Ugd2lsbCBzZW5kIGFuIGUtbWFpbCB0byAlKGVtYWlsKXMgd2hlbiB0aGlzIHRha2VzIHBsYWNlLlwiKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWRpYWxvZyBtb2RhbC1tZXNzYWdlIG1vZGFsLXJlZ2lzdGVyXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0dGV4dChcIkNsb3NlXCIpfT5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGg0IGNsYXNzTmFtZT1cIm1vZGFsLXRpdGxlXCI+e2dldHRleHQoXCJSZWdpc3RyYXRpb24gY29tcGxldGVcIil9PC9oND5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1pY29uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICAgIGluZm9fb3V0bGluZVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1ib2R5XCI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJsZWFkXCI+XG4gICAgICAgICAgICAgIHtpbnRlcnBvbGF0ZShcbiAgICAgICAgICAgICAgICB0aGlzLmdldExlYWQoKSxcbiAgICAgICAgICAgICAgICB7J3VzZXJuYW1lJzogdGhpcy5wcm9wcy51c2VybmFtZX0sIHRydWUpfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIHtpbnRlcnBvbGF0ZShcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1YnNjcmlwdCgpLFxuICAgICAgICAgICAgICAgIHsnZW1haWwnOiB0aGlzLnByb3BzLmVtYWlsfSwgdHJ1ZSl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAnY29tcGxldGUnOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIGNvbXBsZXRlUmVnaXN0cmF0aW9uID0gKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgaWYgKGFwaVJlc3BvbnNlLmFjdGl2YXRpb24gPT09ICdhY3RpdmUnKSB7XG4gICAgICBtb2RhbC5oaWRlKCk7XG4gICAgICBhdXRoLnNpZ25JbihhcGlSZXNwb25zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAnY29tcGxldGUnOiBhcGlSZXNwb25zZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgaWYgKHRoaXMuc3RhdGUuY29tcGxldGUpIHtcbiAgICAgIHJldHVybiA8UmVnaXN0ZXJDb21wbGV0ZSBhY3RpdmF0aW9uPXt0aGlzLnN0YXRlLmNvbXBsZXRlLmFjdGl2YXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU9e3RoaXMuc3RhdGUuY29tcGxldGUudXNlcm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw9e3RoaXMuc3RhdGUuY29tcGxldGUuZW1haWx9IC8+O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gPFJlZ2lzdGVyRm9ybSBjYWxsYmFjaz17dGhpcy5jb21wbGV0ZVJlZ2lzdHJhdGlvbn0vPjtcbiAgICB9XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCAqIGFzIHZhbGlkYXRvcnMgZnJvbSAnbWlzYWdvL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHNob3dCYW5uZWRQYWdlIGZyb20gJ21pc2Fnby91dGlscy9iYW5uZWQtcGFnZSc7XG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0TGlua0Zvcm0gZXh0ZW5kcyBGb3JtIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlLFxuXG4gICAgICAnZW1haWwnOiAnJyxcblxuICAgICAgJ3ZhbGlkYXRvcnMnOiB7XG4gICAgICAgICdlbWFpbCc6IFtcbiAgICAgICAgICB2YWxpZGF0b3JzLmVtYWlsKClcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjbGVhbigpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbmFja2Jhci5lcnJvcihnZXR0ZXh0KFwiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLlwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2VuZCgpIHtcbiAgICByZXR1cm4gYWpheC5wb3N0KG1pc2Fnby5nZXQoJ1NFTkRfQUNUSVZBVElPTl9BUEknKSwge1xuICAgICAgJ2VtYWlsJzogdGhpcy5zdGF0ZS5lbWFpbFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VjY2VzcyhhcGlSZXNwb25zZSkge1xuICAgIHRoaXMucHJvcHMuY2FsbGJhY2soYXBpUmVzcG9uc2UpO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IocmVqZWN0aW9uKSB7XG4gICAgaWYgKFsnYWxyZWFkeV9hY3RpdmUnLCAnaW5hY3RpdmVfYWRtaW4nXS5pbmRleE9mKHJlamVjdGlvbi5jb2RlKSA+IC0xKSB7XG4gICAgICBzbmFja2Jhci5pbmZvKHJlamVjdGlvbi5kZXRhaWwpO1xuICAgIH0gZWxzZSBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gNDAzICYmIHJlamVjdGlvbi5iYW4pIHtcbiAgICAgIHNob3dCYW5uZWRQYWdlKHJlamVjdGlvbi5iYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbmFja2Jhci5hcGlFcnJvcihyZWplY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwid2VsbCB3ZWxsLWZvcm0gd2VsbC1mb3JtLXJlcXVlc3QtYWN0aXZhdGlvbi1saW5rXCI+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17dGhpcy5oYW5kbGVTdWJtaXR9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRyb2wtaW5wdXRcIj5cblxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17Z2V0dGV4dChcIllvdXIgZS1tYWlsIGFkZHJlc3NcIil9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgnZW1haWwnKX1cbiAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5lbWFpbH0gLz5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgICAgbG9hZGluZz17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9PlxuICAgICAgICAgIHtnZXR0ZXh0KFwiU2VuZCBsaW5rXCIpfVxuICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5rU2VudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldE1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIGludGVycG9sYXRlKGdldHRleHQoXCJBY3RpdmF0aW9uIGxpbmsgd2FzIHNlbnQgdG8gJShlbWFpbClzXCIpLCB7XG4gICAgICBlbWFpbDogdGhpcy5wcm9wcy51c2VyLmVtYWlsXG4gICAgfSwgdHJ1ZSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIndlbGwgd2VsbC1mb3JtIHdlbGwtZm9ybS1yZXF1ZXN0LWFjdGl2YXRpb24tbGluayB3ZWxsLWRvbmVcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZG9uZS1tZXNzYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1pY29uXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgY2hlY2tcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtYm9keVwiPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAge3RoaXMuZ2V0TWVzc2FnZSgpfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeSBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucHJvcHMuY2FsbGJhY2t9PlxuICAgICAgICAgIHtnZXR0ZXh0KFwiUmVxdWVzdCBhbm90aGVyIGxpbmtcIil9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBjb21wbGV0ZTogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBjb21wbGV0ZSA9IChhcGlSZXNwb25zZSkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29tcGxldGU6IGFwaVJlc3BvbnNlXG4gICAgfSk7XG4gIH07XG5cbiAgcmVzZXQgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBjb21wbGV0ZTogZmFsc2VcbiAgICB9KTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIGlmICh0aGlzLnN0YXRlLmNvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gPExpbmtTZW50IHVzZXI9e3RoaXMuc3RhdGUuY29tcGxldGV9IGNhbGxiYWNrPXt0aGlzLnJlc2V0fSAvPjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDxSZXF1ZXN0TGlua0Zvcm0gY2FsbGJhY2s9e3RoaXMuY29tcGxldGV9IC8+O1xuICAgIH07XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7XG5pbXBvcnQgKiBhcyB2YWxpZGF0b3JzIGZyb20gJ21pc2Fnby91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCBzaG93QmFubmVkUGFnZSBmcm9tICdtaXNhZ28vdXRpbHMvYmFubmVkLXBhZ2UnO1xuXG5leHBvcnQgY2xhc3MgUmVxdWVzdFJlc2V0Rm9ybSBleHRlbmRzIEZvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAnaXNMb2FkaW5nJzogZmFsc2UsXG5cbiAgICAgICdlbWFpbCc6ICcnLFxuXG4gICAgICAndmFsaWRhdG9ycyc6IHtcbiAgICAgICAgJ2VtYWlsJzogW1xuICAgICAgICAgIHZhbGlkYXRvcnMuZW1haWwoKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNsZWFuKCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmVycm9yKGdldHRleHQoXCJFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuXCIpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzZW5kKCkge1xuICAgIHJldHVybiBhamF4LnBvc3QobWlzYWdvLmdldCgnU0VORF9QQVNTV09SRF9SRVNFVF9BUEknKSwge1xuICAgICAgJ2VtYWlsJzogdGhpcy5zdGF0ZS5lbWFpbFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VjY2VzcyhhcGlSZXNwb25zZSkge1xuICAgIHRoaXMucHJvcHMuY2FsbGJhY2soYXBpUmVzcG9uc2UpO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IocmVqZWN0aW9uKSB7XG4gICAgaWYgKFsnaW5hY3RpdmVfdXNlcicsICdpbmFjdGl2ZV9hZG1pbiddLmluZGV4T2YocmVqZWN0aW9uLmNvZGUpID4gLTEpIHtcbiAgICAgIHRoaXMucHJvcHMuc2hvd0luYWN0aXZlUGFnZShyZWplY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gNDAzICYmIHJlamVjdGlvbi5iYW4pIHtcbiAgICAgIHNob3dCYW5uZWRQYWdlKHJlamVjdGlvbi5iYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbmFja2Jhci5hcGlFcnJvcihyZWplY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwid2VsbCB3ZWxsLWZvcm0gd2VsbC1mb3JtLXJlcXVlc3QtcGFzc3dvcmQtcmVzZXRcIj5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXt0aGlzLmhhbmRsZVN1Ym1pdH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbC1pbnB1dFwiPlxuXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtnZXR0ZXh0KFwiWW91ciBlLW1haWwgYWRkcmVzc1wiKX1cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCdlbWFpbCcpfVxuICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmVtYWlsfSAvPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiYnRuLXByaW1hcnkgYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzTG9hZGluZ30+XG4gICAgICAgICAge2dldHRleHQoXCJTZW5kIGxpbmtcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpbmtTZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0TWVzc2FnZSgpIHtcbiAgICByZXR1cm4gaW50ZXJwb2xhdGUoZ2V0dGV4dChcIlJlc2V0IHBhc3N3b3JkIGxpbmsgd2FzIHNlbnQgdG8gJShlbWFpbClzXCIpLCB7XG4gICAgICBlbWFpbDogdGhpcy5wcm9wcy51c2VyLmVtYWlsXG4gICAgfSwgdHJ1ZSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIndlbGwgd2VsbC1mb3JtIHdlbGwtZm9ybS1yZXF1ZXN0LXBhc3N3b3JkLXJlc2V0IHdlbGwtZG9uZVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb25lLW1lc3NhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWljb25cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICBjaGVja1xuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1ib2R5XCI+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICB7dGhpcy5nZXRNZXNzYWdlKCl9XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5jYWxsYmFja30+XG4gICAgICAgICAge2dldHRleHQoXCJSZXF1ZXN0IGFub3RoZXIgbGlua1wiKX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWNjb3VudEluYWN0aXZlUGFnZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldEFjdGl2YXRlQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmFjdGl2YXRpb24gPT09ICdpbmFjdGl2ZV91c2VyJykge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxwPlxuICAgICAgICA8YSBocmVmPXttaXNhZ28uZ2V0KCdSRVFVRVNUX0FDVElWQVRJT05fVVJMJyl9PlxuICAgICAgICAgIHtnZXR0ZXh0KFwiQWN0aXZhdGUgeW91ciBhY2NvdW50LlwiKX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9wPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicGFnZSBwYWdlLW1lc3NhZ2UgcGFnZS1tZXNzYWdlLWluZm8gcGFnZS1mb3Jnb3R0ZW4tcGFzc3dvcmQtaW5hY3RpdmVcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1wYW5lbFwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWljb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgICAgaW5mb19vdXRsaW5lXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtYm9keVwiPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibGVhZFwiPlxuICAgICAgICAgICAgICB7Z2V0dGV4dChcIllvdXIgYWNjb3VudCBpcyBpbmFjdGl2ZS5cIil9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMubWVzc2FnZX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIHt0aGlzLmdldEFjdGl2YXRlQnV0dG9uKCl9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNvbXBsZXRlOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIGNvbXBsZXRlID0gKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBjb21wbGV0ZTogYXBpUmVzcG9uc2VcbiAgICB9KTtcbiAgfTtcblxuICByZXNldCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNvbXBsZXRlOiBmYWxzZVxuICAgIH0pO1xuICB9O1xuXG4gIHNob3dJbmFjdGl2ZVBhZ2UoYXBpUmVzcG9uc2UpIHtcbiAgICBSZWFjdERPTS5yZW5kZXIoXG4gICAgICA8QWNjb3VudEluYWN0aXZlUGFnZSBhY3RpdmF0aW9uPXthcGlSZXNwb25zZS5jb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT17YXBpUmVzcG9uc2UuZGV0YWlsfSAvPixcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLW1vdW50JylcbiAgICApO1xuICB9XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICBpZiAodGhpcy5zdGF0ZS5jb21wbGV0ZSkge1xuICAgICAgcmV0dXJuIDxMaW5rU2VudCB1c2VyPXt0aGlzLnN0YXRlLmNvbXBsZXRlfSBjYWxsYmFjaz17dGhpcy5yZXNldH0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8UmVxdWVzdFJlc2V0Rm9ybSBjYWxsYmFjaz17dGhpcy5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93SW5hY3RpdmVQYWdlPXt0aGlzLnNob3dJbmFjdGl2ZVBhZ2V9IC8+O1xuICAgIH07XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IFNpZ25Jbk1vZGFsIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3NpZ24taW4uanMnO1xuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnO1xuaW1wb3J0IGF1dGggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2F1dGgnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtb2RhbCBmcm9tICdtaXNhZ28vc2VydmljZXMvbW9kYWwnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7XG5pbXBvcnQgKiBhcyB2YWxpZGF0b3JzIGZyb20gJ21pc2Fnby91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCBzaG93QmFubmVkUGFnZSBmcm9tICdtaXNhZ28vdXRpbHMvYmFubmVkLXBhZ2UnO1xuXG5leHBvcnQgY2xhc3MgUmVzZXRQYXNzd29yZEZvcm0gZXh0ZW5kcyBGb3JtIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlLFxuXG4gICAgICAncGFzc3dvcmQnOiAnJyxcblxuICAgICAgJ3ZhbGlkYXRvcnMnOiB7XG4gICAgICAgICdwYXNzd29yZCc6IFtcbiAgICAgICAgICB2YWxpZGF0b3JzLnBhc3N3b3JkTWluTGVuZ3RoKG1pc2Fnby5nZXQoJ1NFVFRJTkdTJykpXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc3RhdGUucGFzc3dvcmQudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICBzbmFja2Jhci5lcnJvcih0aGlzLnN0YXRlLmVycm9ycy5wYXNzd29yZFswXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbmFja2Jhci5lcnJvcihnZXR0ZXh0KFwiRW50ZXIgbmV3IHBhc3N3b3JkLlwiKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2VuZCgpIHtcbiAgICByZXR1cm4gYWpheC5wb3N0KG1pc2Fnby5nZXQoJ0NIQU5HRV9QQVNTV09SRF9BUEknKSwge1xuICAgICAgJ3Bhc3N3b3JkJzogdGhpcy5zdGF0ZS5wYXNzd29yZFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VjY2VzcyhhcGlSZXNwb25zZSkge1xuICAgIHRoaXMucHJvcHMuY2FsbGJhY2soYXBpUmVzcG9uc2UpO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IocmVqZWN0aW9uKSB7XG4gICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDQwMyAmJiByZWplY3Rpb24uYmFuKSB7XG4gICAgICBzaG93QmFubmVkUGFnZShyZWplY3Rpb24uYmFuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc25hY2tiYXIuYXBpRXJyb3IocmVqZWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIndlbGwgd2VsbC1mb3JtIHdlbGwtZm9ybS1yZXNldC1wYXNzd29yZFwiPlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sLWlucHV0XCI+XG5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtnZXR0ZXh0KFwiRW50ZXIgbmV3IHBhc3N3b3JkXCIpfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ3Bhc3N3b3JkJyl9XG4gICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUucGFzc3dvcmR9IC8+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJidG4tcHJpbWFyeSBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfT5cbiAgICAgICAgICB7Z2V0dGV4dChcIkNoYW5nZSBwYXNzd29yZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRDaGFuZ2VkUGFnZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldE1lc3NhZ2UoKSB7XG4gICAgcmV0dXJuIGludGVycG9sYXRlKGdldHRleHQoXCIlKHVzZXJuYW1lKXMsIHlvdXIgcGFzc3dvcmQgaGFzIGJlZW4gY2hhbmdlZCBzdWNjZXNzZnVsbHkuXCIpLCB7XG4gICAgICB1c2VybmFtZTogdGhpcy5wcm9wcy51c2VyLnVzZXJuYW1lXG4gICAgfSwgdHJ1ZSk7XG4gIH1cblxuICBzaG93U2lnbkluKCkge1xuICAgIG1vZGFsLnNob3coU2lnbkluTW9kYWwpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJwYWdlIHBhZ2UtbWVzc2FnZSBwYWdlLW1lc3NhZ2Utc3VjY2VzcyBwYWdlLWZvcmdvdHRlbi1wYXNzd29yZC1jaGFuZ2VkXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtcGFuZWxcIj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1pY29uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICAgIGNoZWNrXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtYm9keVwiPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibGVhZFwiPlxuICAgICAgICAgICAgICB7dGhpcy5nZXRNZXNzYWdlKCl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge2dldHRleHQoXCJZb3Ugd2lsbCBoYXZlIHRvIHNpZ24gaW4gdXNpbmcgbmV3IHBhc3N3b3JkIGJlZm9yZSBjb250aW51aW5nLlwiKX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnlcIiBvbkNsaWNrPXt0aGlzLnNob3dTaWduSW59PlxuICAgICAgICAgICAgICAgIHtnZXR0ZXh0KFwiU2lnbiBpblwiKX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgY29tcGxldGUgPSAoYXBpUmVzcG9uc2UpID0+IHtcbiAgICBhdXRoLnNvZnRTaWduT3V0KCk7XG5cbiAgICAvLyBudWtlIFwicmVkaXJlY3RfdG9cIiBmaWVsZCBzbyB3ZSBkb24ndCBlbmRcbiAgICAvLyBjb21pbmcgYmFjayB0byBlcnJvciBwYWdlIGFmdGVyIHNpZ24gaW5cbiAgICAkKCcjaGlkZGVuLWxvZ2luLWZvcm0gaW5wdXRbbmFtZT1cInJlZGlyZWN0X3RvXCJdJykucmVtb3ZlKCk7XG5cbiAgICBSZWFjdERPTS5yZW5kZXIoXG4gICAgICA8UGFzc3dvcmRDaGFuZ2VkUGFnZSB1c2VyPXthcGlSZXNwb25zZX0gLz4sXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS1tb3VudCcpXG4gICAgKTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8UmVzZXRQYXNzd29yZEZvcm0gY2FsbGJhY2s9e3RoaXMuY29tcGxldGV9IC8+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBCdXR0b24gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYnV0dG9uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgRm9ybSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBtb2RhbCBmcm9tICdtaXNhZ28vc2VydmljZXMvbW9kYWwnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7XG5pbXBvcnQgc2hvd0Jhbm5lZFBhZ2UgZnJvbSAnbWlzYWdvL3V0aWxzL2Jhbm5lZC1wYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBGb3JtIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlLFxuICAgICAgJ3Nob3dBY3RpdmF0aW9uJzogZmFsc2UsXG5cbiAgICAgICd1c2VybmFtZSc6ICcnLFxuICAgICAgJ3Bhc3N3b3JkJzogJycsXG5cbiAgICAgICd2YWxpZGF0b3JzJzoge1xuICAgICAgICAndXNlcm5hbWUnOiBbXSxcbiAgICAgICAgJ3Bhc3N3b3JkJzogW11cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgc25hY2tiYXIuZXJyb3IoZ2V0dGV4dChcIkZpbGwgb3V0IGJvdGggZmllbGRzLlwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNlbmQoKSB7XG4gICAgcmV0dXJuIGFqYXgucG9zdChtaXNhZ28uZ2V0KCdBVVRIX0FQSScpLCB7XG4gICAgICAndXNlcm5hbWUnOiB0aGlzLnN0YXRlLnVzZXJuYW1lLFxuICAgICAgJ3Bhc3N3b3JkJzogdGhpcy5zdGF0ZS5wYXNzd29yZFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VjY2VzcygpIHtcbiAgICBsZXQgZm9ybSA9ICQoJyNoaWRkZW4tbG9naW4tZm9ybScpO1xuXG4gICAgZm9ybS5hcHBlbmQoJzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJ1c2VybmFtZVwiIC8+Jyk7XG4gICAgZm9ybS5hcHBlbmQoJzxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmRcIiAvPicpO1xuXG4gICAgLy8gZmlsbCBvdXQgZm9ybSB3aXRoIHVzZXIgY3JlZGVudGlhbHMgYW5kIHN1Ym1pdCBpdCwgdGhpcyB3aWxsIHRlbGxcbiAgICAvLyBNaXNhZ28gdG8gcmVkaXJlY3QgdXNlciBiYWNrIHRvIHJpZ2h0IHBhZ2UsIGFuZCB3aWxsIHRyaWdnZXIgYnJvd3NlcidzXG4gICAgLy8ga2V5IHJpbmcgZmVhdHVyZVxuICAgIGZvcm0uZmluZCgnaW5wdXRbdHlwZT1cImhpZGRlblwiXScpLnZhbChhamF4LmdldENzcmZUb2tlbigpKTtcbiAgICBmb3JtLmZpbmQoJ2lucHV0W25hbWU9XCJyZWRpcmVjdF90b1wiXScpLnZhbCh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGZvcm0uZmluZCgnaW5wdXRbbmFtZT1cInVzZXJuYW1lXCJdJykudmFsKHRoaXMuc3RhdGUudXNlcm5hbWUpO1xuICAgIGZvcm0uZmluZCgnaW5wdXRbbmFtZT1cInBhc3N3b3JkXCJdJykudmFsKHRoaXMuc3RhdGUucGFzc3dvcmQpO1xuICAgIGZvcm0uc3VibWl0KCk7XG5cbiAgICAvLyBrZWVwIGZvcm0gbG9hZGluZ1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgJ2lzTG9hZGluZyc6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUVycm9yKHJlamVjdGlvbikge1xuICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDApIHtcbiAgICAgIGlmIChyZWplY3Rpb24uY29kZSA9PT0gJ2luYWN0aXZlX2FkbWluJykge1xuICAgICAgICBzbmFja2Jhci5pbmZvKHJlamVjdGlvbi5kZXRhaWwpO1xuICAgICAgfSBlbHNlIGlmIChyZWplY3Rpb24uY29kZSA9PT0gJ2luYWN0aXZlX3VzZXInKSB7XG4gICAgICAgIHNuYWNrYmFyLmluZm8ocmVqZWN0aW9uLmRldGFpbCk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICdzaG93QWN0aXZhdGlvbic6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHJlamVjdGlvbi5jb2RlID09PSAnYmFubmVkJykge1xuICAgICAgICBzaG93QmFubmVkUGFnZShyZWplY3Rpb24uZGV0YWlsKTtcbiAgICAgICAgbW9kYWwuaGlkZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc25hY2tiYXIuZXJyb3IocmVqZWN0aW9uLmRldGFpbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDMgJiYgcmVqZWN0aW9uLmJhbikge1xuICAgICAgc2hvd0Jhbm5lZFBhZ2UocmVqZWN0aW9uLmJhbik7XG4gICAgICBtb2RhbC5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmFwaUVycm9yKHJlamVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0aXZhdGlvbkJ1dHRvbigpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5zaG93QWN0aXZhdGlvbikge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxhIGhyZWY9e21pc2Fnby5nZXQoJ1JFUVVFU1RfQUNUSVZBVElPTl9VUkwnKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLWJsb2NrXCI+XG4gICAgICAgICB7Z2V0dGV4dChcIkFjdGl2YXRlIGFjY291bnRcIil9XG4gICAgICA8L2E+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1kaWFsb2cgbW9kYWwtc20gbW9kYWwtc2lnbi1pblwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2dldHRleHQoXCJDbG9zZVwiKX0+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJtb2RhbC10aXRsZVwiPntnZXR0ZXh0KFwiU2lnbiBpblwiKX08L2g0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHlcIj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbC1pbnB1dFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImlkX3VzZXJuYW1lXCIgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtnZXR0ZXh0KFwiVXNlcm5hbWUgb3IgZS1tYWlsXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ3VzZXJuYW1lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnVzZXJuYW1lfSAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiaWRfcGFzc3dvcmRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtnZXR0ZXh0KFwiUGFzc3dvcmRcIil9XG4gICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgncGFzc3dvcmQnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUucGFzc3dvcmR9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICAgICAge3RoaXMuZ2V0QWN0aXZhdGlvbkJ1dHRvbigpfVxuICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJidG4tcHJpbWFyeSBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzTG9hZGluZ30+XG4gICAgICAgICAgICAgIHtnZXR0ZXh0KFwiU2lnbiBpblwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPGEgaHJlZj17bWlzYWdvLmdldCgnRk9SR09UVEVOX1BBU1NXT1JEX1VSTCcpfVxuICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1ibG9ja1wiPlxuICAgICAgICAgICAgICAge2dldHRleHQoXCJGb3Jnb3QgcGFzc3dvcmQ/XCIpfVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuY29uc3QgVFlQRVNfQ0xBU1NFUyA9IHtcbiAgJ2luZm8nOiAnYWxlcnQtaW5mbycsXG4gICdzdWNjZXNzJzogJ2FsZXJ0LXN1Y2Nlc3MnLFxuICAnd2FybmluZyc6ICdhbGVydC13YXJuaW5nJyxcbiAgJ2Vycm9yJzogJ2FsZXJ0LWRhbmdlcidcbn07XG4vKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG5leHBvcnQgY2xhc3MgU25hY2tiYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRTbmFja2JhckNsYXNzKCkge1xuICAgIGxldCBzbmFja2JhckNsYXNzID0gJ2FsZXJ0cy1zbmFja2Jhcic7XG4gICAgaWYgKHRoaXMucHJvcHMuaXNWaXNpYmxlKSB7XG4gICAgICBzbmFja2JhckNsYXNzICs9ICcgaW4nO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbmFja2JhckNsYXNzICs9ICcgb3V0JztcbiAgICB9XG4gICAgcmV0dXJuIHNuYWNrYmFyQ2xhc3M7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRTbmFja2JhckNsYXNzKCl9PlxuICAgICAgPHAgY2xhc3NOYW1lPXsnYWxlcnQgJyArIFRZUEVTX0NMQVNTRVNbdGhpcy5wcm9wcy50eXBlXX0+XG4gICAgICAgIHt0aGlzLnByb3BzLm1lc3NhZ2V9XG4gICAgICA8L3A+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuc25hY2tiYXI7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEF2YXRhciBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9hdmF0YXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBSZWdpc3RlckJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9yZWdpc3Rlci1idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBTaWduSW5Nb2RhbCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9zaWduLWluLmpzJztcbmltcG9ydCBkcm9wZG93biBmcm9tICdtaXNhZ28vc2VydmljZXMvbW9iaWxlLW5hdmJhci1kcm9wZG93bic7XG5pbXBvcnQgbW9kYWwgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL21vZGFsJztcblxuZXhwb3J0IGNsYXNzIEd1ZXN0TWVudSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHNob3dTaWduSW5Nb2RhbCgpIHtcbiAgICBtb2RhbC5zaG93KFNpZ25Jbk1vZGFsKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDx1bCBjbGFzc05hbWU9XCJkcm9wZG93bi1tZW51IHVzZXItZHJvcGRvd24gZHJvcGRvd24tbWVudS1yaWdodFwiXG4gICAgICAgICAgICAgICByb2xlPVwibWVudVwiPlxuICAgICAgPGxpIGNsYXNzTmFtZT1cImd1ZXN0LXByZXZpZXdcIj5cbiAgICAgICAgPGg0PntnZXR0ZXh0KFwiWW91IGFyZSBicm93c2luZyBhcyBndWVzdC5cIil9PC9oND5cbiAgICAgICAgPHA+XG4gICAgICAgICAge2dldHRleHQoJ1NpZ24gaW4gb3IgcmVnaXN0ZXIgdG8gc3RhcnQgYW5kIHBhcnRpY2lwYXRlIGluIGRpc2N1c3Npb25zLicpfVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wteHMtNlwiPlxuXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLWRlZmF1bHQgYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5zaG93U2lnbkluTW9kYWx9PlxuICAgICAgICAgICAgICB7Z2V0dGV4dChcIlNpZ24gaW5cIil9XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXhzLTZcIj5cblxuICAgICAgICAgICAgPFJlZ2lzdGVyQnV0dG9uIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiPlxuICAgICAgICAgICAgICB7Z2V0dGV4dChcIlJlZ2lzdGVyXCIpfVxuICAgICAgICAgICAgPC9SZWdpc3RlckJ1dHRvbj5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3Vlc3ROYXYgZXh0ZW5kcyBHdWVzdE1lbnUge1xuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm5hdiBuYXYtZ3Vlc3RcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBuYXZiYXItYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5zaG93U2lnbkluTW9kYWx9PlxuICAgICAgICB7Z2V0dGV4dChcIlNpZ24gaW5cIil9XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxSZWdpc3RlckJ1dHRvbiBjbGFzc05hbWU9XCJuYXZiYXItYnRuIGJ0bi1wcmltYXJ5XCI+XG4gICAgICAgIHtnZXR0ZXh0KFwiUmVnaXN0ZXJcIil9XG4gICAgICA8L1JlZ2lzdGVyQnV0dG9uPlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wYWN0R3Vlc3ROYXYgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzaG93R3Vlc3RNZW51KCkge1xuICAgIGRyb3Bkb3duLnNob3coR3Vlc3RNZW51KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMuc2hvd0d1ZXN0TWVudX0+XG4gICAgICA8QXZhdGFyIHNpemU9XCI2NFwiIC8+XG4gICAgPC9idXR0b24+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBHdWVzdE5hdiwgQ29tcGFjdEd1ZXN0TmF2IH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlci1tZW51L2d1ZXN0LW5hdic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IHsgVXNlck5hdiwgQ29tcGFjdFVzZXJOYXZ9IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXItbWVudS91c2VyLW5hdic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG5leHBvcnQgY2xhc3MgVXNlck1lbnUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIGlmICh0aGlzLnByb3BzLmlzQXV0aGVudGljYXRlZCkge1xuICAgICAgcmV0dXJuIDxVc2VyTmF2IHVzZXI9e3RoaXMucHJvcHMudXNlcn0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8R3Vlc3ROYXYgLz47XG4gICAgfVxuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBhY3RVc2VyTWVudSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgaWYgKHRoaXMucHJvcHMuaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICByZXR1cm4gPENvbXBhY3RVc2VyTmF2IHVzZXI9e3RoaXMucHJvcHMudXNlcn0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8Q29tcGFjdEd1ZXN0TmF2IC8+O1xuICAgIH1cbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3Qoc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmF1dGg7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCBBdmF0YXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYXZhdGFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgQ2hhbmdlQXZhdGFyTW9kYWwsIHsgc2VsZWN0IH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvY2hhbmdlLWF2YXRhci9yb290JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IGRyb3Bkb3duIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2JpbGUtbmF2YmFyLWRyb3Bkb3duJztcbmltcG9ydCBtb2RhbCBmcm9tICdtaXNhZ28vc2VydmljZXMvbW9kYWwnO1xuXG5leHBvcnQgY2xhc3MgVXNlck1lbnUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBsb2dvdXQoKSB7XG4gICAgbGV0IGRlY2lzaW9uID0gY29uZmlybShnZXR0ZXh0KFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHNpZ24gb3V0P1wiKSk7XG4gICAgaWYgKGRlY2lzaW9uKSB7XG4gICAgICAkKCcjaGlkZGVuLWxvZ291dC1mb3JtJykuc3VibWl0KCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQXZhdGFyKCkge1xuICAgIG1vZGFsLnNob3coY29ubmVjdChzZWxlY3QpKENoYW5nZUF2YXRhck1vZGFsKSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8dWwgY2xhc3NOYW1lPVwiZHJvcGRvd24tbWVudSB1c2VyLWRyb3Bkb3duIGRyb3Bkb3duLW1lbnUtcmlnaHRcIlxuICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVcIj5cbiAgICAgIDxsaSBjbGFzc05hbWU9XCJkcm9wZG93bi1oZWFkZXJcIj5cbiAgICAgICAgPHN0cm9uZz57dGhpcy5wcm9wcy51c2VyLnVzZXJuYW1lfTwvc3Ryb25nPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSBjbGFzc05hbWU9XCJkaXZpZGVyXCIgLz5cbiAgICAgIDxsaT5cbiAgICAgICAgPGEgaHJlZj17dGhpcy5wcm9wcy51c2VyLmFic29sdXRlX3VybH0+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPmFjY291bnRfY2lyY2xlPC9zcGFuPlxuICAgICAgICAgIHtnZXR0ZXh0KFwiU2VlIHlvdXIgcHJvZmlsZVwiKX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICAgIDxsaT5cbiAgICAgICAgPGEgaHJlZj17bWlzYWdvLmdldCgnVVNFUkNQX1VSTCcpfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+ZG9uZV9hbGw8L3NwYW4+XG4gICAgICAgICAge2dldHRleHQoXCJDaGFuZ2Ugb3B0aW9uc1wiKX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9saT5cbiAgICAgIDxsaT5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuLWxpbmtcIiBvbkNsaWNrPXt0aGlzLmNoYW5nZUF2YXRhcn0+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPmZhY2U8L3NwYW4+XG4gICAgICAgICAge2dldHRleHQoXCJDaGFuZ2UgYXZhdGFyXCIpfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3NOYW1lPVwiZGl2aWRlclwiIC8+XG4gICAgICA8bGkgY2xhc3NOYW1lPVwiZHJvcGRvd24tZm9vdGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmxvZ291dH0+XG4gICAgICAgICAgICB7Z2V0dGV4dChcIkxvZyBvdXRcIil9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJOYXYgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8dWwgY2xhc3NOYW1lPVwidWwgbmF2IG5hdmJhci1uYXYgbmF2LXVzZXJcIj5cbiAgICAgIDxsaSBjbGFzc05hbWU9XCJkcm9wZG93blwiPlxuICAgICAgICA8YSBocmVmPXt0aGlzLnByb3BzLnVzZXIuYWJzb2x1dGVfdXJsfSBjbGFzc05hbWU9XCJkcm9wZG93bi10b2dnbGVcIlxuICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgPEF2YXRhciB1c2VyPXt0aGlzLnByb3BzLnVzZXJ9IHNpemU9XCI2NFwiIC8+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPFVzZXJNZW51IHVzZXI9e3RoaXMucHJvcHMudXNlcn0gLz5cbiAgICAgIDwvbGk+XG4gICAgPC91bD47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0VXNlck1lbnUoc3RhdGUpIHtcbiAgY29uc29sZS5sb2coc3RhdGUpO1xuICByZXR1cm4ge3VzZXI6IHN0YXRlLmF1dGgudXNlcn07XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wYWN0VXNlck5hdiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHNob3dVc2VyTWVudSgpIHtcbiAgICBkcm9wZG93bi5zaG93Q29ubmVjdGVkKCd1c2VyLW1lbnUnLCBjb25uZWN0KHNlbGVjdFVzZXJNZW51KShVc2VyTWVudSkpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17dGhpcy5zaG93VXNlck1lbnV9PlxuICAgICAgPEF2YXRhciB1c2VyPXt0aGlzLnByb3BzLnVzZXJ9IHNpemU9XCI2NFwiIC8+XG4gICAgPC9idXR0b24+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cbiIsImltcG9ydCBPcmRlcmVkTGlzdCBmcm9tICdtaXNhZ28vdXRpbHMvb3JkZXJlZC1saXN0JztcblxuZXhwb3J0IGNsYXNzIE1pc2FnbyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2luaXRpYWxpemVycyA9IFtdO1xuICAgIHRoaXMuX2NvbnRleHQgPSB7fTtcbiAgfVxuXG4gIGFkZEluaXRpYWxpemVyKGluaXRpYWxpemVyKSB7XG4gICAgdGhpcy5faW5pdGlhbGl6ZXJzLnB1c2goe1xuICAgICAga2V5OiBpbml0aWFsaXplci5uYW1lLFxuXG4gICAgICBpdGVtOiBpbml0aWFsaXplci5pbml0aWFsaXplcixcblxuICAgICAgYWZ0ZXI6IGluaXRpYWxpemVyLmFmdGVyLFxuICAgICAgYmVmb3JlOiBpbml0aWFsaXplci5iZWZvcmVcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQoY29udGV4dCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuXG4gICAgdmFyIGluaXRPcmRlciA9IG5ldyBPcmRlcmVkTGlzdCh0aGlzLl9pbml0aWFsaXplcnMpLm9yZGVyZWRWYWx1ZXMoKTtcbiAgICBpbml0T3JkZXIuZm9yRWFjaChpbml0aWFsaXplciA9PiB7XG4gICAgICBpbml0aWFsaXplcih0aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGNvbnRleHQgYWNjZXNzb3JzXG4gIGhhcyhrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGV4dC5oYXNPd25Qcm9wZXJ0eShrZXkpO1xuICB9XG5cbiAgZ2V0KGtleSwgZmFsbGJhY2spIHtcbiAgICBpZiAodGhpcy5oYXMoa2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRleHRba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrIHx8IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLy8gY3JlYXRlICBzaW5nbGV0b25cbnZhciBtaXNhZ28gPSBuZXcgTWlzYWdvKCk7XG5cbi8vIGV4cG9zZSBpdCBnbG9iYWxseVxuZ2xvYmFsLm1pc2FnbyA9IG1pc2FnbztcblxuLy8gYW5kIGV4cG9ydCBpdCBmb3IgdGVzdHMgYW5kIHN0dWZmXG5leHBvcnQgZGVmYXVsdCBtaXNhZ287XG4iLCJpbXBvcnQgeyBVUERBVEVfQVZBVEFSIH0gZnJvbSAnbWlzYWdvL3JlZHVjZXJzL3VzZXJzJztcblxuZXhwb3J0IHZhciBpbml0aWFsU3RhdGUgPSB7XG4gIHNpZ25lZEluOiBmYWxzZSxcbiAgc2lnbmVkT3V0OiBmYWxzZVxufTtcblxuZXhwb3J0IGNvbnN0IFNJR05fSU4gPSAnU0lHTl9JTic7XG5leHBvcnQgY29uc3QgU0lHTl9PVVQgPSAnU0lHTl9PVVQnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbkluKHVzZXIpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBTSUdOX0lOLFxuICAgIHVzZXJcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25PdXQoc29mdD1mYWxzZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFNJR05fT1VULFxuICAgIHNvZnRcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXV0aChzdGF0ZT1pbml0aWFsU3RhdGUsIGFjdGlvbj1udWxsKSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIFNJR05fSU46XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgICAgc2lnbmVkSW46IGFjdGlvbi51c2VyXG4gICAgICB9KTtcblxuICAgIGNhc2UgU0lHTl9PVVQ6XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgICAgaXNBdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgICAgICAgaXNBbm9ueW1vdXM6IHRydWUsXG4gICAgICAgIHNpZ25lZE91dDogIWFjdGlvbi5zb2Z0XG4gICAgICB9KTtcblxuICAgIGNhc2UgVVBEQVRFX0FWQVRBUjpcbiAgICAgIGlmIChzdGF0ZS5pc0F1dGhlbnRpY2F0ZWQgJiYgc3RhdGUudXNlci5pZCA9PT0gYWN0aW9uLnVzZXJJZCkge1xuICAgICAgICBsZXQgbmV3U3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSk7XG4gICAgICAgIG5ld1N0YXRlLnVzZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS51c2VyLCB7XG4gICAgICAgICAgJ2F2YXRhcl9oYXNoJzogYWN0aW9uLmF2YXRhckhhc2hcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiIsImV4cG9ydCB2YXIgaW5pdGlhbFN0YXRlID0ge1xuICB0eXBlOiAnaW5mbycsXG4gIG1lc3NhZ2U6ICcnLFxuICBpc1Zpc2libGU6IGZhbHNlXG59O1xuXG5leHBvcnQgY29uc3QgU0hPV19TTkFDS0JBUiA9ICdTSE9XX1NOQUNLQkFSJztcbmV4cG9ydCBjb25zdCBISURFX1NOQUNLQkFSID0gJ0hJREVfU05BQ0tCQVInO1xuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1NuYWNrYmFyKG1lc3NhZ2UsIHR5cGUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBTSE9XX1NOQUNLQkFSLFxuICAgIG1lc3NhZ2UsXG4gICAgbWVzc2FnZVR5cGU6IHR5cGVcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhpZGVTbmFja2JhcigpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBISURFX1NOQUNLQkFSXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNuYWNrYmFyKHN0YXRlPWluaXRpYWxTdGF0ZSwgYWN0aW9uPW51bGwpIHtcbiAgaWYgKGFjdGlvbi50eXBlID09PSBTSE9XX1NOQUNLQkFSKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IGFjdGlvbi5tZXNzYWdlVHlwZSxcbiAgICAgIG1lc3NhZ2U6IGFjdGlvbi5tZXNzYWdlLFxuICAgICAgaXNWaXNpYmxlOiB0cnVlXG4gICAgfTtcbiAgfSBlbHNlIGlmIChhY3Rpb24udHlwZSA9PT0gSElERV9TTkFDS0JBUikge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwge1xuICAgICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG4iLCJleHBvcnQgdmFyIGluaXRpYWxTdGF0ZSA9IHtcbiAgdGljazogMFxufTtcblxuZXhwb3J0IGNvbnN0IFRJQ0sgPSAnVElDSyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkb1RpY2soKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogVElDS1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0aWNrKHN0YXRlPWluaXRpYWxTdGF0ZSwgYWN0aW9uPW51bGwpIHtcbiAgaWYgKGFjdGlvbi50eXBlID09PSBUSUNLKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7XG4gICAgICAgIHRpY2s6IHN0YXRlLnRpY2sgKyAxXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG4iLCJleHBvcnQgY29uc3QgVVBEQVRFX0FWQVRBUiA9ICdVUERBVEVfQVZBVEFSJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUF2YXRhcih1c2VyLCBhdmF0YXJIYXNoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogVVBEQVRFX0FWQVRBUixcbiAgICB1c2VySWQ6IHVzZXIuaWQsXG4gICAgYXZhdGFySGFzaFxuICB9O1xufSIsImV4cG9ydCBjbGFzcyBBamF4IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fY29va2llTmFtZSA9IG51bGw7XG4gICAgdGhpcy5fY3NyZlRva2VuID0gbnVsbDtcbiAgfVxuXG4gIGluaXQoY29va2llTmFtZSkge1xuICAgIHRoaXMuX2Nvb2tpZU5hbWUgPSBjb29raWVOYW1lO1xuICAgIHRoaXMuX2NzcmZUb2tlbiA9IHRoaXMuZ2V0Q3NyZlRva2VuKCk7XG4gIH1cblxuICBnZXRDc3JmVG9rZW4oKSB7XG4gICAgaWYgKGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKHRoaXMuX2Nvb2tpZU5hbWUpICE9PSAtMSkge1xuICAgICAgdmFyIGNvb2tpZVJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLl9jb29raWVOYW1lICsgJ1xcPShbXjtdKiknKTtcbiAgICAgIHZhciBjb29raWUgPSBkb2N1bWVudC5jb29raWUubWF0Y2goY29va2llUmVnZXgpWzBdO1xuICAgICAgcmV0dXJuIGNvb2tpZSA/IGNvb2tpZS5zcGxpdCgnPScpWzFdIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdChtZXRob2QsIHVybCwgZGF0YSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgeGhyID0ge1xuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnWC1DU1JGVG9rZW4nOiBzZWxmLl9jc3JmVG9rZW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiBkYXRhIHx8IHt9LFxuICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxuXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVycm9yOiBmdW5jdGlvbihqcVhIUikge1xuICAgICAgICAgIHZhciByZWplY3Rpb24gPSBqcVhIUi5yZXNwb25zZUpTT04gfHwge307XG5cbiAgICAgICAgICByZWplY3Rpb24uc3RhdHVzID0ganFYSFIuc3RhdHVzO1xuICAgICAgICAgIHJlamVjdGlvbi5zdGF0dXNUZXh0ID0ganFYSFIuc3RhdHVzVGV4dDtcblxuICAgICAgICAgIHJlamVjdChyZWplY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICAkLmFqYXgoeGhyKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCh1cmwpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdHRVQnLCB1cmwpO1xuICB9XG5cbiAgcG9zdCh1cmwsIGRhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQT1NUJywgdXJsLCBkYXRhKTtcbiAgfVxuXG4gIHBhdGNoKHVybCwgZGF0YSkge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ1BBVENIJywgdXJsLCBkYXRhKTtcbiAgfVxuXG4gIHB1dCh1cmwsIGRhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQVVQnLCB1cmwsIGRhdGEpO1xuICB9XG5cbiAgZGVsZXRlKHVybCkge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ0RFTEVURScsIHVybCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IEFqYXgoKTtcbiIsImltcG9ydCB7IHNpZ25Jbiwgc2lnbk91dCB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy9hdXRoJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBBdXRoIHtcbiAgaW5pdChzdG9yZSwgbG9jYWwsIG1vZGFsKSB7XG4gICAgdGhpcy5fc3RvcmUgPSBzdG9yZTtcbiAgICB0aGlzLl9sb2NhbCA9IGxvY2FsO1xuICAgIHRoaXMuX21vZGFsID0gbW9kYWw7XG5cbiAgICAvLyB0ZWxsIG90aGVyIHRhYnMgd2hhdCBhdXRoIHN0YXRlIGlzIGJlY2F1c2Ugd2UgYXJlIG1vc3QgY3VycmVudCB3aXRoIGl0XG4gICAgdGhpcy5zeW5jU2Vzc2lvbigpO1xuXG4gICAgLy8gbGlzdGVuIGZvciBvdGhlciB0YWJzIHRvIHRlbGwgdXMgdGhhdCBzdGF0ZSBjaGFuZ2VkXG4gICAgdGhpcy53YXRjaFN0YXRlKCk7XG4gIH1cblxuICBzeW5jU2Vzc2lvbigpIHtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLl9zdG9yZS5nZXRTdGF0ZSgpLmF1dGg7XG4gICAgaWYgKHN0YXRlLmlzQXV0aGVudGljYXRlZCkge1xuICAgICAgdGhpcy5fbG9jYWwuc2V0KCdhdXRoJywge1xuICAgICAgICBpc0F1dGhlbnRpY2F0ZWQ6IHRydWUsXG4gICAgICAgIHVzZXJuYW1lOiBzdGF0ZS51c2VyLnVzZXJuYW1lXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9jYWwuc2V0KCdhdXRoJywge1xuICAgICAgICBpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB3YXRjaFN0YXRlKCkge1xuICAgIHRoaXMuX2xvY2FsLndhdGNoKCdhdXRoJywgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBpZiAobmV3U3RhdGUuaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKHNpZ25Jbih7XG4gICAgICAgICAgdXNlcm5hbWU6IG5ld1N0YXRlLnVzZXJuYW1lXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKHNpZ25PdXQoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fbW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgc2lnbkluKHVzZXIpIHtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChzaWduSW4odXNlcikpO1xuICAgIHRoaXMuX2xvY2FsLnNldCgnYXV0aCcsIHtcbiAgICAgIGlzQXV0aGVudGljYXRlZDogdHJ1ZSxcbiAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lXG4gICAgfSk7XG4gICAgdGhpcy5fbW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgc2lnbk91dCgpIHtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChzaWduT3V0KCkpO1xuICAgIHRoaXMuX2xvY2FsLnNldCgnYXV0aCcsIHtcbiAgICAgIGlzQXV0aGVudGljYXRlZDogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLl9tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBzb2Z0U2lnbk91dCgpIHtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChzaWduT3V0KHRydWUpKTtcbiAgICB0aGlzLl9sb2NhbC5zZXQoJ2F1dGgnLCB7XG4gICAgICBpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5fbW9kYWwuaGlkZSgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBBdXRoKCk7IiwiLyogZ2xvYmFsIGdyZWNhcHRjaGEgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm1Hcm91cCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtLWdyb3VwJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2FwdGNoYSB7XG4gIGluaXQoY29udGV4dCwgYWpheCwgaW5jbHVkZSwgc25hY2tiYXIpIHtcbiAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLl9hamF4ID0gYWpheDtcbiAgICB0aGlzLl9pbmNsdWRlID0gaW5jbHVkZTtcbiAgICB0aGlzLl9zbmFja2JhciA9IHNuYWNrYmFyO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb0NhcHRjaGEgZXh0ZW5kcyBCYXNlQ2FwdGNoYSB7XG4gIGxvYWQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgIC8vIGltbWVkaWF0ZWx5IHJlc29sdmUgYXMgd2UgZG9uJ3QgaGF2ZSBhbnl0aGluZyB0byB2YWxpZGF0ZVxuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdG9yKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29tcG9uZW50KCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBRQUNhcHRjaGEgZXh0ZW5kcyBCYXNlQ2FwdGNoYSB7XG4gIGxvYWQoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzZWxmLl9hamF4LmdldChzZWxmLl9jb250ZXh0LmdldCgnQ0FQVENIQV9BUElfVVJMJykpLnRoZW4oXG4gICAgICBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgIHNlbGYucXVlc3Rpb24gPSBkYXRhLnF1ZXN0aW9uO1xuICAgICAgICBzZWxmLmhlbHBUZXh0ID0gZGF0YS5oZWxwX3RleHQ7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIGZ1bmN0aW9uKCkge1xuICAgICAgICBzZWxmLl9zbmFja2Jhci5lcnJvcihnZXR0ZXh0KFwiRmFpbGVkIHRvIGxvYWQgQ0FQVENIQS5cIikpO1xuICAgICAgICByZWplY3QoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdG9yKCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgY29tcG9uZW50KGt3YXJncykge1xuICAgIHJldHVybiA8Rm9ybUdyb3VwIGxhYmVsPXt0aGlzLnF1ZXN0aW9ufSBmb3I9XCJpZF9jYXB0Y2hhXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPXtrd2FyZ3MubGFiZWxDbGFzcyB8fCBcImNvbC1zbS00XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbENsYXNzPXtrd2FyZ3MuY29udHJvbENsYXNzIHx8IFwiY29sLXNtLThcIn1cbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uPXtrd2FyZ3MuZm9ybS5zdGF0ZS5lcnJvcnMuY2FwdGNoYX1cbiAgICAgICAgICAgICAgICAgICAgICBoZWxwVGV4dD17dGhpcy5oZWxwVGV4dCB8fCBudWxsfT5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiaWRfY2FwdGNoYVwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImlkX2NhcHRjaGFfc3RhdHVzXCJcbiAgICAgICAgICAgICBkaXNhYmxlZD17a3dhcmdzLmZvcm0uc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgIG9uQ2hhbmdlPXtrd2FyZ3MuZm9ybS5iaW5kSW5wdXQoJ2NhcHRjaGEnKX1cbiAgICAgICAgICAgICB2YWx1ZT17a3dhcmdzLmZvcm0uc3RhdGUuY2FwdGNoYX0gLz5cbiAgICA8L0Zvcm1Hcm91cD47XG4gIH1cbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbn1cblxuXG5leHBvcnQgY2xhc3MgUmVDYXB0Y2hhQ29tcG9uZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgZ3JlY2FwdGNoYS5yZW5kZXIoJ3JlY2FwdGNoYScsIHtcbiAgICAgICdzaXRla2V5JzogdGhpcy5wcm9wcy5zaXRlS2V5LFxuICAgICAgJ2NhbGxiYWNrJzogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIC8vIGZpcmUgZmFrZXkgZXZlbnQgdG8gYmluZGluZ1xuICAgICAgICB0aGlzLnByb3BzLmJpbmRpbmcoe1xuICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgdmFsdWU6IHJlc3BvbnNlXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgaWQ9XCJyZWNhcHRjaGFcIiAvPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZUNhcHRjaGEgZXh0ZW5kcyBCYXNlQ2FwdGNoYSB7XG4gIGxvYWQoKSB7XG4gICAgdGhpcy5faW5jbHVkZS5pbmNsdWRlKCdodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanMnLCB0cnVlKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICB2YXIgd2FpdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodHlwZW9mIGdyZWNhcHRjaGEgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHdhaXQoKTtcbiAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHdhaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRvcigpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIGNvbXBvbmVudChrd2FyZ3MpIHtcbiAgICByZXR1cm4gPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIkNhcHRjaGFcIil9IGZvcj1cImlkX2NhcHRjaGFcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9e2t3YXJncy5sYWJlbENsYXNzIHx8IFwiY29sLXNtLTRcIn1cbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9sQ2xhc3M9e2t3YXJncy5jb250cm9sQ2xhc3MgfHwgXCJjb2wtc20tOFwifVxuICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb249e2t3YXJncy5mb3JtLnN0YXRlLmVycm9ycy5jYXB0Y2hhfVxuICAgICAgICAgICAgICAgICAgICAgIGhlbHBUZXh0PXtnZXR0ZXh0KFwiUGxlYXNlIHNvbHZlIHRoZSBxdWljayB0ZXN0LlwiKX0+XG4gICAgICA8UmVDYXB0Y2hhQ29tcG9uZW50IHNpdGVLZXk9e3RoaXMuX2NvbnRleHQuZ2V0KCdTRVRUSU5HUycpLnJlY2FwdGNoYV9zaXRlX2tleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZz17a3dhcmdzLmZvcm0uYmluZElucHV0KCdjYXB0Y2hhJyl9IC8+XG4gICAgPC9Gb3JtR3JvdXA+O1xuICB9XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0Y2hhIHtcbiAgaW5pdChjb250ZXh0LCBhamF4LCBpbmNsdWRlLCBzbmFja2Jhcikge1xuICAgIHN3aXRjaChjb250ZXh0LmdldCgnU0VUVElOR1MnKS5jYXB0Y2hhX3R5cGUpIHtcbiAgICAgIGNhc2UgJ25vJzpcbiAgICAgICAgdGhpcy5fY2FwdGNoYSA9IG5ldyBOb0NhcHRjaGEoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3FhJzpcbiAgICAgICAgdGhpcy5fY2FwdGNoYSA9IG5ldyBRQUNhcHRjaGEoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JlJzpcbiAgICAgICAgdGhpcy5fY2FwdGNoYSA9IG5ldyBSZUNhcHRjaGEoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5fY2FwdGNoYS5pbml0KGNvbnRleHQsIGFqYXgsIGluY2x1ZGUsIHNuYWNrYmFyKTtcbiAgfVxuXG4gIC8vIGFjY2Vzc29ycyBmb3IgdW5kZXJseWluZyBzdHJhdGVneVxuXG4gIGxvYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhcHRjaGEubG9hZCgpO1xuICB9XG5cbiAgdmFsaWRhdG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9jYXB0Y2hhLnZhbGlkYXRvcigpO1xuICB9XG5cbiAgY29tcG9uZW50KGt3YXJncykge1xuICAgIHJldHVybiB0aGlzLl9jYXB0Y2hhLmNvbXBvbmVudChrd2FyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBDYXB0Y2hhKCk7IiwiZXhwb3J0IGNsYXNzIEluY2x1ZGUge1xuICBpbml0KHN0YXRpY1VybCkge1xuICAgIHRoaXMuX3N0YXRpY1VybCA9IHN0YXRpY1VybDtcbiAgICB0aGlzLl9pbmNsdWRlZCA9IFtdO1xuICB9XG5cbiAgaW5jbHVkZShzY3JpcHQsIHJlbW90ZT1mYWxzZSkge1xuICAgIGlmICh0aGlzLl9pbmNsdWRlZC5pbmRleE9mKHNjcmlwdCkgPT09IC0xKSB7XG4gICAgICB0aGlzLl9pbmNsdWRlZC5wdXNoKHNjcmlwdCk7XG4gICAgICB0aGlzLl9pbmNsdWRlKHNjcmlwdCwgcmVtb3RlKTtcbiAgICB9XG4gIH1cblxuICBfaW5jbHVkZShzY3JpcHQsIHJlbW90ZSkge1xuICAgICQuYWpheCh7XG4gICAgICB1cmw6ICghcmVtb3RlID8gdGhpcy5fc3RhdGljVXJsIDogJycpICsgc2NyaXB0LFxuICAgICAgY2FjaGU6IHRydWUsXG4gICAgICBkYXRhVHlwZTogJ3NjcmlwdCdcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgSW5jbHVkZSgpOyIsImxldCBzdG9yYWdlID0gd2luZG93LmxvY2FsU3RvcmFnZTtcblxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZSB7XG4gIGluaXQocHJlZml4KSB7XG4gICAgdGhpcy5fcHJlZml4ID0gcHJlZml4O1xuICAgIHRoaXMuX3dhdGNoZXJzID0gW107XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIChlKSA9PiB7XG4gICAgICBsZXQgbmV3VmFsdWVKc29uID0gSlNPTi5wYXJzZShlLm5ld1ZhbHVlKTtcbiAgICAgIHRoaXMuX3dhdGNoZXJzLmZvckVhY2goZnVuY3Rpb24od2F0Y2hlcikge1xuICAgICAgICBpZiAod2F0Y2hlci5rZXkgPT09IGUua2V5ICYmIGUub2xkVmFsdWUgIT09IGUubmV3VmFsdWUpIHtcbiAgICAgICAgICB3YXRjaGVyLmNhbGxiYWNrKG5ld1ZhbHVlSnNvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICBzdG9yYWdlLnNldEl0ZW0odGhpcy5fcHJlZml4ICsga2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9XG5cbiAgZ2V0KGtleSkge1xuICAgIGxldCBpdGVtU3RyaW5nID0gc3RvcmFnZS5nZXRJdGVtKHRoaXMuX3ByZWZpeCArIGtleSk7XG4gICAgaWYgKGl0ZW1TdHJpbmcpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW1TdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB3YXRjaChrZXksIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5fd2F0Y2hlcnMucHVzaCh7XG4gICAgICBrZXk6IHRoaXMuX3ByZWZpeCArIGtleSxcbiAgICAgIGNhbGxiYWNrOiBjYWxsYmFja1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBMb2NhbFN0b3JhZ2UoKTsiLCJpbXBvcnQgbW91bnQgZnJvbSAnbWlzYWdvL3V0aWxzL21vdW50LWNvbXBvbmVudCc7XG5cbmV4cG9ydCBjbGFzcyBNb2JpbGVOYXZiYXJEcm9wZG93biB7XG4gIGluaXQoZWxlbWVudCkge1xuICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuX2NvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBzaG93KGNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLl9jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgIG1vdW50KGNvbXBvbmVudCwgdGhpcy5fZWxlbWVudC5pZCk7XG4gICAgICAkKHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKCdvcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0Nvbm5lY3RlZChuYW1lLCBjb21wb25lbnQpIHtcbiAgICBpZiAodGhpcy5fY29tcG9uZW50ID09PSBuYW1lKSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY29tcG9uZW50ID0gbmFtZTtcbiAgICAgIG1vdW50KGNvbXBvbmVudCwgdGhpcy5fZWxlbWVudC5pZCwgdHJ1ZSk7XG4gICAgICAkKHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKCdvcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICAkKHRoaXMuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKCdvcGVuJyk7XG4gICAgdGhpcy5fY29tcG9uZW50ID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgTW9iaWxlTmF2YmFyRHJvcGRvd24oKTtcbiIsImltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IG1vdW50IGZyb20gJ21pc2Fnby91dGlscy9tb3VudC1jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgTW9kYWwge1xuICBpbml0KGVsZW1lbnQpIHtcbiAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDtcblxuICAgIHRoaXMuX21vZGFsID0gJChlbGVtZW50KS5tb2RhbCh7c2hvdzogZmFsc2V9KTtcblxuICAgIHRoaXMuX21vZGFsLm9uKCdoaWRkZW4uYnMubW9kYWwnLCAoKSA9PiB7XG4gICAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKHRoaXMuX2VsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgc2hvdyhjb21wb25lbnQpIHtcbiAgICBtb3VudChjb21wb25lbnQsIHRoaXMuX2VsZW1lbnQuaWQpO1xuICAgIHRoaXMuX21vZGFsLm1vZGFsKCdzaG93Jyk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuX21vZGFsLm1vZGFsKCdoaWRlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IE1vZGFsKCk7XG4iLCJpbXBvcnQgeyBzaG93U25hY2tiYXIsIGhpZGVTbmFja2JhciB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy9zbmFja2Jhcic7XG5cbmNvbnN0IEhJREVfQU5JTUFUSU9OX0xFTkdUSCA9IDMwMDtcbmNvbnN0IE1FU1NBR0VfU0hPV19MRU5HVEggPSA1MDAwO1xuXG5leHBvcnQgY2xhc3MgU25hY2tiYXIge1xuICBpbml0KHN0b3JlKSB7XG4gICAgdGhpcy5fc3RvcmUgPSBzdG9yZTtcbiAgICB0aGlzLl90aW1lb3V0ID0gbnVsbDtcbiAgfVxuXG4gIGFsZXJ0KG1lc3NhZ2UsIHR5cGUpIHtcbiAgICBpZiAodGhpcy5fdGltZW91dCkge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KTtcbiAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKGhpZGVTbmFja2JhcigpKTtcblxuICAgICAgdGhpcy5fdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fdGltZW91dCA9IG51bGw7XG4gICAgICAgIHRoaXMuYWxlcnQobWVzc2FnZSwgdHlwZSk7XG4gICAgICB9LCBISURFX0FOSU1BVElPTl9MRU5HVEgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChzaG93U25hY2tiYXIobWVzc2FnZSwgdHlwZSkpO1xuICAgICAgdGhpcy5fdGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goaGlkZVNuYWNrYmFyKCkpO1xuICAgICAgICB0aGlzLl90aW1lb3V0ID0gbnVsbDtcbiAgICAgIH0sIE1FU1NBR0VfU0hPV19MRU5HVEgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNob3J0aGFuZHMgZm9yIG1lc3NhZ2UgdHlwZXNcblxuICBpbmZvKG1lc3NhZ2UpIHtcbiAgICB0aGlzLmFsZXJ0KG1lc3NhZ2UsICdpbmZvJyk7XG4gIH1cblxuICBzdWNjZXNzKG1lc3NhZ2UpIHtcbiAgICB0aGlzLmFsZXJ0KG1lc3NhZ2UsICdzdWNjZXNzJyk7XG4gIH1cblxuICB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAgICB0aGlzLmFsZXJ0KG1lc3NhZ2UsICd3YXJuaW5nJyk7XG4gIH1cblxuICBlcnJvcihtZXNzYWdlKSB7XG4gICAgdGhpcy5hbGVydChtZXNzYWdlLCAnZXJyb3InKTtcbiAgfVxuXG4gIC8vIHNob3J0aGFuZCBmb3IgYXBpIGVycm9yc1xuXG4gIGFwaUVycm9yKHJlamVjdGlvbikge1xuICAgIGxldCBtZXNzYWdlID0gZ2V0dGV4dChcIlVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQuXCIpO1xuXG4gICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDApIHtcbiAgICAgIG1lc3NhZ2UgPSBnZXR0ZXh0KFwiTG9zdCBjb25uZWN0aW9uIHdpdGggYXBwbGljYXRpb24uXCIpO1xuICAgIH1cblxuICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDAgJiYgcmVqZWN0aW9uLmRldGFpbCkge1xuICAgICAgbWVzc2FnZSA9IHJlamVjdGlvbi5kZXRhaWw7XG4gICAgfVxuXG4gICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDQwMykge1xuICAgICAgbWVzc2FnZSA9IHJlamVjdGlvbi5kZXRhaWw7XG4gICAgICBpZiAobWVzc2FnZSA9PT0gXCJQZXJtaXNzaW9uIGRlbmllZFwiKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBnZXR0ZXh0KFxuICAgICAgICAgIFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICBtZXNzYWdlID0gZ2V0dGV4dChcIkFjdGlvbiBsaW5rIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRoaXMuZXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFNuYWNrYmFyKCk7XG4iLCJpbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMsIGNyZWF0ZVN0b3JlIH0gZnJvbSAncmVkdXgnO1xuXG5leHBvcnQgY2xhc3MgU3RvcmVXcmFwcGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fc3RvcmUgPSBudWxsO1xuICAgIHRoaXMuX3JlZHVjZXJzID0ge307XG4gICAgdGhpcy5faW5pdGlhbFN0YXRlID0ge307XG4gIH1cblxuICBhZGRSZWR1Y2VyKG5hbWUsIHJlZHVjZXIsIGluaXRpYWxTdGF0ZSkge1xuICAgIHRoaXMuX3JlZHVjZXJzW25hbWVdID0gcmVkdWNlcjtcbiAgICB0aGlzLl9pbml0aWFsU3RhdGVbbmFtZV0gPSBpbml0aWFsU3RhdGU7XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuX3N0b3JlID0gY3JlYXRlU3RvcmUoXG4gICAgICBjb21iaW5lUmVkdWNlcnModGhpcy5fcmVkdWNlcnMpLCB0aGlzLl9pbml0aWFsU3RhdGUpO1xuICB9XG5cbiAgZ2V0U3RvcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlO1xuICB9XG5cbiAgLy8gU3RvcmUgQVBJXG5cbiAgZ2V0U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLmdldFN0YXRlKCk7XG4gIH1cblxuICBkaXNwYXRjaChhY3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgU3RvcmVXcmFwcGVyKCk7XG4iLCIvKiBnbG9iYWwgenhjdmJuICovXG5leHBvcnQgY2xhc3MgWnhjdmJuIHtcbiAgaW5pdChpbmNsdWRlKSB7XG4gICAgdGhpcy5faW5jbHVkZSA9IGluY2x1ZGU7XG4gIH1cblxuICBzY29yZVBhc3N3b3JkKHBhc3N3b3JkLCBpbnB1dHMpIHtcbiAgICAvLyAwLTQgc2NvcmUsIHRoZSBtb3JlIHRoZSBzdHJvbmdlciBwYXNzd29yZFxuICAgIHJldHVybiB6eGN2Ym4ocGFzc3dvcmQsIGlucHV0cykuc2NvcmU7XG4gIH1cblxuICBsb2FkKCkge1xuICAgIGlmICh0eXBlb2YgenhjdmJuID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB0aGlzLl9pbmNsdWRlLmluY2x1ZGUoJ21pc2Fnby9qcy96eGN2Ym4uanMnKTtcbiAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nUHJvbWlzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fbG9hZGVkUHJvbWlzZSgpO1xuICAgIH1cbiAgfVxuXG4gIF9sb2FkaW5nUHJvbWlzZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgdmFyIHdhaXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB6eGN2Ym4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHdhaXQoKTtcbiAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHdhaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9sb2FkZWRQcm9taXNlKCkge1xuICAgIC8vIHdlIGhhdmUgYWxyZWFkeSBsb2FkZWQgenhjdmJuLmpzLCByZXNvbHZlIGF3YXkhXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgWnhjdmJuKCk7IiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBQcm92aWRlciwgY29ubmVjdCB9IGZyb20gJ3JlYWN0LXJlZHV4JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgQmFubmVkUGFnZSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9iYW5uZWQtcGFnZSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHN0b3JlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zdG9yZSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG4vKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG5sZXQgc2VsZWN0ID0gZnVuY3Rpb24oc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLnRpY2s7XG59O1xuXG5sZXQgUmVkcmF3ZWRCYW5uZWRQYWdlID0gY29ubmVjdChzZWxlY3QpKEJhbm5lZFBhZ2UpO1xuLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYmFuLCBjaGFuZ2VTdGF0ZSkge1xuICBSZWFjdERPTS5yZW5kZXIoXG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmUuZ2V0U3RvcmUoKX0+XG4gICAgICA8UmVkcmF3ZWRCYW5uZWRQYWdlIG1lc3NhZ2U9e2Jhbi5tZXNzYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzPXtiYW4uZXhwaXJlc19vbiA/IG1vbWVudChiYW4uZXhwaXJlc19vbikgOiBudWxsfSAvPlxuICAgIDwvUHJvdmlkZXI+LFxuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtbW91bnQnKVxuICApO1xuXG4gIGlmICh0eXBlb2YgY2hhbmdlU3RhdGUgPT09ICd1bmRlZmluZWQnIHx8IGNoYW5nZVN0YXRlKSB7XG4gICAgbGV0IGZvcnVtTmFtZSA9IG1pc2Fnby5nZXQoJ1NFVFRJTkdTJykuZm9ydW1fbmFtZTtcbiAgICBkb2N1bWVudC50aXRsZSA9IGdldHRleHQoXCJZb3UgYXJlIGJhbm5lZFwiKSArICcgfCAnICsgZm9ydW1OYW1lO1xuICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgXCJcIiwgbWlzYWdvLmdldCgnQkFOTkVEX1VSTCcpKTtcbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ3JlYWN0LXJlZHV4JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKENvbXBvbmVudCwgcm9vdEVsZW1lbnRJZCwgY29ubmVjdGVkPXRydWUpIHtcbiAgbGV0IHJvb3RFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocm9vdEVsZW1lbnRJZCk7XG5cbiAgaWYgKHJvb3RFbGVtZW50KSB7XG4gICAgaWYgKGNvbm5lY3RlZCkge1xuICAgICAgUmVhY3RET00ucmVuZGVyKFxuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmUuZ2V0U3RvcmUoKX0+XG4gICAgICAgICAgPENvbXBvbmVudCAvPlxuICAgICAgICA8L1Byb3ZpZGVyPixcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICAgICAgcm9vdEVsZW1lbnRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICA8Q29tcG9uZW50IC8+LFxuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgICByb290RWxlbWVudFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsImNsYXNzIE9yZGVyZWRMaXN0IHtcbiAgICBjb25zdHJ1Y3RvcihpdGVtcykge1xuICAgICAgdGhpcy5pc09yZGVyZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXMgfHwgW107XG4gICAgfVxuXG4gICAgYWRkKGtleSwgaXRlbSwgb3JkZXIpIHtcbiAgICAgIHRoaXMuX2l0ZW1zLnB1c2goe1xuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgaXRlbTogaXRlbSxcblxuICAgICAgICBhZnRlcjogb3JkZXIgPyBvcmRlci5hZnRlciB8fCBudWxsIDogbnVsbCxcbiAgICAgICAgYmVmb3JlOiBvcmRlciA/IG9yZGVyLmJlZm9yZSB8fCBudWxsIDogbnVsbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1zW2ldLmtleSA9PT0ga2V5KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zW2ldLml0ZW07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGhhcyhrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldChrZXkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFsdWVzKCkge1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLl9pdGVtc1tpXS5pdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgb3JkZXIodmFsdWVzX29ubHkpIHtcbiAgICAgIGlmICghdGhpcy5pc09yZGVyZWQpIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSB0aGlzLl9vcmRlcih0aGlzLl9pdGVtcyk7XG4gICAgICAgIHRoaXMuaXNPcmRlcmVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlc19vbmx5IHx8IHR5cGVvZiB2YWx1ZXNfb25seSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgb3JkZXJlZFZhbHVlcygpIHtcbiAgICAgIHJldHVybiB0aGlzLm9yZGVyKHRydWUpO1xuICAgIH1cblxuICAgIF9vcmRlcih1bm9yZGVyZWQpIHtcbiAgICAgIC8vIEluZGV4IG9mIHVub3JkZXJlZCBpdGVtc1xuICAgICAgdmFyIGluZGV4ID0gW107XG4gICAgICB1bm9yZGVyZWQuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICBpbmRleC5wdXNoKGl0ZW0ua2V5KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBPcmRlcmVkIGl0ZW1zXG4gICAgICB2YXIgb3JkZXJlZCA9IFtdO1xuICAgICAgdmFyIG9yZGVyaW5nID0gW107XG5cbiAgICAgIC8vIEZpcnN0IHBhc3M6IHJlZ2lzdGVyIGl0ZW1zIHRoYXRcbiAgICAgIC8vIGRvbid0IHNwZWNpZnkgdGhlaXIgb3JkZXJcbiAgICAgIHVub3JkZXJlZC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGlmICghaXRlbS5hZnRlciAmJiAhaXRlbS5iZWZvcmUpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goaXRlbSk7XG4gICAgICAgICAgb3JkZXJpbmcucHVzaChpdGVtLmtleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBTZWNvbmQgcGFzczogcmVnaXN0ZXIgaXRlbXMgdGhhdFxuICAgICAgLy8gc3BlY2lmeSB0aGVpciBiZWZvcmUgdG8gXCJfZW5kXCJcbiAgICAgIHVub3JkZXJlZC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGlmIChpdGVtLmJlZm9yZSA9PT0gXCJfZW5kXCIpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goaXRlbSk7XG4gICAgICAgICAgb3JkZXJpbmcucHVzaChpdGVtLmtleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBUaGlyZCBwYXNzOiBrZWVwIGl0ZXJhdGluZyBpdGVtc1xuICAgICAgLy8gdW50aWwgd2UgaGl0IGl0ZXJhdGlvbnMgbGltaXQgb3IgZmluaXNoXG4gICAgICAvLyBvcmRlcmluZyBsaXN0XG4gICAgICBmdW5jdGlvbiBpbnNlcnRJdGVtKGl0ZW0pIHtcbiAgICAgICAgdmFyIGluc2VydEF0ID0gLTE7XG4gICAgICAgIGlmIChvcmRlcmluZy5pbmRleE9mKGl0ZW0ua2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICBpZiAoaXRlbS5hZnRlcikge1xuICAgICAgICAgICAgaW5zZXJ0QXQgPSBvcmRlcmluZy5pbmRleE9mKGl0ZW0uYWZ0ZXIpO1xuICAgICAgICAgICAgaWYgKGluc2VydEF0ICE9PSAtMSkge1xuICAgICAgICAgICAgICBpbnNlcnRBdCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5iZWZvcmUpIHtcbiAgICAgICAgICAgIGluc2VydEF0ID0gb3JkZXJpbmcuaW5kZXhPZihpdGVtLmJlZm9yZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGluc2VydEF0ICE9PSAtMSkge1xuICAgICAgICAgICAgb3JkZXJlZC5zcGxpY2UoaW5zZXJ0QXQsIDAsIGl0ZW0pO1xuICAgICAgICAgICAgb3JkZXJpbmcuc3BsaWNlKGluc2VydEF0LCAwLCBpdGVtLmtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBpdGVyYXRpb25zID0gMjAwO1xuICAgICAgd2hpbGUgKGl0ZXJhdGlvbnMgPiAwICYmIGluZGV4Lmxlbmd0aCAhPT0gb3JkZXJpbmcubGVuZ3RoKSB7XG4gICAgICAgIGl0ZXJhdGlvbnMgLT0gMTtcbiAgICAgICAgdW5vcmRlcmVkLmZvckVhY2goaW5zZXJ0SXRlbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcmRlcmVkO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBkZWZhdWx0IE9yZGVyZWRMaXN0O1xuIiwiY29uc3QgRU1BSUwgPSAvXigoW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSsoXFwuW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSspKil8KFxcXCIuK1xcXCIpKUAoKFtePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl0rXFwuKStbXjw+KClbXFxdXFwuLDs6XFxzQFxcXCJdezIsfSkkL2k7XG5jb25zdCBVU0VSTkFNRSA9IG5ldyBSZWdFeHAoJ15bMC05YS16XSskJywgJ2knKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKCkge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoJC50cmltKHZhbHVlKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC5cIik7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW1haWwobWVzc2FnZSkge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoIUVNQUlMLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbWVzc2FnZSB8fCBnZXR0ZXh0KFwiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLlwiKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGgobGltaXRWYWx1ZSwgbWVzc2FnZSkge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmV0dXJuTWVzc2FnZSA9ICcnO1xuICAgIHZhciBsZW5ndGggPSAkLnRyaW0odmFsdWUpLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPCBsaW1pdFZhbHVlKSB7XG4gICAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICByZXR1cm5NZXNzYWdlID0gbWVzc2FnZShsaW1pdFZhbHVlLCBsZW5ndGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuTWVzc2FnZSA9IG5nZXR0ZXh0KFxuICAgICAgICAgIFwiRW5zdXJlIHRoaXMgdmFsdWUgaGFzIGF0IGxlYXN0ICUobGltaXRfdmFsdWUpcyBjaGFyYWN0ZXIgKGl0IGhhcyAlKHNob3dfdmFsdWUpcykuXCIsXG4gICAgICAgICAgXCJFbnN1cmUgdGhpcyB2YWx1ZSBoYXMgYXQgbGVhc3QgJShsaW1pdF92YWx1ZSlzIGNoYXJhY3RlcnMgKGl0IGhhcyAlKHNob3dfdmFsdWUpcykuXCIsXG4gICAgICAgICAgbGltaXRWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUocmV0dXJuTWVzc2FnZSwge1xuICAgICAgICBsaW1pdF92YWx1ZTogbGltaXRWYWx1ZSxcbiAgICAgICAgc2hvd192YWx1ZTogbGVuZ3RoXG4gICAgICB9LCB0cnVlKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXhMZW5ndGgobGltaXRWYWx1ZSwgbWVzc2FnZSkge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmV0dXJuTWVzc2FnZSA9ICcnO1xuICAgIHZhciBsZW5ndGggPSAkLnRyaW0odmFsdWUpLmxlbmd0aDtcblxuICAgIGlmIChsZW5ndGggPiBsaW1pdFZhbHVlKSB7XG4gICAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICByZXR1cm5NZXNzYWdlID0gbWVzc2FnZShsaW1pdFZhbHVlLCBsZW5ndGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuTWVzc2FnZSA9IG5nZXR0ZXh0KFxuICAgICAgICAgIFwiRW5zdXJlIHRoaXMgdmFsdWUgaGFzIGF0IG1vc3QgJShsaW1pdF92YWx1ZSlzIGNoYXJhY3RlciAoaXQgaGFzICUoc2hvd192YWx1ZSlzKS5cIixcbiAgICAgICAgICBcIkVuc3VyZSB0aGlzIHZhbHVlIGhhcyBhdCBtb3N0ICUobGltaXRfdmFsdWUpcyBjaGFyYWN0ZXJzIChpdCBoYXMgJShzaG93X3ZhbHVlKXMpLlwiLFxuICAgICAgICAgIGxpbWl0VmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGludGVycG9sYXRlKHJldHVybk1lc3NhZ2UsIHtcbiAgICAgICAgbGltaXRfdmFsdWU6IGxpbWl0VmFsdWUsXG4gICAgICAgIHNob3dfdmFsdWU6IGxlbmd0aFxuICAgICAgfSwgdHJ1ZSk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlcm5hbWVNaW5MZW5ndGgoc2V0dGluZ3MpIHtcbiAgdmFyIG1lc3NhZ2UgPSBmdW5jdGlvbihsaW1pdFZhbHVlKSB7XG4gICAgcmV0dXJuIG5nZXR0ZXh0KFxuICAgICAgXCJVc2VybmFtZSBtdXN0IGJlIGF0IGxlYXN0ICUobGltaXRfdmFsdWUpcyBjaGFyYWN0ZXIgbG9uZy5cIixcbiAgICAgIFwiVXNlcm5hbWUgbXVzdCBiZSBhdCBsZWFzdCAlKGxpbWl0X3ZhbHVlKXMgY2hhcmFjdGVycyBsb25nLlwiLFxuICAgICAgbGltaXRWYWx1ZSk7XG4gIH07XG4gIHJldHVybiB0aGlzLm1pbkxlbmd0aChzZXR0aW5ncy51c2VybmFtZV9sZW5ndGhfbWluLCBtZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJuYW1lTWF4TGVuZ3RoKHNldHRpbmdzKSB7XG4gIHZhciBtZXNzYWdlID0gZnVuY3Rpb24obGltaXRWYWx1ZSkge1xuICAgIHJldHVybiBuZ2V0dGV4dChcbiAgICAgIFwiVXNlcm5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuICUobGltaXRfdmFsdWUpcyBjaGFyYWN0ZXIuXCIsXG4gICAgICBcIlVzZXJuYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlKGxpbWl0X3ZhbHVlKXMgY2hhcmFjdGVycy5cIixcbiAgICAgIGxpbWl0VmFsdWUpO1xuICB9O1xuICByZXR1cm4gdGhpcy5tYXhMZW5ndGgoc2V0dGluZ3MudXNlcm5hbWVfbGVuZ3RoX21heCwgbWVzc2FnZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VybmFtZUNvbnRlbnQoKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIGlmICghVVNFUk5BTUUudGVzdCgkLnRyaW0odmFsdWUpKSkge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCJVc2VybmFtZSBjYW4gb25seSBjb250YWluIGxhdGluIGFscGhhYmV0IGxldHRlcnMgYW5kIGRpZ2l0cy5cIik7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmRNaW5MZW5ndGgoc2V0dGluZ3MpIHtcbiAgdmFyIG1lc3NhZ2UgPSBmdW5jdGlvbihsaW1pdFZhbHVlKSB7XG4gICAgcmV0dXJuIG5nZXR0ZXh0KFxuICAgICAgXCJWYWxpZCBwYXNzd29yZCBtdXN0IGJlIGF0IGxlYXN0ICUobGltaXRfdmFsdWUpcyBjaGFyYWN0ZXIgbG9uZy5cIixcbiAgICAgIFwiVmFsaWQgcGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCAlKGxpbWl0X3ZhbHVlKXMgY2hhcmFjdGVycyBsb25nLlwiLFxuICAgICAgbGltaXRWYWx1ZSk7XG4gIH07XG4gIHJldHVybiB0aGlzLm1pbkxlbmd0aChzZXR0aW5ncy5wYXNzd29yZF9sZW5ndGhfbWluLCBtZXNzYWdlKTtcbn0iXX0=
+!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":62}],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":45,"../../../../../documents/misago/frontend/src/services/ajax":50}],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":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61,"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":45,"../../../../../documents/misago/frontend/src/reducers/auth":46,"../../../../../documents/misago/frontend/src/services/store":58}],5:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){u["default"].init(f["default"],p["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),m=e("../../../../../documents/misago/frontend/src/services/local-storage"),p=a(m);s["default"].addInitializer({name:"auth",initializer:r,after:"store"})},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/auth":51,"../../../../../documents/misago/frontend/src/services/local-storage":54,"../../../../../documents/misago/frontend/src/services/modal":56,"../../../../../documents/misago/frontend/src/services/store":58}],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":45,"../../../../../documents/misago/frontend/src/utils/banned-page":60}],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"],p["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),m=e("../../../../../documents/misago/frontend/src/services/snackbar"),p=a(m);s["default"].addInitializer({name:"captcha",initializer:r})},{"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/services/ajax":50,"../../../../../documents/misago/frontend/src/services/captcha":52,"../../../../../documents/misago/frontend/src/services/include":53,"../../../../../documents/misago/frontend/src/services/snackbar":57}],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":45,"../../../../../documents/misago/frontend/src/services/include":53}],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":45,"../../../../../documents/misago/frontend/src/services/local-storage":54}],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":45,"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown":55}],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":45,"../../../../../documents/misago/frontend/src/services/modal":56}],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":45,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":37,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61}],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":38,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61}],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":39,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61}],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":41,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61,"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":45,"../../../../../documents/misago/frontend/src/reducers/snackbar":47,"../../../../../documents/misago/frontend/src/services/store":58}],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":45,"../../../../../documents/misago/frontend/src/services/snackbar":57,"../../../../../documents/misago/frontend/src/services/store":58}],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":45,"../../../../../documents/misago/frontend/src/services/store":58}],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":45,"../../../../../documents/misago/frontend/src/reducers/tick":48,"../../../../../documents/misago/frontend/src/services/store":58}],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":45,"../../../../../documents/misago/frontend/src/reducers/tick":48,"../../../../../documents/misago/frontend/src/services/store":58}],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":43,"../../../../../documents/misago/frontend/src/index":45,"../../../../../documents/misago/frontend/src/utils/mount-component":61,"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":45,"../../../../../documents/misago/frontend/src/services/include":53,"../../../../../documents/misago/frontend/src/services/zxcvbn":59}],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":32,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),f=e("../button"),m=a(f),p=e("../loader"),h=a(p),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.props.showError(e),t.setState({isLoading:!1})}))}},{key:"getGravatarButton",value:function(){return this.props.options.gravatar?l["default"].createElement(m["default"],{onClick:this.setGravatar,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gravatar"},gettext("Download my Gravatar")):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(m["default"],{onClick:this.setGenerated,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-generate"},gettext("Generate my individual avatar")))))}}]),t}(l["default"].Component);n["default"]=_},{"../../services/ajax":50,"../../services/snackbar":57,"../avatar":25,"../button":27,"../loader":32,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)}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),m=e("../modal-loader"),p=a(m),h=e("../../reducers/users"),v=e("../../services/ajax"),g=a(v),b=e("../../services/store"),y=a(b),_=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),w=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.completeFlow=function(e,t){y["default"].dispatch((0,h.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;g["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(_,{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.onComplete,showError:this.showError,showIndex:this.showIndex}):c["default"].createElement(p["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"]=w},{"../../reducers/users":49,"../../services/ajax":50,"../../services/store":58,"../modal-loader":33,"./index":28,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=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"}],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)}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":63,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=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"}],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=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":32,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}),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"],m=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.")],p=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"},m[e]))),l["default"].createElement("p",{className:"text-small"},m[e]))}}]),t}(l["default"].Component);n["default"]=p},{"../services/zxcvbn":59,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=e("./loader"),d=a(c),f=e("./register.js"),m=a(f),p=e("../services/captcha"),h=a(p),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(m["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(m["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":52,"../services/modal":56,"../services/snackbar":57,"../services/zxcvbn":59,"./loader":32,"./register.js":36,react:"react"}],36:[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),m=e("./form"),p=r(m),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),P=e("../services/modal"),N=r(P),C=e("../services/snackbar"),S=r(C),M=e("../utils/banned-page"),T=r(M),I=e("../utils/validators"),A=a(I),R=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}(p["default"]),L=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?(N["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(L,{activation:this.state.complete.activation,username:this.state.complete.username,email:this.state.complete.email}):c["default"].createElement(R,{callback:this.completeRegistration})}}]),t}(c["default"].Component);n["default"]=z},{"../index":45,"../services/ajax":50,"../services/auth":51,"../services/captcha":52,"../services/modal":56,"../services/snackbar":57,"../utils/banned-page":60,"../utils/validators":63,"./button":27,"./form":31,"./form-group":30,"./password-strength":34,react:"react"}],37:[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),m=e("./button"),p=r(m),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(p["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":45,"../services/ajax":50,"../services/snackbar":57,"../utils/banned-page":60,"../utils/validators":63,"./button":27,"./form":31,react:"react"}],38:[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),m=e("../index"),p=r(m),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),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:[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(p["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:p["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":45,"../services/ajax":50,"../services/snackbar":57,"../utils/banned-page":60,"../utils/validators":63,"./button":27,"./form":31,react:"react","react-dom":"react-dom"}],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.PasswordChangedPage=n.ResetPasswordForm=void 0;var l=e("react"),c=r(l),d=e("react-dom"),f=r(d),m=e("../index"),p=r(m),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),P=e("../services/snackbar"),N=r(P),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(p["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(p["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),R=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"]=R},{"../index":45,"../services/ajax":50,"../services/auth":51,"../services/modal":56,"../services/snackbar":57,"../utils/banned-page":60,"../utils/validators":63,"./button":27,"./form":31,"./sign-in.js":40,react:"react","react-dom":"react-dom"}],40:[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"),m=a(f),p=e("./form"),h=a(p),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(m["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":45,"../services/ajax":50,"../services/modal":56,"../services/snackbar":57,"../utils/banned-page":60,"./button":27,"./form":31,react:"react"}],41:[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"}],42:[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"),m=a(f),p=e("../sign-in.js"),h=a(p),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(m["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(m["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":55,"../../services/modal":56,"../avatar":25,"../register-button":35,"../sign-in.js":40,react:"react"}],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)}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":42,"./user-nav":44,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{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"),m=a(f),p=e("../change-avatar/root"),h=a(p),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)(p.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(m["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(m["default"],{user:this.props.user,size:"64"}))}}]),t}(c["default"].Component)},{"../../index":45,"../../services/mobile-navbar-dropdown":55,"../../services/modal":56,"../avatar":25,"../change-avatar/root":29,react:"react","react-redux":"react-redux"}],45:[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":62}],46:[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":49}],47:[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"},{}],48:[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"},{}],49:[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"},{}],50:[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||{},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)}}]),e}();n["default"]=new o},{}],51:[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":46}],52:[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}(),m=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),p=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 m;break;case"qa":this._captcha=new p;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":30,react:"react"}],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.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},{}],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});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},{}],55:[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":61}],56:[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":61,"react-dom":"react-dom"}],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}),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":47}],58:[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"}],59:[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},{}],60:[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=p["default"].get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+n,window.history.pushState({},"",p["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),m=e("../index"),p=a(m),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":45,"../services/store":58,moment:"moment",react:"react","react-dom":"react-dom","react-redux":"react-redux"}],61:[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":58,react:"react","react-dom":"react-dom","react-redux":"react-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=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},{}],63:[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]);
+//# 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","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","prototype","Object","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","select","state","user","auth","signedIn","signedOut","_createClass","defineProperties","target","props","descriptor","defineProperty","key","protoProps","staticProps","_react","_react2","_class","_React$Component","this","getPrototypeOf","apply","arguments","window","location","reload","interpolate","gettext","username","createElement","className","getClassName","getMessage","type","onClick","refresh","Component","react",2,"BASE_URL","$","attr","size","url","id","avatar_hash","src","getSrc","title",3,"_moment","_moment2","message","html","dangerouslySetInnerHTML","__html","plain","expires","isAfter","expires_on","fromNow","getReasonMessage","getExpirationMessage","moment",4,"_loader","_loader2","Button","disabled","loading","children","defaultProps","./loader",5,"_avatar","_avatar2","_button","_button2","_ajax","_ajax2","_snackbar","_snackbar2","_this","setGravatar","callApi","setGenerated","isLoading","avatarType","_this2","setState","post","avatar_api_url","avatar","then","response","success","detail","updateAvatar","options","rejection","status","error","showError","gravatar","getAvatarPreview","getGravatarButton","../../services/ajax","../../services/snackbar","../avatar","../button","../loader",6,"ChangeAvatarError","undefined","_index","_index2","_modalLoader","_modalLoader2","_index3","_index4","_users","_store","_store2","reason","getErrorReason","_React$Component2","_Object$getPrototypeO","_temp","_ret","_len","args","Array","_key","concat","avatarHash","dispatch","component","showIndex","_this3","Promise","all","get","resolutions","role","data-dismiss","aria-label","aria-hidden","getBody","../../index","../../reducers/users","../../services/store","../modal-loader","./index",7,"validation","isValidated","map","helpText","labelClass","htmlFor","label","controlClass","getFeedbackIcon","getFeedbackDescription","getFeedback","getHelpText","extra",8,"_validators","validateRequired","required","bindInput","name","event","newState","formErrors","errors","validateField","handleSubmit","preventDefault","clean","promise","send","handleSuccess","handleError","validators","optional","validatedFields","hasOwnProperty","push","fieldErrors","validate","field","requiredError","validationError","../utils/validators",9,10,11,"LABELS","STYLES","_zxcvbn","_zxcvbn2","_score","_password","_inputs","password","inputs","cacheStale","trim","scorePassword","score","getScore","style","width","aria-valuenow","aria-valuemin","aria-valuemax","../services/zxcvbn",12,"_register","_register2","_captcha","_captcha2","_modal","_modal2","showRegisterModal","misago","account_activation","info","isLoaded","show","load","../services/captcha","../services/modal","../services/snackbar","./register.js",13,"_interopRequireWildcard","newObj","RegisterComplete","RegisterForm","_form","_form2","_formGroup","_formGroup2","_passwordStrength","_passwordStrength2","_auth","_auth2","_bannedPage","_bannedPage2","_Form","email","captcha","usernameContent","usernameMinLength","usernameMaxLength","passwordMinLength","validator","isValid","apiResponse","callback","assign","ban","hide","apiError","href","onSubmit","display","for","aria-describedby","onChange","form","getLegalFootNote","activation","getLead","getSubscript","completeRegistration","signIn","complete","../index","../services/ajax","../services/auth","../utils/banned-page","./button","./form","./form-group","./password-strength",14,"LinkSent","RequestLinkForm","indexOf","placeholder","reset",15,"AccountInactivePage","RequestResetForm","_reactDom","_reactDom2","showInactivePage","getActivateButton","_React$Component3","_this4","render","document","getElementById","react-dom",16,"PasswordChangedPage","ResetPasswordForm","_signIn","_signIn2","showSignIn","softSignOut","remove","./sign-in.js",17,"showActivation","append","find","val","getCsrfToken","pathname","submit","getActivationButton",18,"snackbar","Snackbar","TYPES_CLASSES","warning","snackbarClass","isVisible","getSnackbarClass",19,"CompactGuestNav","GuestNav","GuestMenu","_registerButton","_registerButton2","_mobileNavbarDropdown","_mobileNavbarDropdown2","showSignInModal","_GuestMenu","showGuestMenu","../../services/mobile-navbar-dropdown","../../services/modal","../register-button","../sign-in.js",20,"CompactUserMenu","UserMenu","_guestNav","_userNav","isAuthenticated","UserNav","CompactUserNav","./guest-nav","./user-nav",21,"selectUserMenu","store","_reactRedux","_root","_root2","decision","confirm","connect","absolute_url","changeAvatar","logout","data-toggle","aria-haspopup","aria-expanded","showConnected","showUserMenu","../change-avatar/root","react-redux",22,"global","Misago","_orderedList","_orderedList2","_initializers","_context","initializer","item","after","before","context","initOrder","orderedValues","forEach","fallback","has","./utils/ordered-list",23,"init","addInitializer",24,"_mountComponent2","_authMessage","_authMessage2","_mountComponent","../components/auth-message","../utils/mount-component",25,"addReducer","isAnonymous","initialState","../reducers/auth","../services/store",26,"_localStorage2","_localStorage","../services/local-storage",27,28,"_include2","_include","../services/include",29,30,31,"element","../services/mobile-navbar-dropdown",32,33,"locale",34,"_requestActivationLink2","_requestActivationLink","../components/request-activation-link",35,"_requestPasswordReset2","_requestPasswordReset","../components/request-password-reset",36,"_resetPasswordForm2","_resetPasswordForm","../components/reset-password-form",37,"../components/snackbar",38,"../reducers/snackbar",39,40,41,"_tick2","_tick","../reducers/tick",42,"setInterval","doTick","TICK_PERIOD",43,"../components/user-menu/root",44,45,"SIGN_IN","signOut","soft","SIGN_OUT","action","UPDATE_AVATAR","userId","./users",46,"showSnackbar","SHOW_SNACKBAR","messageType","hideSnackbar","HIDE_SNACKBAR",47,"TICK","tick",48,49,"Ajax","_cookieName","_csrfToken","cookieName","cookie","cookieRegex","RegExp","match","split","method","data","resolve","reject","xhr","headers","X-CSRFToken","dataType","jqXHR","responseJSON","statusText","ajax","request",50,"Auth","local","_local","syncSession","watchState","getState","set","watch",51,"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",52,"Include","staticUrl","_staticUrl","_included","script","remote","cache",53,"storage","localStorage","LocalStorage","prefix","_prefix","_watchers","addEventListener","newValueJson","JSON","parse","newValue","watcher","oldValue","setItem","stringify","itemString","getItem",54,"MobileNavbarDropdown","_element","_component","addClass","removeClass",55,"Modal","modal","on","unmountComponentAtNode",56,"HIDE_ANIMATION_LENGTH","MESSAGE_SHOW_LENGTH","_timeout","clearTimeout","alert",57,"StoreWrapper","_redux","_reducers","_initialState","reducer","createStore","combineReducers","redux",58,"Zxcvbn","zxcvbn","_loadingPromise","_loadedPromise",59,"changeState","Provider","getStore","RedrawedBannedPage","forumName","forum_name","history","pushState","../components/banned-page",60,"mount","rootElementId","connected","rootElement",61,"OrderedList","items","isOrdered","_items","order","values","values_only","_order","unordered","insertItem","insertAt","ordering","ordered","splice","index","iterations",62,"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\"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\"}],2:[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\"}],3:[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\"}],4:[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\":9,\"react\":\"react\"}],5:[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        _snackbar2.default.success(response.detail);\n        _this2.props.updateAvatar(response.avatar_hash, response.options);\n\n        _this2.setState({\n          'isLoading': false\n        });\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n        } else {\n          _snackbar2.default.showError(rejection);\n        }\n\n        _this2.setState({\n          'isLoading': false\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' },\n          gettext(\"Download my Gravatar\")\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' },\n              gettext(\"Generate my individual avatar\")\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\":49,\"../../services/snackbar\":56,\"../avatar\":2,\"../button\":4,\"../loader\":9,\"react\":\"react\"}],6:[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 _modalLoader = require('../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _index3 = require('../../index');\n\nvar _index4 = _interopRequireDefault(_index3);\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\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.updateAvatar = 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    }, _this2.showIndex = function () {\n      _this2.setState({\n        'component': _index2.default\n      });\n    }, _temp), _possibleConstructorReturn(_this2, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this3 = this;\n\n      Promise.all([_ajax2.default.get(_index4.default.get('user').avatar_api_url)]).then(function (resolutions) {\n        _this3.setState({\n          'component': _index2.default,\n          'options': resolutions[0]\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              updateAvatar: this.updateAvatar,\n              showIndex: this.showIndex });\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},{\"../../index\":22,\"../../reducers/users\":48,\"../../services/ajax\":49,\"../../services/store\":57,\"../modal-loader\":10,\"./index\":5,\"react\":\"react\"}],7:[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        ),\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\"}],8:[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\":62,\"react\":\"react\"}],9:[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\"}],10:[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\":9,\"react\":\"react\"}],11:[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\":58,\"react\":\"react\"}],12:[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\":51,\"../services/modal\":55,\"../services/snackbar\":56,\"../services/zxcvbn\":58,\"./loader\":9,\"./register.js\":13,\"react\":\"react\"}],13:[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\":22,\"../services/ajax\":49,\"../services/auth\":50,\"../services/captcha\":51,\"../services/modal\":55,\"../services/snackbar\":56,\"../utils/banned-page\":59,\"../utils/validators\":62,\"./button\":4,\"./form\":8,\"./form-group\":7,\"./password-strength\":11,\"react\":\"react\"}],14:[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\":22,\"../services/ajax\":49,\"../services/snackbar\":56,\"../utils/banned-page\":59,\"../utils/validators\":62,\"./button\":4,\"./form\":8,\"react\":\"react\"}],15:[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\":22,\"../services/ajax\":49,\"../services/snackbar\":56,\"../utils/banned-page\":59,\"../utils/validators\":62,\"./button\":4,\"./form\":8,\"react\":\"react\",\"react-dom\":\"react-dom\"}],16:[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\":22,\"../services/ajax\":49,\"../services/auth\":50,\"../services/modal\":55,\"../services/snackbar\":56,\"../utils/banned-page\":59,\"../utils/validators\":62,\"./button\":4,\"./form\":8,\"./sign-in.js\":17,\"react\":\"react\",\"react-dom\":\"react-dom\"}],17:[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\":22,\"../services/ajax\":49,\"../services/modal\":55,\"../services/snackbar\":56,\"../utils/banned-page\":59,\"./button\":4,\"./form\":8,\"react\":\"react\"}],18:[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\"}],19:[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\":54,\"../../services/modal\":55,\"../avatar\":2,\"../register-button\":12,\"../sign-in.js\":17,\"react\":\"react\"}],20:[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\":19,\"./user-nav\":21,\"react\":\"react\"}],21:[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(store) {\n  return { user: store.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\":22,\"../../services/mobile-navbar-dropdown\":54,\"../../services/modal\":55,\"../avatar\":2,\"../change-avatar/root\":6,\"react\":\"react\",\"react-redux\":\"react-redux\"}],22:[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\":61}],23:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../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},{\"../index\":22,\"../services/ajax\":49}],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('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _authMessage = require('../components/auth-message');\n\nvar _authMessage2 = _interopRequireDefault(_authMessage);\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 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},{\"../components/auth-message\":1,\"../index\":22,\"../utils/mount-component\":60,\"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('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../reducers/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _store = require('../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},{\"../index\":22,\"../reducers/auth\":45,\"../services/store\":57}],26:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _store = require('../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _localStorage = require('../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);\n}\n\n_index2.default.addInitializer({\n  name: 'auth',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../index\":22,\"../services/auth\":50,\"../services/local-storage\":53,\"../services/store\":57}],27:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\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 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},{\"../index\":22,\"../utils/banned-page\":59}],28:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _captcha = require('../services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _include = require('../services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _snackbar = require('../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},{\"../index\":22,\"../services/ajax\":49,\"../services/captcha\":51,\"../services/include\":52,\"../services/snackbar\":56}],29:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../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},{\"../index\":22,\"../services/include\":52}],30:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _localStorage = require('../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},{\"../index\":22,\"../services/local-storage\":53}],31:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../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},{\"../index\":22,\"../services/mobile-navbar-dropdown\":54}],32:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _modal = require('../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},{\"../index\":22,\"../services/modal\":55}],33:[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('../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},{\"../index\":22,\"moment\":\"moment\"}],34:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestActivationLink = require('../components/request-activation-link');\n\nvar _requestActivationLink2 = _interopRequireDefault(_requestActivationLink);\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 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},{\"../components/request-activation-link\":14,\"../index\":22,\"../utils/mount-component\":60}],35:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestPasswordReset = require('../components/request-password-reset');\n\nvar _requestPasswordReset2 = _interopRequireDefault(_requestPasswordReset);\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 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},{\"../components/request-password-reset\":15,\"../index\":22,\"../utils/mount-component\":60}],36:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _resetPasswordForm = require('../components/reset-password-form');\n\nvar _resetPasswordForm2 = _interopRequireDefault(_resetPasswordForm);\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 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},{\"../components/reset-password-form\":16,\"../index\":22,\"../utils/mount-component\":60}],37:[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('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../components/snackbar');\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 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},{\"../components/snackbar\":18,\"../index\":22,\"../utils/mount-component\":60,\"react-redux\":\"react-redux\"}],38:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../reducers/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 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},{\"../index\":22,\"../reducers/snackbar\":46,\"../services/store\":57}],39:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\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 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},{\"../index\":22,\"../services/snackbar\":56,\"../services/store\":57}],40:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\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\nfunction initializer() {\n  _store2.default.init();\n}\n\n_index2.default.addInitializer({\n  name: 'store',\n  initializer: initializer,\n  before: '_end'\n});\n\n},{\"../index\":22,\"../services/store\":57}],41:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../reducers/tick');\n\nvar _tick2 = _interopRequireDefault(_tick);\n\nvar _store = require('../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},{\"../index\":22,\"../reducers/tick\":47,\"../services/store\":57}],42:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../reducers/tick');\n\nvar _store = require('../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},{\"../index\":22,\"../reducers/tick\":47,\"../services/store\":57}],43:[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('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _root = require('../components/user-menu/root');\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 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},{\"../components/user-menu/root\":20,\"../index\":22,\"../utils/mount-component\":60,\"react-redux\":\"react-redux\"}],44:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _zxcvbn = require('../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},{\"../index\":22,\"../services/include\":52,\"../services/zxcvbn\":58}],45:[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\":48}],46:[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},{}],47:[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},{}],48:[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},{}],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\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 || {},\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            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\n  return Ajax;\n})();\n\nexports.default = new Ajax();\n\n},{}],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.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) {\n      this._store = store;\n      this._local = local;\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    }\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    }\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    }\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    }\n  }]);\n\n  return Auth;\n})();\n\nexports.default = new Auth();\n\n},{\"../reducers/auth\":45}],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; }; })(); /* 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\":7,\"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});\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},{}],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 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},{}],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.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\":60}],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});\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\":60,\"react-dom\":\"react-dom\"}],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});\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 = gettext(\"Lost connection with application.\");\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\":46}],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});\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\"}],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\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},{}],59:[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\":3,\"../index\":22,\"../services/store\":57,\"moment\":\"moment\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],60:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = mount;\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// jshint ignore:line\n\nfunction mount(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} // jshint ignore:line\n// jshint ignore:line\n\n},{\"../services/store\":57,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],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});\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},{}],62:[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},{}]},{},[22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44]);\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","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","_avatar2","_button","_button2","setGravatar","callApi","setGenerated","isLoading","avatarType","_this2","setState","post","avatar_api_url","avatar","then","response","success","detail","onComplete","options","rejection","status","error","showError","gravatar","getAvatarPreview","getGravatarButton","../../services/ajax","../../services/snackbar","../avatar","../button","../loader",29,"ChangeAvatarError","_modalLoader","_modalLoader2","_users","reason","getErrorReason","_React$Component2","_Object$getPrototypeO","_temp","_ret","_len","args","Array","_key","concat","showIndex","component","completeFlow","avatarHash","updateAvatar","_this3","role","data-dismiss","aria-label","aria-hidden","getBody","../../reducers/users","../../services/store","../modal-loader","./index",30,"validation","isValidated","map","helpText","labelClass","htmlFor","label","controlClass","getFeedbackIcon","getFeedbackDescription","getFeedback","getHelpText","extra",31,"_validators","validateRequired","required","bindInput","event","newState","formErrors","errors","validateField","handleSubmit","preventDefault","clean","promise","send","handleSuccess","handleError","validators","optional","validatedFields","fieldErrors","validate","field","requiredError","validationError","../utils/validators",32,33,34,"LABELS","STYLES","_score","_password","_inputs","password","inputs","cacheStale","trim","scorePassword","score","getScore","style","width","aria-valuenow","aria-valuemin","aria-valuemax","../services/zxcvbn",35,"_register","_register2","showRegisterModal","account_activation","info","isLoaded","show","Promise","all","load","../services/captcha","../services/modal","../services/snackbar","./register.js",36,"_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","onChange","form","getLegalFootNote","activation","getLead","getSubscript","completeRegistration","signIn","complete","../index","../services/ajax","../services/auth","../utils/banned-page","./button","./form","./form-group","./password-strength",37,"LinkSent","RequestLinkForm","indexOf","placeholder","reset",38,"AccountInactivePage","RequestResetForm","_reactDom","_reactDom2","showInactivePage","getActivateButton","_React$Component3","_this4","render","react-dom",39,"PasswordChangedPage","ResetPasswordForm","_signIn","_signIn2","showSignIn","softSignOut","remove","./sign-in.js",40,"showActivation","append","find","val","getCsrfToken","pathname","submit","getActivationButton",41,"snackbar","TYPES_CLASSES","warning","snackbarClass","isVisible","getSnackbarClass",42,"CompactGuestNav","GuestNav","GuestMenu","_registerButton","_registerButton2","showSignInModal","_GuestMenu","showGuestMenu","../../services/mobile-navbar-dropdown","../../services/modal","../register-button","../sign-in.js",43,"_guestNav","_userNav","UserNav","CompactUserNav","./guest-nav","./user-nav",44,"selectUserMenu","_root2","decision","confirm","absolute_url","changeAvatar","logout","data-toggle","aria-haspopup","aria-expanded","showConnected","showUserMenu","../../index","../change-avatar/root",45,"./utils/ordered-list",46,"SIGN_IN","signOut","soft","SIGN_OUT","action","UPDATE_AVATAR","userId","./users",47,"showSnackbar","SHOW_SNACKBAR","messageType","hideSnackbar","HIDE_SNACKBAR",48,"TICK","tick",49,50,"Ajax","_cookieName","_csrfToken","cookieName","cookie","cookieRegex","RegExp","match","split","method","data","resolve","reject","xhr","headers","X-CSRFToken","dataType","jqXHR","responseJSON","statusText","ajax","request",51,"Auth","store","local","modal","_local","syncSession","watchState","getState","set","watch","../reducers/auth",52,"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",53,"Include","staticUrl","_staticUrl","_included","script","remote","cache",54,"storage","localStorage","LocalStorage","prefix","_prefix","_watchers","addEventListener","newValueJson","JSON","parse","newValue","watcher","oldValue","setItem","stringify","itemString","getItem",55,"MobileNavbarDropdown","_element","_component","addClass","removeClass","../utils/mount-component",56,"Modal","on","unmountComponentAtNode",57,"HIDE_ANIMATION_LENGTH","MESSAGE_SHOW_LENGTH","_timeout","clearTimeout","alert","../reducers/snackbar",58,"StoreWrapper","_redux","_reducers","_initialState","reducer","createStore","combineReducers","redux",59,"Zxcvbn","zxcvbn","_loadingPromise","_loadedPromise",60,"changeState","Provider","getStore","RedrawedBannedPage","forumName","forum_name","history","pushState","../components/banned-page","../services/store",61,"rootElementId","connected","rootElement",62,"OrderedList","items","isOrdered","_items","order","values","values_only","_order","unordered","insertItem","insertAt","ordering","ordered","splice","index","iterations",63,"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\":62}],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\":45,\"../../../../../documents/misago/frontend/src/services/ajax\":50}],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\":45,\"../../../../../documents/misago/frontend/src/utils/mount-component\":61,\"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\":45,\"../../../../../documents/misago/frontend/src/reducers/auth\":46,\"../../../../../documents/misago/frontend/src/services/store\":58}],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\":45,\"../../../../../documents/misago/frontend/src/services/auth\":51,\"../../../../../documents/misago/frontend/src/services/local-storage\":54,\"../../../../../documents/misago/frontend/src/services/modal\":56,\"../../../../../documents/misago/frontend/src/services/store\":58}],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\":45,\"../../../../../documents/misago/frontend/src/utils/banned-page\":60}],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\":45,\"../../../../../documents/misago/frontend/src/services/ajax\":50,\"../../../../../documents/misago/frontend/src/services/captcha\":52,\"../../../../../documents/misago/frontend/src/services/include\":53,\"../../../../../documents/misago/frontend/src/services/snackbar\":57}],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\":45,\"../../../../../documents/misago/frontend/src/services/include\":53}],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\":45,\"../../../../../documents/misago/frontend/src/services/local-storage\":54}],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\":45,\"../../../../../documents/misago/frontend/src/services/mobile-navbar-dropdown\":55}],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\":45,\"../../../../../documents/misago/frontend/src/services/modal\":56}],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\":45,\"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\":37,\"../../../../../documents/misago/frontend/src/index\":45,\"../../../../../documents/misago/frontend/src/utils/mount-component\":61}],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\":38,\"../../../../../documents/misago/frontend/src/index\":45,\"../../../../../documents/misago/frontend/src/utils/mount-component\":61}],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\":39,\"../../../../../documents/misago/frontend/src/index\":45,\"../../../../../documents/misago/frontend/src/utils/mount-component\":61}],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\":41,\"../../../../../documents/misago/frontend/src/index\":45,\"../../../../../documents/misago/frontend/src/utils/mount-component\":61,\"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\":45,\"../../../../../documents/misago/frontend/src/reducers/snackbar\":47,\"../../../../../documents/misago/frontend/src/services/store\":58}],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\":45,\"../../../../../documents/misago/frontend/src/services/snackbar\":57,\"../../../../../documents/misago/frontend/src/services/store\":58}],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\":45,\"../../../../../documents/misago/frontend/src/services/store\":58}],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\":45,\"../../../../../documents/misago/frontend/src/reducers/tick\":48,\"../../../../../documents/misago/frontend/src/services/store\":58}],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\":45,\"../../../../../documents/misago/frontend/src/reducers/tick\":48,\"../../../../../documents/misago/frontend/src/services/store\":58}],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\":43,\"../../../../../documents/misago/frontend/src/index\":45,\"../../../../../documents/misago/frontend/src/utils/mount-component\":61,\"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\":45,\"../../../../../documents/misago/frontend/src/services/include\":53,\"../../../../../documents/misago/frontend/src/services/zxcvbn\":59}],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\":32,\"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 _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        } else {\n          _this2.props.showError(rejection);\n        }\n\n        _this2.setState({\n          'isLoading': false\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: '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          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":50,\"../../services/snackbar\":57,\"../avatar\":25,\"../button\":27,\"../loader\":32,\"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.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 _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\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.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.onComplete,\n              showError: this.showError,\n              showIndex: this.showIndex });\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\":49,\"../../services/ajax\":50,\"../../services/store\":58,\"../modal-loader\":33,\"./index\":28,\"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\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        ),\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\"}],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});\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\":63,\"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\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\"}],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\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\":32,\"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});\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\":59,\"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\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\":52,\"../services/modal\":56,\"../services/snackbar\":57,\"../services/zxcvbn\":59,\"./loader\":32,\"./register.js\":36,\"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});\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\":45,\"../services/ajax\":50,\"../services/auth\":51,\"../services/captcha\":52,\"../services/modal\":56,\"../services/snackbar\":57,\"../utils/banned-page\":60,\"../utils/validators\":63,\"./button\":27,\"./form\":31,\"./form-group\":30,\"./password-strength\":34,\"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.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\":45,\"../services/ajax\":50,\"../services/snackbar\":57,\"../utils/banned-page\":60,\"../utils/validators\":63,\"./button\":27,\"./form\":31,\"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});\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\":45,\"../services/ajax\":50,\"../services/snackbar\":57,\"../utils/banned-page\":60,\"../utils/validators\":63,\"./button\":27,\"./form\":31,\"react\":\"react\",\"react-dom\":\"react-dom\"}],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.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\":45,\"../services/ajax\":50,\"../services/auth\":51,\"../services/modal\":56,\"../services/snackbar\":57,\"../utils/banned-page\":60,\"../utils/validators\":63,\"./button\":27,\"./form\":31,\"./sign-in.js\":40,\"react\":\"react\",\"react-dom\":\"react-dom\"}],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});\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\":45,\"../services/ajax\":50,\"../services/modal\":56,\"../services/snackbar\":57,\"../utils/banned-page\":60,\"./button\":27,\"./form\":31,\"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.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\"}],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.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\":55,\"../../services/modal\":56,\"../avatar\":25,\"../register-button\":35,\"../sign-in.js\":40,\"react\":\"react\"}],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});\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\":42,\"./user-nav\":44,\"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.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\":45,\"../../services/mobile-navbar-dropdown\":55,\"../../services/modal\":56,\"../avatar\":25,\"../change-avatar/root\":29,\"react\":\"react\",\"react-redux\":\"react-redux\"}],45:[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\":62}],46:[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\":49}],47:[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},{}],48:[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},{}],49:[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},{}],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});\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 || {},\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\n  return Ajax;\n}();\n\nexports.default = new Ajax();\n\n},{}],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});\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\":46}],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; }; }(); /* 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\":30,\"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\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},{}],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\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},{}],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});\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\":61}],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});\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\":61,\"react-dom\":\"react-dom\"}],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});\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\":47}],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.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\"}],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});\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},{}],60:[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\":45,\"../services/store\":58,\"moment\":\"moment\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],61:[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\":58,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-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\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},{}],63:[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/"}

File diff suppressed because it is too large
+ 0 - 33729
misago/static/misago/js/vendor.js


File diff suppressed because it is too large
+ 0 - 0
misago/static/misago/js/vendor.js.map


Some files were not shown because too many files changed in this diff