Browse Source

categories list

Rafał Pitoń 9 years ago
parent
commit
0faad4d66a

+ 3 - 3
frontend/src/components/categories/category.js

@@ -63,7 +63,7 @@ export default class extends React.Component {
   }
   }
 
 
   getSubcategorySubcategories(category) {
   getSubcategorySubcategories(category) {
-    if (category.subcategories) {
+    if (category.subcategories.length) {
       /* jshint ignore:start */
       /* jshint ignore:start */
       return <ul className="list-inline subcategory-subcategories">
       return <ul className="list-inline subcategory-subcategories">
         {category.subcategories.map((category) => {
         {category.subcategories.map((category) => {
@@ -82,11 +82,11 @@ export default class extends React.Component {
   }
   }
 
 
   getSubcategories() {
   getSubcategories() {
-    if (this.props.category.subcategories) {
+    if (this.props.category.subcategories.length) {
       /* jshint ignore:start */
       /* jshint ignore:start */
       return <ul className="list-group category-subcategories">
       return <ul className="list-group category-subcategories">
         {this.props.category.subcategories.map((category) => {
         {this.props.category.subcategories.map((category) => {
-          return <li className="list-group-item category-subcategory"
+          return <li className={this.getSubcategoryClass(category)}
                      key={category.id}>
                      key={category.id}>
             <div className="title-row">
             <div className="title-row">
               <h4>
               <h4>

+ 292 - 0
frontend/tests/components/categories/category.js

@@ -0,0 +1,292 @@
+import assert from 'assert';
+import moment from 'moment'; // jshint ignore:line
+import React from 'react'; // jshint ignore:line
+import Category from 'misago/components/categories/Category'; // jshint ignore:line
+import * as testUtils from 'misago/utils/test-utils';
+
+describe("Categories List Category", function() {
+  afterEach(function() {
+    testUtils.unmountComponents();
+  });
+
+  it("renders", function() {
+    /* jshint ignore:start */
+    let category = {
+      "id": 3,
+      "name": "Games",
+      "description": null,
+      "is_closed": false,
+      "threads": 82,
+      "posts": 1944,
+      "last_post_on": moment(),
+      "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+      "last_poster_name": "Raelyn",
+      "css_class": "accent",
+      "is_read": false,
+      "subcategories": [],
+      "absolute_url": "/categories/#games-3",
+      "last_thread_url": "/not-yet-implemented/",
+      "last_poster_url": "/user/raelyn-74/",
+      "acl": {
+        "can_browse": true,
+        "can_see_all_threads": 1
+      }
+    };
+
+    testUtils.render(<Category category={category} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .panel-category');
+
+    assert.ok(element.length, "component renders");
+    assert.ok(element.hasClass('panel-category-accent'),
+      "component renders with custom css class");
+
+    assert.ok(!element.find('.category-description').length,
+      "category description is not displayed");
+
+    assert.ok(!element.find('.category-subcategories').length,
+      "category subcategories are not displayed");
+  });
+
+  it("renders description", function() {
+    /* jshint ignore:start */
+    let category = {
+      "id": 3,
+      "name": "Games",
+      "description": {
+        "plain": "Lorem ipsum dolor met this is test!",
+        "html": "<p>Lorem ipsum dolor met this is test!</p>"
+      },
+      "is_closed": false,
+      "threads": 82,
+      "posts": 1944,
+      "last_post_on": moment(),
+      "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+      "last_poster_name": "Raelyn",
+      "css_class": "accent",
+      "is_read": false,
+      "subcategories": [],
+      "absolute_url": "/categories/#games-3",
+      "last_thread_url": "/not-yet-implemented/",
+      "last_poster_url": "/user/raelyn-74/",
+      "acl": {
+        "can_browse": true,
+        "can_see_all_threads": 1
+      }
+    };
+
+    testUtils.render(<Category category={category} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .panel-category');
+
+    assert.ok(element.length, "component renders");
+    assert.ok(element.hasClass('panel-category-accent'),
+      "component renders with custom css class");
+
+    assert.equal(element.find('.category-description p').text(),
+      "Lorem ipsum dolor met this is test!",
+      "category description is displayed");
+  });
+
+  it("renders subcategory", function() {
+    /* jshint ignore:start */
+    let category = {
+      "id": 3,
+      "name": "Games",
+      "description": null,
+      "is_closed": false,
+      "threads": 82,
+      "posts": 1944,
+      "last_post_on": moment(),
+      "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+      "last_poster_name": "Raelyn",
+      "css_class": "accent",
+      "is_read": false,
+      "subcategories": [
+        {
+          "id": 5,
+          "name": "Subcategory",
+          "description": null,
+          "is_closed": false,
+          "threads": 82,
+          "posts": 1944,
+          "last_post_on": moment(),
+          "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+          "last_poster_name": "Raelyn",
+          "css_class": "subaccent",
+          "is_read": false,
+          "subcategories": [],
+          "absolute_url": "/categories/#games-3",
+          "last_thread_url": "/not-yet-implemented/",
+          "last_poster_url": "/user/raelyn-74/",
+          "acl": {
+            "can_browse": true,
+            "can_see_all_threads": 1
+          }
+        }
+      ],
+      "absolute_url": "/categories/#games-3",
+      "last_thread_url": "/not-yet-implemented/",
+      "last_poster_url": "/user/raelyn-74/",
+      "acl": {
+        "can_browse": true,
+        "can_see_all_threads": 1
+      }
+    };
+
+    testUtils.render(<Category category={category} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .panel-category .category-subcategory');
+
+    assert.ok(element.length, "component renders subcategory");
+
+    assert.ok(!element.find('.subcategory-description').length,
+      "subcategory description is not displayed");
+
+    assert.ok(element.hasClass('subcategory-subaccent'),
+      "subcategory has custom css class");
+  });
+
+  it("renders subcategory with description", function() {
+    /* jshint ignore:start */
+    let category = {
+      "id": 3,
+      "name": "Games",
+      "description": null,
+      "is_closed": false,
+      "threads": 82,
+      "posts": 1944,
+      "last_post_on": moment(),
+      "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+      "last_poster_name": "Raelyn",
+      "css_class": "accent",
+      "is_read": false,
+      "subcategories": [
+        {
+          "id": 5,
+          "name": "Subcategory",
+          "description": {
+            "plain": "Lorem ipsum dolor met this is test!",
+            "html": "<p>Lorem ipsum dolor met this is test!</p>"
+          },
+          "is_closed": false,
+          "threads": 82,
+          "posts": 1944,
+          "last_post_on": moment(),
+          "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+          "last_poster_name": "Raelyn",
+          "css_class": "subaccent",
+          "is_read": false,
+          "subcategories": [],
+          "absolute_url": "/categories/#games-3",
+          "last_thread_url": "/not-yet-implemented/",
+          "last_poster_url": "/user/raelyn-74/",
+          "acl": {
+            "can_browse": true,
+            "can_see_all_threads": 1
+          }
+        }
+      ],
+      "absolute_url": "/categories/#games-3",
+      "last_thread_url": "/not-yet-implemented/",
+      "last_poster_url": "/user/raelyn-74/",
+      "acl": {
+        "can_browse": true,
+        "can_see_all_threads": 1
+      }
+    };
+
+    testUtils.render(<Category category={category} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .panel-category .category-subcategory');
+
+    assert.ok(element.length, "component renders subcategory");
+
+    assert.equal(element.find('.subcategory-description p').text(),
+      "Lorem ipsum dolor met this is test!",
+      "subcategory description is displayed");
+  });
+
+  it("renders subcategory with subcategory", function() {
+    /* jshint ignore:start */
+    let category = {
+      "id": 3,
+      "name": "Games",
+      "description": null,
+      "is_closed": false,
+      "threads": 82,
+      "posts": 1944,
+      "last_post_on": moment(),
+      "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+      "last_poster_name": "Raelyn",
+      "css_class": "accent",
+      "is_read": false,
+      "subcategories": [
+        {
+          "id": 5,
+          "name": "Subcategory",
+          "description": null,
+          "is_closed": false,
+          "threads": 82,
+          "posts": 1944,
+          "last_post_on": moment(),
+          "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+          "last_poster_name": "Raelyn",
+          "css_class": null,
+          "is_read": false,
+          "subcategories": [
+            {
+              "id": 12,
+              "name": "Subcategory",
+              "description": null,
+              "is_closed": false,
+              "threads": 82,
+              "posts": 1944,
+              "last_post_on": moment(),
+              "last_thread_title": "Nemo quibusdam sunt ab odit omnis totam.",
+              "last_poster_name": "Raelyn",
+              "css_class": "subsubaccent",
+              "is_read": false,
+              "subcategories": [],
+              "absolute_url": "/categories/#games-3",
+              "last_thread_url": "/not-yet-implemented/",
+              "last_poster_url": "/user/raelyn-74/",
+              "acl": {
+                "can_browse": true,
+                "can_see_all_threads": 1
+              }
+            }
+          ],
+          "absolute_url": "/categories/#games-3",
+          "last_thread_url": "/not-yet-implemented/",
+          "last_poster_url": "/user/raelyn-74/",
+          "acl": {
+            "can_browse": true,
+            "can_see_all_threads": 1
+          }
+        }
+      ],
+      "absolute_url": "/categories/#games-3",
+      "last_thread_url": "/not-yet-implemented/",
+      "last_poster_url": "/user/raelyn-74/",
+      "acl": {
+        "can_browse": true,
+        "can_see_all_threads": 1
+      }
+    };
+
+    testUtils.render(<Category category={category} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .subcategory-subcategories');
+
+    assert.equal(element.length, 1, "component renders subsubcategory");
+
+    assert.ok(element.find('.subcategory-subsubaccent'),
+      "subsubcategory has custom css class");
+  });
+});

+ 23 - 0
frontend/tests/components/categories/empty-message.js

@@ -0,0 +1,23 @@
+import assert from 'assert';
+import React from 'react'; // jshint ignore:line
+import EmptyMessage from 'misago/components/categories/empty-message'; // jshint ignore:line
+import * as testUtils from 'misago/utils/test-utils';
+
+describe("Categories List Empty Message", function() {
+  afterEach(function() {
+    testUtils.unmountComponents();
+  });
+
+  it("renders", function() {
+    /* jshint ignore:start */
+    testUtils.render(<EmptyMessage />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .material-icon').text(), 'info_outline',
+      "proper icon is displayed");
+
+    assert.equal($('#test-mount p.lead').text(),
+      "No categories are available.",
+      "proper message is displayed");
+  });
+});

+ 150 - 0
frontend/tests/components/categories/last-activity.js

@@ -0,0 +1,150 @@
+import assert from 'assert';
+import moment from 'moment';
+import React from 'react'; // jshint ignore:line
+import LastActivity from 'misago/components/categories/last-activity'; // jshint ignore:line
+import * as testUtils from 'misago/utils/test-utils';
+
+describe("Categories List Category Last Activity", function() {
+  afterEach(function() {
+    testUtils.unmountComponents();
+  });
+
+  it("renders category protected message", function() {
+    /* jshint ignore:start */
+    let category = {
+      acl: {
+        can_browse: false
+      }
+    };
+
+    testUtils.render(<LastActivity category={category} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .thread-message');
+
+    assert.ok(element.text().indexOf("category is protected") !== 1,
+      "category is protected message is displayed");
+    assert.equal(element.find('.material-icon').text(), 'highlight_off',
+      "proper icon is used");
+  });
+
+  it("renders category private message", function() {
+    /* jshint ignore:start */
+    let category = {
+      acl: {
+        can_browse: true,
+        can_see_all_threads: false
+      }
+    };
+
+    testUtils.render(<LastActivity category={category} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .thread-message');
+
+    assert.ok(element.text().indexOf("category is private") !== 1,
+      "category is private message is displayed");
+    assert.equal(element.find('.material-icon').text(), 'info_outline',
+      "proper icon is used");
+  });
+
+  it("renders category empty message", function() {
+    /* jshint ignore:start */
+    let category = {
+      last_thread_title: null,
+
+      acl: {
+        can_browse: true,
+        can_see_all_threads: true
+      }
+    };
+
+    testUtils.render(<LastActivity category={category} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .thread-message');
+
+    assert.ok(element.text().indexOf("category is empty") !== 1,
+      "category is empty message is displayed");
+    assert.equal(element.find('.material-icon').text(), 'error_outline',
+      "proper icon is used");
+  });
+
+  it("renders guest-posted thread", function() {
+    let category = {
+      last_thread_title: "Misago Test Thread",
+      last_thread_url: '/test-thread/url-123/',
+
+      last_poster_name: 'BobBoberson',
+      last_poster_url: null,
+
+      last_post_on: moment().subtract(3, 'days'),
+
+      acl: {
+        can_browse: true,
+        can_see_all_threads: true
+      }
+    };
+
+    /* jshint ignore:start */
+    testUtils.render(<LastActivity category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .thread-title a').attr('href'),
+      category.last_thread_url,
+      "thread url is displayed");
+
+    assert.equal($('#test-mount .thread-title a').text(),
+      category.last_thread_title,
+      "thread name is displayed");
+
+    assert.equal($('#test-mount .poster-name span.item-title').text(),
+      category.last_poster_name,
+      "non-anchor poster name is displayed");
+
+    assert.equal($('#test-mount .thread-date abbr').text(),
+      "3 days ago",
+      "last post date is displayed");
+  });
+
+  it("renders thread", function() {
+    let category = {
+      last_thread_title: "Misago Test Thread",
+      last_thread_url: '/test-thread/url-123/',
+
+      last_poster_name: 'BobBoberson',
+      last_poster_url: '/user/bobberson-13213/',
+
+      last_post_on: moment().subtract(3, 'days'),
+
+      acl: {
+        can_browse: true,
+        can_see_all_threads: true
+      }
+    };
+
+    /* jshint ignore:start */
+    testUtils.render(<LastActivity category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .thread-title a').attr('href'),
+      category.last_thread_url,
+      "thread url is displayed");
+
+    assert.equal($('#test-mount .thread-title a').text(),
+      category.last_thread_title,
+      "thread name is displayed");
+
+    assert.equal($('#test-mount .poster-name a.item-title').attr('href'),
+      category.last_poster_url,
+      "url to poster's profile is displayed");
+
+    assert.equal($('#test-mount .poster-name a.item-title').text(),
+      category.last_poster_name,
+      "non-anchor poster name is displayed");
+
+    assert.equal($('#test-mount .thread-date abbr').text(),
+      "3 days ago",
+      "last post date is displayed");
+  });
+});

+ 86 - 0
frontend/tests/components/categories/read-icon.js

@@ -0,0 +1,86 @@
+import assert from 'assert';
+import React from 'react'; // jshint ignore:line
+import ReadIcon from 'misago/components/categories/read-icon'; // jshint ignore:line
+import * as testUtils from 'misago/utils/test-utils';
+
+describe("Categories List Category Read Icon", function() {
+  afterEach(function() {
+    testUtils.unmountComponents();
+  });
+
+  it("render read", function() {
+    /* jshint ignore:start */
+    let category = {
+      is_read: true,
+      is_closed: false
+    };
+
+    testUtils.render(<ReadIcon category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .material-icon.read-status.item-read').text(),
+      'chat_bubble_outline',
+      "proper icon is displayed");
+
+    assert.equal($('#test-mount .read-status').attr('title'),
+      "This category has no new posts.",
+      "proper state description is displayed");
+  });
+
+  it("render unread", function() {
+    /* jshint ignore:start */
+    let category = {
+      is_read: false,
+      is_closed: false
+    };
+
+    testUtils.render(<ReadIcon category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .material-icon.read-status.item-new').text(),
+      'chat_bubble',
+      "proper icon is displayed");
+
+    assert.equal($('#test-mount .read-status').attr('title'),
+      "This category has new posts.",
+      "proper state description is displayed");
+  });
+
+  it("render read (closed)", function() {
+    /* jshint ignore:start */
+    let category = {
+      is_read: true,
+      is_closed: true
+    };
+
+    testUtils.render(<ReadIcon category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .material-icon.read-status.item-read').text(),
+      'lock_outline',
+      "proper icon is displayed");
+
+    assert.equal($('#test-mount .read-status').attr('title'),
+      "This category has no new posts. (closed)",
+      "proper state description is displayed");
+  });
+
+  it("render unread (closed)", function() {
+    /* jshint ignore:start */
+    let category = {
+      is_read: false,
+      is_closed: true
+    };
+
+    testUtils.render(<ReadIcon category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .material-icon.read-status.item-new').text(),
+      'lock',
+      "proper icon is displayed");
+
+    assert.equal($('#test-mount .read-status').attr('title'),
+      "This category has new posts. (closed)",
+      "proper state description is displayed");
+  });
+});

+ 60 - 15
frontend/tests/components/categories/root.js

@@ -145,6 +145,16 @@ let categories = [
   }
   }
 ];
 ];
 
 
+let noopAjax = {
+  get: function() {
+    return {
+      then: function() {
+        /* noop */
+      }
+    };
+  }
+};
+
 describe("Categories List", function() {
 describe("Categories List", function() {
   beforeEach(function() {
   beforeEach(function() {
     misago._context = {
     misago._context = {
@@ -165,7 +175,7 @@ describe("Categories List", function() {
     $.mockjax.clear();
     $.mockjax.clear();
   });
   });
 
 
-  it('renders and loads', function(done) {
+  it("renders and loads", function(done) {
     $.mockjax({
     $.mockjax({
       url: '/test-api/categories/',
       url: '/test-api/categories/',
       status: 200,
       status: 200,
@@ -190,7 +200,7 @@ describe("Categories List", function() {
     }, 200);
     }, 200);
   });
   });
 
 
-  it('renders and loads empty list', function(done) {
+  it("renders and loads empty list", function(done) {
     misago._context.CATEGORIES = [];
     misago._context.CATEGORIES = [];
 
 
     $.mockjax({
     $.mockjax({
@@ -217,7 +227,7 @@ describe("Categories List", function() {
     }, 200);
     }, 200);
   });
   });
 
 
-  it('renders and empties list', function(done) {
+  it("renders and empties list", function(done) {
     $.mockjax({
     $.mockjax({
       url: '/test-api/categories/',
       url: '/test-api/categories/',
       status: 200,
       status: 200,
@@ -242,7 +252,7 @@ describe("Categories List", function() {
     });
     });
   });
   });
 
 
-  it('renders empty and populates list', function(done) {
+  it("renders empty and populates list", function(done) {
     misago._context.CATEGORIES = [];
     misago._context.CATEGORIES = [];
 
 
     $.mockjax({
     $.mockjax({
@@ -266,15 +276,11 @@ describe("Categories List", function() {
     });
     });
   });
   });
 
 
-  it('has valid header if not forum index', function() {
+  it("has valid header if not forum index", function() {
     misago._context.CATEGORIES = [];
     misago._context.CATEGORIES = [];
     misago._context.CATEGORIES_ON_INDEX = false;
     misago._context.CATEGORIES_ON_INDEX = false;
 
 
-    $.mockjax({
-      url: '/test-api/categories/',
-      status: 200,
-      responseText: []
-    });
+    polls.init(noopAjax, snackbar);
 
 
     /* jshint ignore:start */
     /* jshint ignore:start */
     testUtils.render(<CategoriesList />);
     testUtils.render(<CategoriesList />);
@@ -284,24 +290,63 @@ describe("Categories List", function() {
       "renders with non-home header");
       "renders with non-home header");
   });
   });
 
 
-  it('has valid header if forum index', function() {
+  it("has valid header if forum index", function() {
     misago._context.CATEGORIES = [];
     misago._context.CATEGORIES = [];
     misago._context.CATEGORIES_ON_INDEX = true;
     misago._context.CATEGORIES_ON_INDEX = true;
     misago._context.SETTINGS = {
     misago._context.SETTINGS = {
       forum_name: "Test Misago Forum"
       forum_name: "Test Misago Forum"
     };
     };
 
 
+    polls.init(noopAjax, snackbar);
+
+    /* jshint ignore:start */
+    testUtils.render(<CategoriesList />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount h1').text(), "Test Misago Forum",
+      "renders with forum name in header");
+  });
+
+  it("handles backend error", function(done) {
     $.mockjax({
     $.mockjax({
       url: '/test-api/categories/',
       url: '/test-api/categories/',
-      status: 200,
-      responseText: []
+      status: 500
+    });
+
+    snackbarStore.callback(function(message) {
+      assert.deepEqual(message, {
+        message: "Unknown error has occured.",
+        type: 'error'
+      }, "error message was shown");
+
+      done();
     });
     });
 
 
     /* jshint ignore:start */
     /* jshint ignore:start */
     testUtils.render(<CategoriesList />);
     testUtils.render(<CategoriesList />);
     /* jshint ignore:end */
     /* jshint ignore:end */
+  });
 
 
-    assert.equal($('#test-mount h1').text(), "Test Misago Forum",
-      "renders with forum name in header");
+  it("handles backend rejection", function(done) {
+    $.mockjax({
+      url: '/test-api/categories/',
+      status: 403,
+      responseText: {
+        detail: "You can't see it yo!"
+      }
+    });
+
+    snackbarStore.callback(function(message) {
+      assert.deepEqual(message, {
+        message: "You can't see it yo!",
+        type: 'error'
+      }, "backend returned error message was shown");
+
+      done();
+    });
+
+    /* jshint ignore:start */
+    testUtils.render(<CategoriesList />);
+    /* jshint ignore:end */
   });
   });
 });
 });

+ 78 - 0
frontend/tests/components/categories/stats.js

@@ -0,0 +1,78 @@
+import assert from 'assert';
+import React from 'react'; // jshint ignore:line
+import Stats from 'misago/components/categories/stats'; // jshint ignore:line
+import * as testUtils from 'misago/utils/test-utils';
+
+describe("Categories List Category Stats", function() {
+  afterEach(function() {
+    testUtils.unmountComponents();
+  });
+
+  it("renders with zeros", function() {
+    /* jshint ignore:start */
+    let category = {
+      threads: 0,
+      posts: 0
+    };
+
+    testUtils.render(<Stats category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .category-threads').text(), "0 threads",
+      "proper threads count is displayed");
+
+    assert.equal($('#test-mount .category-posts').text(), "0 posts",
+      "proper threads count is displayed");
+  });
+
+  it("renders with threads", function() {
+    /* jshint ignore:start */
+    let category = {
+      threads: 123,
+      posts: 0
+    };
+
+    testUtils.render(<Stats category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .category-threads').text(), "123 threads",
+      "proper threads count is displayed");
+
+    assert.equal($('#test-mount .category-posts').text(), "0 posts",
+      "proper threads count is displayed");
+  });
+
+  it("renders with posts", function() {
+    /* jshint ignore:start */
+    let category = {
+      threads: 0,
+      posts: 123
+    };
+
+    testUtils.render(<Stats category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .category-threads').text(), "0 threads",
+      "proper threads count is displayed");
+
+    assert.equal($('#test-mount .category-posts').text(), "123 posts",
+      "proper threads count is displayed");
+  });
+
+  it("renders with threads and posts", function() {
+    /* jshint ignore:start */
+    let category = {
+      threads: 1,
+      posts: 4
+    };
+
+    testUtils.render(<Stats category={category} />);
+    /* jshint ignore:end */
+
+    assert.equal($('#test-mount .category-threads').text(), "1 thread",
+      "proper threads count is displayed");
+
+    assert.equal($('#test-mount .category-posts').text(), "4 posts",
+      "proper threads count is displayed");
+  });
+});

+ 4 - 7
misago/categories/categorytypes.py

@@ -18,13 +18,10 @@ class Category(ThreadTypeBase):
         return category.name
         return category.name
 
 
     def get_category_absolute_url(self, category):
     def get_category_absolute_url(self, category):
-        if category.level == 1:
-            formats = (reverse('misago:categories'), category.slug, category.id)
-            return '%s#%s-%s' % formats
-        else:
-            return reverse('misago:category', kwargs={
-                'category_id': category.id, 'category_slug': category.slug
-            })
+        return reverse('misago:category', kwargs={
+            'category_slug': category.slug,
+            'category_id': category.id,
+        })
 
 
     def get_last_thread_url(self, category):
     def get_last_thread_url(self, category):
         if category.last_thread_id:
         if category.last_thread_id:

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

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

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


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


+ 11 - 17485
misago/static/misago/js/misago.js

@@ -1,17485 +1,11 @@
-(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){
-// shim for using process in browser
-
-var process = module.exports = {};
-var queue = [];
-var draining = false;
-var currentQueue;
-var queueIndex = -1;
-
-function cleanUpNextTick() {
-    draining = false;
-    if (currentQueue.length) {
-        queue = currentQueue.concat(queue);
-    } else {
-        queueIndex = -1;
-    }
-    if (queue.length) {
-        drainQueue();
-    }
-}
-
-function drainQueue() {
-    if (draining) {
-        return;
-    }
-    var timeout = setTimeout(cleanUpNextTick);
-    draining = true;
-
-    var len = queue.length;
-    while(len) {
-        currentQueue = queue;
-        queue = [];
-        while (++queueIndex < len) {
-            if (currentQueue) {
-                currentQueue[queueIndex].run();
-            }
-        }
-        queueIndex = -1;
-        len = queue.length;
-    }
-    currentQueue = null;
-    draining = false;
-    clearTimeout(timeout);
-}
-
-process.nextTick = function (fun) {
-    var args = new Array(arguments.length - 1);
-    if (arguments.length > 1) {
-        for (var i = 1; i < arguments.length; i++) {
-            args[i - 1] = arguments[i];
-        }
-    }
-    queue.push(new Item(fun, args));
-    if (queue.length === 1 && !draining) {
-        setTimeout(drainQueue, 0);
-    }
-};
-
-// v8 likes predictible objects
-function Item(fun, array) {
-    this.fun = fun;
-    this.array = array;
-}
-Item.prototype.run = function () {
-    this.fun.apply(null, this.array);
-};
-process.title = 'browser';
-process.browser = true;
-process.env = {};
-process.argv = [];
-process.version = ''; // empty string to avoid regexp issues
-process.versions = {};
-
-function noop() {}
-
-process.on = noop;
-process.addListener = noop;
-process.once = noop;
-process.off = noop;
-process.removeListener = noop;
-process.removeAllListeners = noop;
-process.emit = noop;
-
-process.binding = function (name) {
-    throw new Error('process.binding is not supported');
-};
-
-process.cwd = function () { return '/' };
-process.chdir = function (dir) {
-    throw new Error('process.chdir is not supported');
-};
-process.umask = function() { return 0; };
-
-},{}],2:[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('../../../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[key];
-    }
-  }, {
-    key: 'get',
-    value: function get(key, fallback) {
-      if (this.has(key)) {
-        return this._context[key];
-      } else {
-        return fallback || undefined;
-      }
-    }
-  }, {
-    key: 'pop',
-    value: function pop(key) {
-      if (this.has(key)) {
-        var value = this._context[key];
-        this._context[key] = null;
-        return value;
-      } else {
-        return 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 : {})
-
-},{"../../../misago/frontend/src/utils/ordered-list":151}],3:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _ajax = require('../../../../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
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/ajax":135}],4:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _auth = require('../../../../misago/frontend/src/services/auth');
-
-var _auth2 = _interopRequireDefault(_auth);
-
-var _modal = require('../../../../misago/frontend/src/services/modal');
-
-var _modal2 = _interopRequireDefault(_modal);
-
-var _store = require('../../../../misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-var _localStorage = require('../../../../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'
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/auth":136,"../../../../misago/frontend/src/services/local-storage":139,"../../../../misago/frontend/src/services/modal":141,"../../../../misago/frontend/src/services/store":145}],5:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _ajax = require('../../../../misago/frontend/src/services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _captcha = require('../../../../misago/frontend/src/services/captcha');
-
-var _captcha2 = _interopRequireDefault(_captcha);
-
-var _include = require('../../../../misago/frontend/src/services/include');
-
-var _include2 = _interopRequireDefault(_include);
-
-var _snackbar = require('../../../../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
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/ajax":135,"../../../../misago/frontend/src/services/captcha":137,"../../../../misago/frontend/src/services/include":138,"../../../../misago/frontend/src/services/snackbar":144}],6:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _reactRedux = require('react-redux');
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _authMessage = require('../../../../../misago/frontend/src/components/auth-message');
-
-var _authMessage2 = _interopRequireDefault(_authMessage);
-
-var _mountComponent = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/components/auth-message":53,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150,"react-redux":"react-redux"}],7:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _bannedPage = require('../../../../../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.has('BAN_MESSAGE')) {
-    (0, _bannedPage2.default)(context.get('BAN_MESSAGE'), false);
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:baned-page',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/banned-page":147}],8:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _reactRedux = require('react-redux');
-
-var _root = require('../../../../../misago/frontend/src/components/categories/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _mountComponent = require('../../../../../misago/frontend/src/utils/mount-component');
-
-var _mountComponent2 = _interopRequireDefault(_mountComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  if (context.has('CATEGORIES')) {
-    (0, _mountComponent2.default)((0, _reactRedux.connect)(_root.select)(_root2.default), 'page-mount');
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:reset-password-form',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../misago/frontend/src/components/categories/root":61,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150,"react-redux":"react-redux"}],9:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _root = require('../../../../../misago/frontend/src/components/options/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');
-
-var _routedComponent2 = _interopRequireDefault(_routedComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  if (context.has('USER_OPTIONS')) {
-    (0, _routedComponent2.default)({
-      root: _index2.default.get('USERCP_URL'),
-      component: _root2.default,
-      paths: (0, _root.paths)()
-    });
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:options',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../misago/frontend/src/components/options/root":80,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/routed-component":154}],10:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _reactRedux = require('react-redux');
-
-var _root = require('../../../../../misago/frontend/src/components/profile/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');
-
-var _routedComponent2 = _interopRequireDefault(_routedComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  if (context.has('PROFILE') && context.has('PROFILE_PAGES')) {
-    (0, _routedComponent2.default)({
-      root: _index2.default.get('PROFILE').absolute_url,
-      component: (0, _reactRedux.connect)(_root.select)(_root2.default),
-      paths: (0, _root.paths)()
-    });
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:profile',
-  initializer: initializer,
-  after: 'reducer:profile-dehydrate'
-});
-
-},{"../../../../../misago/frontend/src/components/profile/root":97,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/routed-component":154,"react-redux":"react-redux"}],11:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _requestActivationLink = require('../../../../../misago/frontend/src/components/request-activation-link');
-
-var _requestActivationLink2 = _interopRequireDefault(_requestActivationLink);
-
-var _mountComponent = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/components/request-activation-link":101,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150}],12:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _requestPasswordReset = require('../../../../../misago/frontend/src/components/request-password-reset');
-
-var _requestPasswordReset2 = _interopRequireDefault(_requestPasswordReset);
-
-var _mountComponent = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/components/request-password-reset":102,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150}],13:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _resetPasswordForm = require('../../../../../misago/frontend/src/components/reset-password-form');
-
-var _resetPasswordForm2 = _interopRequireDefault(_resetPasswordForm);
-
-var _mountComponent = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/components/reset-password-form":103,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150}],14:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _reactRedux = require('react-redux');
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _snackbar = require('../../../../../misago/frontend/src/components/snackbar');
-
-var _mountComponent = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/components/snackbar":107,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150,"react-redux":"react-redux"}],15:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _reactRedux = require('react-redux');
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _root = require('../../../../../misago/frontend/src/components/user-menu/root');
-
-var _mountComponent = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/components/user-menu/root":109,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150,"react-redux":"react-redux"}],16:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _root = require('../../../../../misago/frontend/src/components/users/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');
-
-var _routedComponent2 = _interopRequireDefault(_routedComponent);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  if (context.has('USERS_LISTS')) {
-    (0, _routedComponent2.default)({
-      root: _index2.default.get('USERS_LIST_URL'),
-      component: _root2.default,
-      paths: (0, _root.paths)()
-    });
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'component:users',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../misago/frontend/src/components/users/root":126,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/routed-component":154}],17:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _include = require('../../../../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
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/include":138}],18:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _localStorage = require('../../../../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
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/local-storage":139}],19:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _mobileNavbarDropdown = require('../../../../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'
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/mobile-navbar-dropdown":140}],20:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _modal = require('../../../../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'
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/modal":141}],21:[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('../../../../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
-});
-
-},{"../../../../misago/frontend/src/index":128,"moment":"moment"}],22:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _pageTitle = require('../../../../misago/frontend/src/services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer(context) {
-  _pageTitle2.default.init(context.get('SETTINGS').forum_name);
-}
-
-_index2.default.addInitializer({
-  name: 'page-title',
-  initializer: initializer
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/page-title":142}],23:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _ajax = require('../../../../misago/frontend/src/services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../../../misago/frontend/src/services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _polls = require('../../../../misago/frontend/src/services/polls');
-
-var _polls2 = _interopRequireDefault(_polls);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _polls2.default.init(_ajax2.default, _snackbar2.default);
-}
-
-_index2.default.addInitializer({
-  name: 'polls',
-  initializer: initializer
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/ajax":135,"../../../../misago/frontend/src/services/polls":143,"../../../../misago/frontend/src/services/snackbar":144}],24:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _auth = require('../../../../../misago/frontend/src/reducers/auth');
-
-var _auth2 = _interopRequireDefault(_auth);
-
-var _store = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/auth":129,"../../../../../misago/frontend/src/services/store":145}],25:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _profile = require('../../../../../misago/frontend/src/reducers/profile');
-
-var _store = require('../../../../../misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  if (_index2.default.has('PROFILE')) {
-    _store2.default.dispatch((0, _profile.dehydrate)(_index2.default.get('PROFILE')));
-  }
-}
-
-_index2.default.addInitializer({
-  name: 'reducer:profile-dehydrate',
-  initializer: initializer,
-  after: 'store'
-});
-
-},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/profile":130,"../../../../../misago/frontend/src/services/store":145}],26:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _profile = require('../../../../../misago/frontend/src/reducers/profile');
-
-var _profile2 = _interopRequireDefault(_profile);
-
-var _store = require('../../../../../misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _store2.default.addReducer('profile', _profile2.default, {});
-}
-
-_index2.default.addInitializer({
-  name: 'reducer:profile',
-  initializer: initializer,
-  before: 'store'
-});
-
-},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/profile":130,"../../../../../misago/frontend/src/services/store":145}],27:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _snackbar = require('../../../../../misago/frontend/src/reducers/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _store = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/snackbar":131,"../../../../../misago/frontend/src/services/store":145}],28:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _tick = require('../../../../../misago/frontend/src/reducers/tick');
-
-var _tick2 = _interopRequireDefault(_tick);
-
-var _store = require('../../../../../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'
-});
-
-},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/tick":132,"../../../../../misago/frontend/src/services/store":145}],29:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _usernameHistory = require('../../../../../misago/frontend/src/reducers/username-history');
-
-var _usernameHistory2 = _interopRequireDefault(_usernameHistory);
-
-var _store = require('../../../../../misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _store2.default.addReducer('username-history', _usernameHistory2.default, []);
-}
-
-_index2.default.addInitializer({
-  name: 'reducer:username-history',
-  initializer: initializer,
-  before: 'store'
-});
-
-},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/username-history":133,"../../../../../misago/frontend/src/services/store":145}],30:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _users = require('../../../../../misago/frontend/src/reducers/users');
-
-var _users2 = _interopRequireDefault(_users);
-
-var _store = require('../../../../../misago/frontend/src/services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function initializer() {
-  _store2.default.addReducer('users', _users2.default, []);
-}
-
-_index2.default.addInitializer({
-  name: 'reducer:users',
-  initializer: initializer,
-  before: 'store'
-});
-
-},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/users":134,"../../../../../misago/frontend/src/services/store":145}],31:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _snackbar = require('../../../../misago/frontend/src/services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _store = require('../../../../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'
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/snackbar":144,"../../../../misago/frontend/src/services/store":145}],32:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _store = require('../../../../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'
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/store":145}],33:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _tick = require('../../../../misago/frontend/src/reducers/tick');
-
-var _store = require('../../../../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'
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/reducers/tick":132,"../../../../misago/frontend/src/services/store":145}],34:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = initializer;
-
-var _index = require('../../../../misago/frontend/src/index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _include = require('../../../../misago/frontend/src/services/include');
-
-var _include2 = _interopRequireDefault(_include);
-
-var _zxcvbn = require('../../../../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
-});
-
-},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/include":138,"../../../../misago/frontend/src/services/zxcvbn":146}],35:[function(require,module,exports){
-var pSlice = Array.prototype.slice;
-var objectKeys = require('./lib/keys.js');
-var isArguments = require('./lib/is_arguments.js');
-
-var deepEqual = module.exports = function (actual, expected, opts) {
-  if (!opts) opts = {};
-  // 7.1. All identical values are equivalent, as determined by ===.
-  if (actual === expected) {
-    return true;
-
-  } else if (actual instanceof Date && expected instanceof Date) {
-    return actual.getTime() === expected.getTime();
-
-  // 7.3. Other pairs that do not both pass typeof value == 'object',
-  // equivalence is determined by ==.
-  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {
-    return opts.strict ? actual === expected : actual == expected;
-
-  // 7.4. For all other Object pairs, including Array objects, equivalence is
-  // determined by having the same number of owned properties (as verified
-  // with Object.prototype.hasOwnProperty.call), the same set of keys
-  // (although not necessarily the same order), equivalent values for every
-  // corresponding key, and an identical 'prototype' property. Note: this
-  // accounts for both named and indexed properties on Arrays.
-  } else {
-    return objEquiv(actual, expected, opts);
-  }
-}
-
-function isUndefinedOrNull(value) {
-  return value === null || value === undefined;
-}
-
-function isBuffer (x) {
-  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
-  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
-    return false;
-  }
-  if (x.length > 0 && typeof x[0] !== 'number') return false;
-  return true;
-}
-
-function objEquiv(a, b, opts) {
-  var i, key;
-  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
-    return false;
-  // an identical 'prototype' property.
-  if (a.prototype !== b.prototype) return false;
-  //~~~I've managed to break Object.keys through screwy arguments passing.
-  //   Converting to array solves the problem.
-  if (isArguments(a)) {
-    if (!isArguments(b)) {
-      return false;
-    }
-    a = pSlice.call(a);
-    b = pSlice.call(b);
-    return deepEqual(a, b, opts);
-  }
-  if (isBuffer(a)) {
-    if (!isBuffer(b)) {
-      return false;
-    }
-    if (a.length !== b.length) return false;
-    for (i = 0; i < a.length; i++) {
-      if (a[i] !== b[i]) return false;
-    }
-    return true;
-  }
-  try {
-    var ka = objectKeys(a),
-        kb = objectKeys(b);
-  } catch (e) {//happens when one is a string literal and the other isn't
-    return false;
-  }
-  // having the same number of owned properties (keys incorporates
-  // hasOwnProperty)
-  if (ka.length != kb.length)
-    return false;
-  //the same set of keys (although not necessarily the same order),
-  ka.sort();
-  kb.sort();
-  //~~~cheap key test
-  for (i = ka.length - 1; i >= 0; i--) {
-    if (ka[i] != kb[i])
-      return false;
-  }
-  //equivalent values for every corresponding key, and
-  //~~~possibly expensive deep test
-  for (i = ka.length - 1; i >= 0; i--) {
-    key = ka[i];
-    if (!deepEqual(a[key], b[key], opts)) return false;
-  }
-  return typeof a === typeof b;
-}
-
-},{"./lib/is_arguments.js":36,"./lib/keys.js":37}],36:[function(require,module,exports){
-var supportsArgumentsClass = (function(){
-  return Object.prototype.toString.call(arguments)
-})() == '[object Arguments]';
-
-exports = module.exports = supportsArgumentsClass ? supported : unsupported;
-
-exports.supported = supported;
-function supported(object) {
-  return Object.prototype.toString.call(object) == '[object Arguments]';
-};
-
-exports.unsupported = unsupported;
-function unsupported(object){
-  return object &&
-    typeof object == 'object' &&
-    typeof object.length == 'number' &&
-    Object.prototype.hasOwnProperty.call(object, 'callee') &&
-    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
-    false;
-};
-
-},{}],37:[function(require,module,exports){
-exports = module.exports = typeof Object.keys === 'function'
-  ? Object.keys : shim;
-
-exports.shim = shim;
-function shim (obj) {
-  var keys = [];
-  for (var key in obj) keys.push(key);
-  return keys;
-}
-
-},{}],38:[function(require,module,exports){
-/**
- * Indicates that navigation was caused by a call to history.push.
- */
-'use strict';
-
-exports.__esModule = true;
-var PUSH = 'PUSH';
-
-exports.PUSH = PUSH;
-/**
- * Indicates that navigation was caused by a call to history.replace.
- */
-var REPLACE = 'REPLACE';
-
-exports.REPLACE = REPLACE;
-/**
- * Indicates that navigation was caused by some other action such
- * as using a browser's back/forward buttons and/or manually manipulating
- * the URL in a browser's location bar. This is the default.
- *
- * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate
- * for more information.
- */
-var POP = 'POP';
-
-exports.POP = POP;
-exports['default'] = {
-  PUSH: PUSH,
-  REPLACE: REPLACE,
-  POP: POP
-};
-},{}],39:[function(require,module,exports){
-"use strict";
-
-exports.__esModule = true;
-exports.loopAsync = loopAsync;
-
-function loopAsync(turns, work, callback) {
-  var currentTurn = 0;
-  var isDone = false;
-
-  function done() {
-    isDone = true;
-    callback.apply(this, arguments);
-  }
-
-  function next() {
-    if (isDone) return;
-
-    if (currentTurn < turns) {
-      work.call(this, currentTurn++, next, done);
-    } else {
-      done.apply(this, arguments);
-    }
-  }
-
-  next();
-}
-},{}],40:[function(require,module,exports){
-(function (process){
-/*eslint-disable no-empty */
-'use strict';
-
-exports.__esModule = true;
-exports.saveState = saveState;
-exports.readState = readState;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _warning = require('warning');
-
-var _warning2 = _interopRequireDefault(_warning);
-
-var KeyPrefix = '@@History/';
-var QuotaExceededError = 'QuotaExceededError';
-var SecurityError = 'SecurityError';
-
-function createKey(key) {
-  return KeyPrefix + key;
-}
-
-function saveState(key, state) {
-  try {
-    window.sessionStorage.setItem(createKey(key), JSON.stringify(state));
-  } catch (error) {
-    if (error.name === SecurityError) {
-      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any
-      // attempt to access window.sessionStorage.
-      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;
-
-      return;
-    }
-
-    if (error.name === QuotaExceededError && window.sessionStorage.length === 0) {
-      // Safari "private mode" throws QuotaExceededError.
-      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;
-
-      return;
-    }
-
-    throw error;
-  }
-}
-
-function readState(key) {
-  var json = undefined;
-  try {
-    json = window.sessionStorage.getItem(createKey(key));
-  } catch (error) {
-    if (error.name === SecurityError) {
-      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any
-      // attempt to access window.sessionStorage.
-      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;
-
-      return null;
-    }
-  }
-
-  if (json) {
-    try {
-      return JSON.parse(json);
-    } catch (error) {
-      // Ignore invalid JSON.
-    }
-  }
-
-  return null;
-}
-}).call(this,require('_process'))
-
-},{"_process":1,"warning":52}],41:[function(require,module,exports){
-'use strict';
-
-exports.__esModule = true;
-exports.addEventListener = addEventListener;
-exports.removeEventListener = removeEventListener;
-exports.getHashPath = getHashPath;
-exports.replaceHashPath = replaceHashPath;
-exports.getWindowPath = getWindowPath;
-exports.go = go;
-exports.getUserConfirmation = getUserConfirmation;
-exports.supportsHistory = supportsHistory;
-exports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;
-
-function addEventListener(node, event, listener) {
-  if (node.addEventListener) {
-    node.addEventListener(event, listener, false);
-  } else {
-    node.attachEvent('on' + event, listener);
-  }
-}
-
-function removeEventListener(node, event, listener) {
-  if (node.removeEventListener) {
-    node.removeEventListener(event, listener, false);
-  } else {
-    node.detachEvent('on' + event, listener);
-  }
-}
-
-function getHashPath() {
-  // We can't use window.location.hash here because it's not
-  // consistent across browsers - Firefox will pre-decode it!
-  return window.location.href.split('#')[1] || '';
-}
-
-function replaceHashPath(path) {
-  window.location.replace(window.location.pathname + window.location.search + '#' + path);
-}
-
-function getWindowPath() {
-  return window.location.pathname + window.location.search + window.location.hash;
-}
-
-function go(n) {
-  if (n) window.history.go(n);
-}
-
-function getUserConfirmation(message, callback) {
-  callback(window.confirm(message));
-}
-
-/**
- * Returns true if the HTML5 history API is supported. Taken from Modernizr.
- *
- * https://github.com/Modernizr/Modernizr/blob/master/LICENSE
- * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js
- * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586
- */
-
-function supportsHistory() {
-  var ua = navigator.userAgent;
-  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {
-    return false;
-  }
-  // FIXME: Work around our browser history not working correctly on Chrome
-  // iOS: https://github.com/rackt/react-router/issues/2565
-  if (ua.indexOf('CriOS') !== -1) {
-    return false;
-  }
-  return window.history && 'pushState' in window.history;
-}
-
-/**
- * Returns false if using go(n) with hash history causes a full page reload.
- */
-
-function supportsGoWithoutReloadUsingHash() {
-  var ua = navigator.userAgent;
-  return ua.indexOf('Firefox') === -1;
-}
-},{}],42:[function(require,module,exports){
-'use strict';
-
-exports.__esModule = true;
-var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
-exports.canUseDOM = canUseDOM;
-},{}],43:[function(require,module,exports){
-(function (process){
-'use strict';
-
-exports.__esModule = true;
-
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _invariant = require('invariant');
-
-var _invariant2 = _interopRequireDefault(_invariant);
-
-var _Actions = require('./Actions');
-
-var _ExecutionEnvironment = require('./ExecutionEnvironment');
-
-var _DOMUtils = require('./DOMUtils');
-
-var _DOMStateStorage = require('./DOMStateStorage');
-
-var _createDOMHistory = require('./createDOMHistory');
-
-var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);
-
-var _parsePath = require('./parsePath');
-
-var _parsePath2 = _interopRequireDefault(_parsePath);
-
-/**
- * Creates and returns a history object that uses HTML5's history API
- * (pushState, replaceState, and the popstate event) to manage history.
- * This is the recommended method of managing history in browsers because
- * it provides the cleanest URLs.
- *
- * Note: In browsers that do not support the HTML5 history API full
- * page reloads will be used to preserve URLs.
- */
-function createBrowserHistory() {
-  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
-
-  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Browser history needs a DOM') : _invariant2['default'](false) : undefined;
-
-  var forceRefresh = options.forceRefresh;
-
-  var isSupported = _DOMUtils.supportsHistory();
-  var useRefresh = !isSupported || forceRefresh;
-
-  function getCurrentLocation(historyState) {
-    historyState = historyState || window.history.state || {};
-
-    var path = _DOMUtils.getWindowPath();
-    var _historyState = historyState;
-    var key = _historyState.key;
-
-    var state = undefined;
-    if (key) {
-      state = _DOMStateStorage.readState(key);
-    } else {
-      state = null;
-      key = history.createKey();
-
-      if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null, path);
-    }
-
-    var location = _parsePath2['default'](path);
-
-    return history.createLocation(_extends({}, location, { state: state }), undefined, key);
-  }
-
-  function startPopStateListener(_ref) {
-    var transitionTo = _ref.transitionTo;
-
-    function popStateListener(event) {
-      if (event.state === undefined) return; // Ignore extraneous popstate events in WebKit.
-
-      transitionTo(getCurrentLocation(event.state));
-    }
-
-    _DOMUtils.addEventListener(window, 'popstate', popStateListener);
-
-    return function () {
-      _DOMUtils.removeEventListener(window, 'popstate', popStateListener);
-    };
-  }
-
-  function finishTransition(location) {
-    var basename = location.basename;
-    var pathname = location.pathname;
-    var search = location.search;
-    var hash = location.hash;
-    var state = location.state;
-    var action = location.action;
-    var key = location.key;
-
-    if (action === _Actions.POP) return; // Nothing to do.
-
-    _DOMStateStorage.saveState(key, state);
-
-    var path = (basename || '') + pathname + search + hash;
-    var historyState = {
-      key: key
-    };
-
-    if (action === _Actions.PUSH) {
-      if (useRefresh) {
-        window.location.href = path;
-        return false; // Prevent location update.
-      } else {
-          window.history.pushState(historyState, null, path);
-        }
-    } else {
-      // REPLACE
-      if (useRefresh) {
-        window.location.replace(path);
-        return false; // Prevent location update.
-      } else {
-          window.history.replaceState(historyState, null, path);
-        }
-    }
-  }
-
-  var history = _createDOMHistory2['default'](_extends({}, options, {
-    getCurrentLocation: getCurrentLocation,
-    finishTransition: finishTransition,
-    saveState: _DOMStateStorage.saveState
-  }));
-
-  var listenerCount = 0,
-      stopPopStateListener = undefined;
-
-  function listenBefore(listener) {
-    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);
-
-    var unlisten = history.listenBefore(listener);
-
-    return function () {
-      unlisten();
-
-      if (--listenerCount === 0) stopPopStateListener();
-    };
-  }
-
-  function listen(listener) {
-    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);
-
-    var unlisten = history.listen(listener);
-
-    return function () {
-      unlisten();
-
-      if (--listenerCount === 0) stopPopStateListener();
-    };
-  }
-
-  // deprecated
-  function registerTransitionHook(hook) {
-    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);
-
-    history.registerTransitionHook(hook);
-  }
-
-  // deprecated
-  function unregisterTransitionHook(hook) {
-    history.unregisterTransitionHook(hook);
-
-    if (--listenerCount === 0) stopPopStateListener();
-  }
-
-  return _extends({}, history, {
-    listenBefore: listenBefore,
-    listen: listen,
-    registerTransitionHook: registerTransitionHook,
-    unregisterTransitionHook: unregisterTransitionHook
-  });
-}
-
-exports['default'] = createBrowserHistory;
-module.exports = exports['default'];
-}).call(this,require('_process'))
-
-},{"./Actions":38,"./DOMStateStorage":40,"./DOMUtils":41,"./ExecutionEnvironment":42,"./createDOMHistory":44,"./parsePath":49,"_process":1,"invariant":51}],44:[function(require,module,exports){
-(function (process){
-'use strict';
-
-exports.__esModule = true;
-
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _invariant = require('invariant');
-
-var _invariant2 = _interopRequireDefault(_invariant);
-
-var _ExecutionEnvironment = require('./ExecutionEnvironment');
-
-var _DOMUtils = require('./DOMUtils');
-
-var _createHistory = require('./createHistory');
-
-var _createHistory2 = _interopRequireDefault(_createHistory);
-
-function createDOMHistory(options) {
-  var history = _createHistory2['default'](_extends({
-    getUserConfirmation: _DOMUtils.getUserConfirmation
-  }, options, {
-    go: _DOMUtils.go
-  }));
-
-  function listen(listener) {
-    !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;
-
-    return history.listen(listener);
-  }
-
-  return _extends({}, history, {
-    listen: listen
-  });
-}
-
-exports['default'] = createDOMHistory;
-module.exports = exports['default'];
-}).call(this,require('_process'))
-
-},{"./DOMUtils":41,"./ExecutionEnvironment":42,"./createHistory":45,"_process":1,"invariant":51}],45:[function(require,module,exports){
-//import warning from 'warning'
-'use strict';
-
-exports.__esModule = true;
-
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _deepEqual = require('deep-equal');
-
-var _deepEqual2 = _interopRequireDefault(_deepEqual);
-
-var _AsyncUtils = require('./AsyncUtils');
-
-var _Actions = require('./Actions');
-
-var _createLocation2 = require('./createLocation');
-
-var _createLocation3 = _interopRequireDefault(_createLocation2);
-
-var _runTransitionHook = require('./runTransitionHook');
-
-var _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);
-
-var _parsePath = require('./parsePath');
-
-var _parsePath2 = _interopRequireDefault(_parsePath);
-
-var _deprecate = require('./deprecate');
-
-var _deprecate2 = _interopRequireDefault(_deprecate);
-
-function createRandomKey(length) {
-  return Math.random().toString(36).substr(2, length);
-}
-
-function locationsAreEqual(a, b) {
-  return a.pathname === b.pathname && a.search === b.search &&
-  //a.action === b.action && // Different action !== location change.
-  a.key === b.key && _deepEqual2['default'](a.state, b.state);
-}
-
-var DefaultKeyLength = 6;
-
-function createHistory() {
-  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
-  var getCurrentLocation = options.getCurrentLocation;
-  var finishTransition = options.finishTransition;
-  var saveState = options.saveState;
-  var go = options.go;
-  var keyLength = options.keyLength;
-  var getUserConfirmation = options.getUserConfirmation;
-
-  if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;
-
-  var transitionHooks = [];
-
-  function listenBefore(hook) {
-    transitionHooks.push(hook);
-
-    return function () {
-      transitionHooks = transitionHooks.filter(function (item) {
-        return item !== hook;
-      });
-    };
-  }
-
-  var allKeys = [];
-  var changeListeners = [];
-  var location = undefined;
-
-  function getCurrent() {
-    if (pendingLocation && pendingLocation.action === _Actions.POP) {
-      return allKeys.indexOf(pendingLocation.key);
-    } else if (location) {
-      return allKeys.indexOf(location.key);
-    } else {
-      return -1;
-    }
-  }
-
-  function updateLocation(newLocation) {
-    var current = getCurrent();
-
-    location = newLocation;
-
-    if (location.action === _Actions.PUSH) {
-      allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);
-    } else if (location.action === _Actions.REPLACE) {
-      allKeys[current] = location.key;
-    }
-
-    changeListeners.forEach(function (listener) {
-      listener(location);
-    });
-  }
-
-  function listen(listener) {
-    changeListeners.push(listener);
-
-    if (location) {
-      listener(location);
-    } else {
-      var _location = getCurrentLocation();
-      allKeys = [_location.key];
-      updateLocation(_location);
-    }
-
-    return function () {
-      changeListeners = changeListeners.filter(function (item) {
-        return item !== listener;
-      });
-    };
-  }
-
-  function confirmTransitionTo(location, callback) {
-    _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {
-      _runTransitionHook2['default'](transitionHooks[index], location, function (result) {
-        if (result != null) {
-          done(result);
-        } else {
-          next();
-        }
-      });
-    }, function (message) {
-      if (getUserConfirmation && typeof message === 'string') {
-        getUserConfirmation(message, function (ok) {
-          callback(ok !== false);
-        });
-      } else {
-        callback(message !== false);
-      }
-    });
-  }
-
-  var pendingLocation = undefined;
-
-  function transitionTo(nextLocation) {
-    if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.
-
-    pendingLocation = nextLocation;
-
-    confirmTransitionTo(nextLocation, function (ok) {
-      if (pendingLocation !== nextLocation) return; // Transition was interrupted.
-
-      if (ok) {
-        // treat PUSH to current path like REPLACE to be consistent with browsers
-        if (nextLocation.action === _Actions.PUSH) {
-          var prevPath = createPath(location);
-          var nextPath = createPath(nextLocation);
-
-          if (nextPath === prevPath) nextLocation.action = _Actions.REPLACE;
-        }
-
-        if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);
-      } else if (location && nextLocation.action === _Actions.POP) {
-        var prevIndex = allKeys.indexOf(location.key);
-        var nextIndex = allKeys.indexOf(nextLocation.key);
-
-        if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.
-      }
-    });
-  }
-
-  function push(location) {
-    transitionTo(createLocation(location, _Actions.PUSH, createKey()));
-  }
-
-  function replace(location) {
-    transitionTo(createLocation(location, _Actions.REPLACE, createKey()));
-  }
-
-  function goBack() {
-    go(-1);
-  }
-
-  function goForward() {
-    go(1);
-  }
-
-  function createKey() {
-    return createRandomKey(keyLength);
-  }
-
-  function createPath(location) {
-    if (location == null || typeof location === 'string') return location;
-
-    var pathname = location.pathname;
-    var search = location.search;
-    var hash = location.hash;
-
-    var result = pathname;
-
-    if (search) result += search;
-
-    if (hash) result += hash;
-
-    return result;
-  }
-
-  function createHref(location) {
-    return createPath(location);
-  }
-
-  function createLocation(location, action) {
-    var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];
-
-    if (typeof action === 'object') {
-      //warning(
-      //  false,
-      //  'The state (2nd) argument to history.createLocation is deprecated; use a ' +
-      //  'location descriptor instead'
-      //)
-
-      if (typeof location === 'string') location = _parsePath2['default'](location);
-
-      location = _extends({}, location, { state: action });
-
-      action = key;
-      key = arguments[3] || createKey();
-    }
-
-    return _createLocation3['default'](location, action, key);
-  }
-
-  // deprecated
-  function setState(state) {
-    if (location) {
-      updateLocationState(location, state);
-      updateLocation(location);
-    } else {
-      updateLocationState(getCurrentLocation(), state);
-    }
-  }
-
-  function updateLocationState(location, state) {
-    location.state = _extends({}, location.state, state);
-    saveState(location.key, location.state);
-  }
-
-  // deprecated
-  function registerTransitionHook(hook) {
-    if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);
-  }
-
-  // deprecated
-  function unregisterTransitionHook(hook) {
-    transitionHooks = transitionHooks.filter(function (item) {
-      return item !== hook;
-    });
-  }
-
-  // deprecated
-  function pushState(state, path) {
-    if (typeof path === 'string') path = _parsePath2['default'](path);
-
-    push(_extends({ state: state }, path));
-  }
-
-  // deprecated
-  function replaceState(state, path) {
-    if (typeof path === 'string') path = _parsePath2['default'](path);
-
-    replace(_extends({ state: state }, path));
-  }
-
-  return {
-    listenBefore: listenBefore,
-    listen: listen,
-    transitionTo: transitionTo,
-    push: push,
-    replace: replace,
-    go: go,
-    goBack: goBack,
-    goForward: goForward,
-    createKey: createKey,
-    createPath: createPath,
-    createHref: createHref,
-    createLocation: createLocation,
-
-    setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),
-    registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),
-    unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),
-    pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),
-    replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')
-  };
-}
-
-exports['default'] = createHistory;
-module.exports = exports['default'];
-},{"./Actions":38,"./AsyncUtils":39,"./createLocation":46,"./deprecate":47,"./parsePath":49,"./runTransitionHook":50,"deep-equal":35}],46:[function(require,module,exports){
-//import warning from 'warning'
-'use strict';
-
-exports.__esModule = true;
-
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _Actions = require('./Actions');
-
-var _parsePath = require('./parsePath');
-
-var _parsePath2 = _interopRequireDefault(_parsePath);
-
-function createLocation() {
-  var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];
-  var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];
-  var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
-
-  var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
-
-  if (typeof location === 'string') location = _parsePath2['default'](location);
-
-  if (typeof action === 'object') {
-    //warning(
-    //  false,
-    //  'The state (2nd) argument to createLocation is deprecated; use a ' +
-    //  'location descriptor instead'
-    //)
-
-    location = _extends({}, location, { state: action });
-
-    action = key || _Actions.POP;
-    key = _fourthArg;
-  }
-
-  var pathname = location.pathname || '/';
-  var search = location.search || '';
-  var hash = location.hash || '';
-  var state = location.state || null;
-
-  return {
-    pathname: pathname,
-    search: search,
-    hash: hash,
-    state: state,
-    action: action,
-    key: key
-  };
-}
-
-exports['default'] = createLocation;
-module.exports = exports['default'];
-},{"./Actions":38,"./parsePath":49}],47:[function(require,module,exports){
-//import warning from 'warning'
-
-"use strict";
-
-exports.__esModule = true;
-function deprecate(fn) {
-  return fn;
-  //return function () {
-  //  warning(false, '[history] ' + message)
-  //  return fn.apply(this, arguments)
-  //}
-}
-
-exports["default"] = deprecate;
-module.exports = exports["default"];
-},{}],48:[function(require,module,exports){
-"use strict";
-
-exports.__esModule = true;
-function extractPath(string) {
-  var match = string.match(/^https?:\/\/[^\/]*/);
-
-  if (match == null) return string;
-
-  return string.substring(match[0].length);
-}
-
-exports["default"] = extractPath;
-module.exports = exports["default"];
-},{}],49:[function(require,module,exports){
-(function (process){
-'use strict';
-
-exports.__esModule = true;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _warning = require('warning');
-
-var _warning2 = _interopRequireDefault(_warning);
-
-var _extractPath = require('./extractPath');
-
-var _extractPath2 = _interopRequireDefault(_extractPath);
-
-function parsePath(path) {
-  var pathname = _extractPath2['default'](path);
-  var search = '';
-  var hash = '';
-
-  process.env.NODE_ENV !== 'production' ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like "%s"', path) : undefined;
-
-  var hashIndex = pathname.indexOf('#');
-  if (hashIndex !== -1) {
-    hash = pathname.substring(hashIndex);
-    pathname = pathname.substring(0, hashIndex);
-  }
-
-  var searchIndex = pathname.indexOf('?');
-  if (searchIndex !== -1) {
-    search = pathname.substring(searchIndex);
-    pathname = pathname.substring(0, searchIndex);
-  }
-
-  if (pathname === '') pathname = '/';
-
-  return {
-    pathname: pathname,
-    search: search,
-    hash: hash
-  };
-}
-
-exports['default'] = parsePath;
-module.exports = exports['default'];
-}).call(this,require('_process'))
-
-},{"./extractPath":48,"_process":1,"warning":52}],50:[function(require,module,exports){
-(function (process){
-'use strict';
-
-exports.__esModule = true;
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
-var _warning = require('warning');
-
-var _warning2 = _interopRequireDefault(_warning);
-
-function runTransitionHook(hook, location, callback) {
-  var result = hook(location, callback);
-
-  if (hook.length < 2) {
-    // Assume the hook runs synchronously and automatically
-    // call the callback with the return value.
-    callback(result);
-  } else {
-    process.env.NODE_ENV !== 'production' ? _warning2['default'](result === undefined, 'You should not "return" in a transition hook with a callback argument; call the callback instead') : undefined;
-  }
-}
-
-exports['default'] = runTransitionHook;
-module.exports = exports['default'];
-}).call(this,require('_process'))
-
-},{"_process":1,"warning":52}],51:[function(require,module,exports){
-(function (process){
-/**
- * Copyright 2013-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
-
-'use strict';
-
-/**
- * Use invariant() to assert state which your program assumes to be true.
- *
- * Provide sprintf-style format (only %s is supported) and arguments
- * to provide information about what broke and what you were
- * expecting.
- *
- * The invariant message will be stripped in production, but the invariant
- * will remain to ensure logic does not differ in production.
- */
-
-var invariant = function(condition, format, a, b, c, d, e, f) {
-  if (process.env.NODE_ENV !== 'production') {
-    if (format === undefined) {
-      throw new Error('invariant requires an error message argument');
-    }
-  }
-
-  if (!condition) {
-    var error;
-    if (format === undefined) {
-      error = new Error(
-        'Minified exception occurred; use the non-minified dev environment ' +
-        'for the full error message and additional helpful warnings.'
-      );
-    } else {
-      var args = [a, b, c, d, e, f];
-      var argIndex = 0;
-      error = new Error(
-        format.replace(/%s/g, function() { return args[argIndex++]; })
-      );
-      error.name = 'Invariant Violation';
-    }
-
-    error.framesToPop = 1; // we don't care about invariant's own frame
-    throw error;
-  }
-};
-
-module.exports = invariant;
-
-}).call(this,require('_process'))
-
-},{"_process":1}],52:[function(require,module,exports){
-(function (process){
-/**
- * Copyright 2014-2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
-
-'use strict';
-
-/**
- * Similar to invariant but only logs a warning if the condition is not met.
- * This can be used to log issues in development environments in critical
- * paths. Removing the logging code for production environments will keep the
- * same logic and follow the same code paths.
- */
-
-var warning = function() {};
-
-if (process.env.NODE_ENV !== 'production') {
-  warning = function(condition, format, args) {
-    var len = arguments.length;
-    args = new Array(len > 2 ? len - 2 : 0);
-    for (var key = 2; key < len; key++) {
-      args[key - 2] = arguments[key];
-    }
-    if (format === undefined) {
-      throw new Error(
-        '`warning(condition, format, ...args)` requires a warning ' +
-        'message argument'
-      );
-    }
-
-    if (format.length < 10 || (/^[s\W]*$/).test(format)) {
-      throw new Error(
-        'The warning format should be able to uniquely identify this ' +
-        'warning. Please, use a more descriptive format than: ' + format
-      );
-    }
-
-    if (!condition) {
-      var argIndex = 0;
-      var message = 'Warning: ' +
-        format.replace(/%s/g, function() {
-          return args[argIndex++];
-        });
-      if (typeof console !== 'undefined') {
-        console.error(message);
-      }
-      try {
-        // This error was thrown as a convenience so that you can use this stack
-        // to find the callsite that caused this warning to fire.
-        throw new Error(message);
-      } catch(x) {}
-    }
-  };
-}
-
-module.exports = warning;
-
-}).call(this,require('_process'))
-
-},{"_process":1}],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
-});
-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"}],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
-});
-
-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"}],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
-});
-
-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)())) {
-          /* jshint ignore:start */
-          var title = interpolate(gettext("This ban expires on %(expires_on)s."), {
-            'expires_on': this.props.expires.format('LL, LT')
-          }, true);
-
-          var message = interpolate(gettext("This ban expires %(expires_on)s."), {
-            'expires_on': this.props.expires.fromNow()
-          }, true);
-
-          return _react2.default.createElement(
-            'abbr',
-            { title: title },
-            message
-          );
-          /* jshint ignore:end */
-        } 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"}],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
-});
-
-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":71,"react":"react"}],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
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _lastActivity = require('./last-activity');
-
-var _lastActivity2 = _interopRequireDefault(_lastActivity);
-
-var _readIcon = require('./read-icon');
-
-var _readIcon2 = _interopRequireDefault(_readIcon);
-
-var _stats = require('./stats');
-
-var _stats2 = _interopRequireDefault(_stats);
-
-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() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.props.category.css_class) {
-        return 'panel panel-default panel-category panel-category-' + this.props.category.css_class;
-      } else {
-        return 'panel panel-default panel-category';
-      }
-    }
-  }, {
-    key: 'getHeadingClassName',
-    value: function getHeadingClassName() {
-      if (this.props.category.subcategories.length) {
-        return 'panel-heading';
-      } else {
-        return 'panel-heading heading-alone';
-      }
-    }
-  }, {
-    key: 'getCategoryDescription',
-    value: function getCategoryDescription() {
-      if (this.props.category.description) {
-        /* jshint ignore:start */
-        return _react2.default.createElement('div', { className: 'panel-body category-description',
-          dangerouslySetInnerHTML: {
-            __html: this.props.category.description.html
-          } });
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getSubcategoryClass',
-    value: function getSubcategoryClass(category) {
-      if (category.css_class) {
-        return 'list-group-item category-subcategory subcategory-' + category.css_class;
-      } else {
-        return 'list-group-item category-subcategory';
-      }
-    }
-  }, {
-    key: 'getSubcategoryDescription',
-    value: function getSubcategoryDescription(category) {
-      if (category.description) {
-        /* jshint ignore:start */
-        return _react2.default.createElement('div', { className: 'subcategory-description',
-          dangerouslySetInnerHTML: {
-            __html: category.description.html
-          } });
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getSubcategorySubcategoryClass',
-    value: function getSubcategorySubcategoryClass(category) {
-      if (category.css_class) {
-        return 'subcategory subcategory-' + category.css_class;
-      } else {
-        return 'subcategory';
-      }
-    }
-  }, {
-    key: 'getSubcategorySubcategories',
-    value: function getSubcategorySubcategories(category) {
-      var _this2 = this;
-
-      if (category.subcategories) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'ul',
-          { className: 'list-inline subcategory-subcategories' },
-          category.subcategories.map(function (category) {
-            return _react2.default.createElement(
-              'li',
-              { key: category.id },
-              _react2.default.createElement(
-                'a',
-                { href: category.absolute_url,
-                  className: _this2.getSubcategorySubcategoryClass(category) },
-                category.name
-              )
-            );
-          })
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getSubcategories',
-    value: function getSubcategories() {
-      var _this3 = this;
-
-      if (this.props.category.subcategories) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'ul',
-          { className: 'list-group category-subcategories' },
-          this.props.category.subcategories.map(function (category) {
-            return _react2.default.createElement(
-              'li',
-              { className: 'list-group-item category-subcategory',
-                key: category.id },
-              _react2.default.createElement(
-                'div',
-                { className: 'title-row' },
-                _react2.default.createElement(
-                  'h4',
-                  null,
-                  _react2.default.createElement(_readIcon2.default, { category: category }),
-                  _react2.default.createElement(
-                    'a',
-                    { href: category.absolute_url, className: 'item-title' },
-                    category.name
-                  )
-                ),
-                _react2.default.createElement(_stats2.default, { category: category })
-              ),
-              _react2.default.createElement(_lastActivity2.default, { category: category }),
-              _this3.getSubcategoryDescription(category),
-              _this3.getSubcategorySubcategories(category)
-            );
-          })
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { id: 'panel-category-' + this.props.category.id,
-          className: this.getClassName() },
-        _react2.default.createElement(
-          'div',
-          { className: this.getHeadingClassName() },
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-heading-inblock' },
-            _react2.default.createElement(
-              'div',
-              { className: 'panel-heading-top-row' },
-              _react2.default.createElement(
-                'h3',
-                { className: 'panel-title' },
-                _react2.default.createElement(_readIcon2.default, { category: this.props.category }),
-                _react2.default.createElement(
-                  'a',
-                  { href: this.props.category.absolute_url, className: 'item-title' },
-                  this.props.category.name
-                )
-              ),
-              _react2.default.createElement(_stats2.default, { category: this.props.category })
-            ),
-            _react2.default.createElement(_lastActivity2.default, { category: this.props.category })
-          )
-        ),
-        this.getCategoryDescription(),
-        this.getSubcategories()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"./last-activity":59,"./read-icon":60,"./stats":62,"react":"react"}],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
-});
-
-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: "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("No categories are available.")
-          ),
-          _react2.default.createElement(
-            "p",
-            null,
-            gettext("No categories are currently defined or you don't have permission to see them.")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],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
-});
-
-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: "getLastPoster",
-    value: function getLastPoster() {
-      if (this.props.category.last_poster_url) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          "a",
-          { href: this.props.category.last_poster_url,
-            className: "item-title" },
-          this.props.category.last_poster_name
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            "span",
-            { className: "item-title" },
-            this.props.category.last_poster_name
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: "getThreadDetails",
-    value: function getThreadDetails() {
-      /* jshint ignore:start */
-      return [_react2.default.createElement(
-        "li",
-        { className: "thread-title", key: "title" },
-        _react2.default.createElement(
-          "a",
-          { href: this.props.category.last_thread_url, className: "item-title" },
-          this.props.category.last_thread_title
-        )
-      ), _react2.default.createElement(
-        "li",
-        { className: "poster-name", key: "poster" },
-        this.getLastPoster()
-      ), _react2.default.createElement(
-        "li",
-        { className: "thread-date", key: "date" },
-        _react2.default.createElement(
-          "abbr",
-          { title: this.props.category.last_post_on.format('LL, LT') },
-          this.props.category.last_post_on.fromNow()
-        )
-      )];
-      /* jshint ignore:end */
-    }
-  }, {
-    key: "getLastActivity",
-    value: function getLastActivity() {
-      if (this.props.category.acl.can_browse) {
-        if (!this.props.category.acl.can_see_all_threads) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            "li",
-            { className: "thread-message" },
-            _react2.default.createElement(
-              "span",
-              { className: "material-icon" },
-              "info_outline"
-            ),
-            gettext("This category is private. You can see only your own threads within it.")
-          );
-          /* jshint ignore:end */
-        } else if (this.props.category.last_thread_title) {
-            return this.getThreadDetails();
-          } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(
-              "li",
-              { className: "thread-message" },
-              _react2.default.createElement(
-                "span",
-                { className: "material-icon" },
-                "error_outline"
-              ),
-              gettext("This category is empty.")
-            );
-            /* jshint ignore:end */
-          }
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            "li",
-            { className: "thread-message" },
-            _react2.default.createElement(
-              "span",
-              { className: "material-icon" },
-              "highlight_off"
-            ),
-            gettext("This category is protected. You can't browse it's contents.")
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: "render",
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        "ul",
-        { className: "list-inline category-last-activity" },
-        this.getLastActivity()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],60:[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: 'getClassName',
-    value: function getClassName() {
-      if (this.props.category.is_read) {
-        return 'material-icon read-status item-read';
-      } else {
-        return 'material-icon read-status item-new';
-      }
-    }
-  }, {
-    key: 'getTitle',
-    value: function getTitle() {
-      if (this.props.category.is_closed) {
-        if (this.props.category.is_read) {
-          return gettext("This category has no new posts. (closed)");
-        } else {
-          return gettext("This category has new posts. (closed)");
-        }
-      } else {
-        if (this.props.category.is_read) {
-          return gettext("This category has no new posts.");
-        } else {
-          return gettext("This category has new posts.");
-        }
-      }
-    }
-  }, {
-    key: 'getIcon',
-    value: function getIcon() {
-      if (this.props.category.is_closed) {
-        if (this.props.category.is_read) {
-          return 'lock_outline';
-        } else {
-          return 'lock';
-        }
-      } else {
-        if (this.props.category.is_read) {
-          return 'chat_bubble_outline';
-        } else {
-          return 'chat_bubble';
-        }
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'span',
-        { className: this.getClassName(), title: this.getTitle() },
-        this.getIcon()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],61:[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 _moment = require('moment');
-
-var _moment2 = _interopRequireDefault(_moment);
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _category = require('./category');
-
-var _category2 = _interopRequireDefault(_category);
-
-var _emptyMessage = require('./empty-message');
-
-var _emptyMessage2 = _interopRequireDefault(_emptyMessage);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _polls = require('../../services/polls');
-
-var _polls2 = _interopRequireDefault(_polls);
-
-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 dehydrate = function dehydrate(category) {
-  category.subcategories = category.subcategories.map(dehydrate);
-
-  if (category.last_post_on) {
-    return Object.assign(category, {
-      last_post_on: (0, _moment2.default)(category.last_post_on)
-    });
-  } else {
-    return category;
-  }
-};
-
-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.update = function (data) {
-      _this.setState({
-        categories: data.map(dehydrate)
-      });
-    };
-
-    _this.state = {
-      categories: _index2.default.get('CATEGORIES').map(dehydrate)
-    };
-
-    _this.startPolling(_index2.default.get('CATEGORIES_API'));
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'startPolling',
-    value: function startPolling(api) {
-      _polls2.default.start({
-        poll: 'categories',
-        url: api,
-        frequency: 180 * 1000,
-        update: this.update
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getClassName',
-
-    /* jshint ignore:end */
-
-    value: function getClassName() {
-      if (this.state.categories.length) {
-        return 'page page-categories';
-      } else {
-        return 'page page-categories page-message';
-      }
-    }
-  }, {
-    key: 'getHeading',
-    value: function getHeading() {
-      if (_index2.default.get('CATEGORIES_ON_INDEX')) {
-        return _index2.default.get('SETTINGS').forum_name;
-      } else {
-        return gettext("Categories");
-      }
-    }
-  }, {
-    key: 'getCategoriesList',
-    value: function getCategoriesList() {
-      if (this.state.categories.length) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'categories-list' },
-          this.state.categories.map(function (category) {
-            return _react2.default.createElement(_category2.default, { category: category, key: category.id });
-          })
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_emptyMessage2.default, null);
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: this.getClassName() },
-        _react2.default.createElement(
-          'div',
-          { className: 'page-header' },
-          _react2.default.createElement(
-            'div',
-            { className: 'container' },
-            _react2.default.createElement(
-              'h1',
-              null,
-              this.getHeading()
-            )
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          this.getCategoriesList()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-function select(store) {
-  return {
-    'tick': store.tick.tick
-  };
-}
-
-},{"../../index":128,"../../services/polls":143,"./category":57,"./empty-message":58,"moment":"moment","react":"react"}],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
-});
-
-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: "getThreadsCount",
-    value: function getThreadsCount() {
-      var string = ngettext("%(threads)s thread", "%(threads)s threads", this.props.category.threads);
-
-      return interpolate(string, {
-        'threads': this.props.category.threads
-      }, true);
-    }
-  }, {
-    key: "getPostsCount",
-    value: function getPostsCount() {
-      var string = ngettext("%(posts)s post", "%(posts)s posts", this.props.category.posts);
-
-      return interpolate(string, {
-        'posts': this.props.category.posts
-      }, true);
-    }
-  }, {
-    key: "render",
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        "ul",
-        { className: "list-inline category-stats" },
-        _react2.default.createElement(
-          "li",
-          { className: "category-threads" },
-          this.getThreadsCount()
-        ),
-        _react2.default.createElement(
-          "li",
-          { className: "category-posts" },
-          this.getPostsCount()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],63:[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 _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
-
-// jshint ignore:line
-
-var BASE_URL = $('base').attr('href') + 'user-avatar';
-
-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.cropAvatar = function () {
-      if (_this.state.isLoading) {
-        return false;
-      }
-
-      _this.setState({
-        'isLoading': true
-      });
-
-      var avatarType = _this.props.upload ? 'crop_tmp' : 'crop_org';
-      var cropit = $('.crop-form');
-
-      _ajax2.default.post(_this.props.user.api_url.avatar, {
-        'avatar': avatarType,
-        'crop': {
-          'offset': cropit.cropit('offset'),
-          'zoom': cropit.cropit('zoom')
-        }
-      }).then(function (data) {
-        _this.props.onComplete(data.avatar_hash, data.options);
-        _snackbar2.default.success(data.detail);
-      }, function (rejection) {
-        if (rejection.status === 400) {
-          _snackbar2.default.error(rejection.detail);
-          _this.setState({
-            'isLoading': false
-          });
-        } else {
-          _this.props.showError(rejection);
-        }
-      });
-    };
-
-    _this.state = {
-      'isLoading': false
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'getAvatarSize',
-    value: function getAvatarSize() {
-      if (this.props.upload) {
-        return this.props.options.crop_tmp.size;
-      } else {
-        return this.props.options.crop_org.size;
-      }
-    }
-  }, {
-    key: 'getAvatarSecret',
-    value: function getAvatarSecret() {
-      if (this.props.upload) {
-        return this.props.options.crop_tmp.secret;
-      } else {
-        return this.props.options.crop_org.secret;
-      }
-    }
-  }, {
-    key: 'getAvatarHash',
-    value: function getAvatarHash() {
-      return this.props.upload || this.props.user.avatar_hash;
-    }
-  }, {
-    key: 'getImagePath',
-    value: function getImagePath() {
-      return [BASE_URL, this.getAvatarSecret() + ':' + this.getAvatarHash(), this.props.user.id + '.png'].join('/');
-    }
-  }, {
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      var _this2 = this;
-
-      var cropit = $('.crop-form');
-      cropit.width(this.getAvatarSize());
-
-      cropit.cropit({
-        'width': this.getAvatarSize(),
-        'height': this.getAvatarSize(),
-        'imageState': {
-          'src': this.getImagePath()
-        },
-        onImageLoaded: function onImageLoaded() {
-          if (_this2.props.upload) {
-            // center uploaded image
-            var zoomLevel = cropit.cropit('zoom');
-            var imageSize = cropit.cropit('imageSize');
-
-            // is it wider than taller?
-            if (imageSize.width > imageSize.height) {
-              var displayedWidth = imageSize.width * zoomLevel;
-              var offsetX = (displayedWidth - _this2.getAvatarSize()) / -2;
-
-              cropit.cropit('offset', {
-                'x': offsetX,
-                'y': 0
-              });
-            } else if (imageSize.width < imageSize.height) {
-              var displayedHeight = imageSize.height * zoomLevel;
-              var offsetY = (displayedHeight - _this2.getAvatarSize()) / -2;
-
-              cropit.cropit('offset', {
-                'x': 0,
-                'y': offsetY
-              });
-            }
-          } else {
-            // use preserved crop
-            var crop = _this2.props.options.crop_org.crop;
-            if (crop) {
-              cropit.cropit('zoom', crop.zoom);
-              cropit.cropit('offset', {
-                'x': crop.x,
-                'y': crop.y
-              });
-            }
-          }
-        }
-      });
-    }
-  }, {
-    key: 'componentWillUnmount',
-    value: function componentWillUnmount() {
-      $('.crop-form').cropit('disable');
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'render',
-
-    /* jshint ignore:end */
-
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        null,
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-body modal-avatar-crop' },
-          _react2.default.createElement(
-            'div',
-            { className: 'crop-form' },
-            _react2.default.createElement('div', { className: 'cropit-image-preview' }),
-            _react2.default.createElement('input', { type: 'range', className: 'cropit-image-zoom-input' })
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-footer' },
-          _react2.default.createElement(
-            'div',
-            { className: 'col-md-6 col-md-offset-3' },
-            _react2.default.createElement(
-              _button2.default,
-              { onClick: this.cropAvatar,
-                loading: this.state.isLoading,
-                className: 'btn-primary btn-block' },
-              this.props.upload ? gettext("Set avatar") : gettext("Crop image")
-            ),
-            _react2.default.createElement(
-              _button2.default,
-              { onClick: this.props.showIndex,
-                disabled: this.state.isLoading,
-                className: 'btn-default btn-block' },
-              gettext("Cancel")
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../services/ajax":135,"../../services/snackbar":144,"../avatar":54,"../button":56,"react":"react"}],64:[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.Gallery = exports.GalleryItem = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _button = require('../button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _ajax = require('../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _batch = require('../../utils/batch');
-
-var _batch2 = _interopRequireDefault(_batch);
-
-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
-
-var GalleryItem = exports.GalleryItem = function (_React$Component) {
-  _inherits(GalleryItem, _React$Component);
-
-  function GalleryItem() {
-    var _Object$getPrototypeO;
-
-    var _temp, _this, _ret;
-
-    _classCallCheck(this, GalleryItem);
-
-    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(GalleryItem)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.select = function () {
-      _this.props.select(_this.props.image);
-    }, _temp), _possibleConstructorReturn(_this, _ret);
-  }
-  /* jshint ignore:start */
-
-  _createClass(GalleryItem, [{
-    key: 'getClassName',
-
-    /* jshint ignore:end */
-
-    value: function getClassName() {
-      if (this.props.selection === this.props.image) {
-        if (this.props.disabled) {
-          return 'btn btn-avatar btn-disabled avatar-selected';
-        } else {
-          return 'btn btn-avatar avatar-selected';
-        }
-      } else if (this.props.disabled) {
-        return 'btn btn-avatar btn-disabled';
-      } else {
-        return 'btn btn-avatar';
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'button',
-        { type: 'button',
-          className: this.getClassName(),
-          disabled: this.props.disabled,
-          onClick: this.select },
-        _react2.default.createElement('img', { src: _index2.default.get('MEDIA_URL') + this.props.image })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return GalleryItem;
-}(_react2.default.Component);
-
-var Gallery = exports.Gallery = function (_React$Component2) {
-  _inherits(Gallery, _React$Component2);
-
-  function Gallery() {
-    _classCallCheck(this, Gallery);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(Gallery).apply(this, arguments));
-  }
-
-  _createClass(Gallery, [{
-    key: 'render',
-    value: function render() {
-      var _this3 = this;
-
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'avatars-gallery' },
-        _react2.default.createElement(
-          'h3',
-          null,
-          this.props.name
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'avatars-gallery-images' },
-          (0, _batch2.default)(this.props.images, 4, null).map(function (row, i) {
-            return _react2.default.createElement(
-              'div',
-              { className: 'row', key: i },
-              row.map(function (item, i) {
-                return _react2.default.createElement(
-                  'div',
-                  { className: 'col-xs-3', key: i },
-                  item ? _react2.default.createElement(GalleryItem, { image: item,
-                    disabled: _this3.props.disabled,
-                    select: _this3.props.select,
-                    selection: _this3.props.selection }) : _react2.default.createElement('div', { className: 'blank-avatar' })
-                );
-              })
-            );
-          })
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return Gallery;
-}(_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.select = function (image) {
-      _this4.setState({
-        selection: image
-      });
-    };
-
-    _this4.save = function () {
-      if (_this4.state.isLoading) {
-        return false;
-      }
-
-      _this4.setState({
-        'isLoading': true
-      });
-
-      _ajax2.default.post(_this4.props.user.api_url.avatar, {
-        avatar: 'galleries',
-        image: _this4.state.selection
-      }).then(function (response) {
-        _this4.setState({
-          'isLoading': false
-        });
-
-        _snackbar2.default.success(response.detail);
-        _this4.props.onComplete(response.avatar_hash, response.options);
-      }, function (rejection) {
-        if (rejection.status === 400) {
-          _snackbar2.default.error(rejection.detail);
-          _this4.setState({
-            'isLoading': false
-          });
-        } else {
-          _this4.props.showError(rejection);
-        }
-      });
-    };
-
-    _this4.state = {
-      'selection': null,
-      'isLoading': false
-    };
-    return _this4;
-  }
-
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'render',
-
-    /* jshint ignore:end */
-
-    value: function render() {
-      var _this5 = this;
-
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        null,
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-body modal-avatar-gallery' },
-          this.props.options.galleries.map(function (item, i) {
-            return _react2.default.createElement(Gallery, { name: item.name,
-              images: item.images,
-              selection: _this5.state.selection,
-              disabled: _this5.state.isLoading,
-              select: _this5.select,
-              key: i });
-          })
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-footer' },
-          _react2.default.createElement(
-            'div',
-            { className: 'row' },
-            _react2.default.createElement(
-              'div',
-              { className: 'col-md-6 col-md-offset-3' },
-              _react2.default.createElement(
-                _button2.default,
-                { onClick: this.save,
-                  loading: this.state.isLoading,
-                  disabled: !this.state.selection,
-                  className: 'btn-primary btn-block' },
-                this.state.selection ? gettext("Save choice") : gettext("Select avatar")
-              ),
-              _react2.default.createElement(
-                _button2.default,
-                { onClick: this.props.showIndex,
-                  disabled: this.state.isLoading,
-                  className: 'btn-default btn-block' },
-                gettext("Cancel")
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../index":128,"../../services/ajax":135,"../../services/snackbar":144,"../../utils/batch":148,"../button":56,"react":"react"}],65:[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.api_url.avatar, {
-        avatar: avatarType
-      }).then(function (response) {
-        _this2.setState({
-          'isLoading': false
-        });
-
-        _snackbar2.default.success(response.detail);
-        _this2.props.onComplete(response.avatar_hash, response.options);
-      }, function (rejection) {
-        if (rejection.status === 400) {
-          _snackbar2.default.error(rejection.detail);
-          _this2.setState({
-            'isLoading': false
-          });
-        } else {
-          _this2.props.showError(rejection);
-        }
-      });
-    }
-
-    /* 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 btn-avatar-gravatar' },
-          gettext("Download my Gravatar")
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getCropButton',
-    value: function getCropButton() {
-      if (this.props.options.crop_org) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          _button2.default,
-          { onClick: this.props.showCrop,
-            disabled: this.state.isLoading,
-            className: 'btn-default btn-block btn-avatar-crop' },
-          gettext("Re-crop uploaded image")
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getUploadButton',
-    value: function getUploadButton() {
-      if (this.props.options.upload) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          _button2.default,
-          { onClick: this.props.showUpload,
-            disabled: this.state.isLoading,
-            className: 'btn-default btn-block btn-avatar-upload' },
-          gettext("Upload new image")
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getGalleryButton',
-    value: function getGalleryButton() {
-      if (this.props.options.galleries) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          _button2.default,
-          { onClick: this.props.showGallery,
-            disabled: this.state.isLoading,
-            className: 'btn-default btn-block btn-avatar-gallery' },
-          gettext("Pick avatar from gallery")
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getAvatarPreview',
-    value: function getAvatarPreview() {
-      /* jshint ignore:start */
-      var userPeview = {
-        id: this.props.user.id,
-        avatar_hash: this.props.options.avatar_hash
-      };
-      /* jshint ignore:end */
-
-      if (this.state.isLoading) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'avatar-preview preview-loading' },
-          _react2.default.createElement(_avatar2.default, { user: userPeview, 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: userPeview, 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 btn-avatar-generate' },
-              gettext("Generate my individual avatar")
-            ),
-            this.getCropButton(),
-            this.getUploadButton(),
-            this.getGalleryButton()
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../services/ajax":135,"../../services/snackbar":144,"../avatar":54,"../button":56,"../loader":71,"react":"react"}],66:[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 _crop = require('./crop');
-
-var _crop2 = _interopRequireDefault(_crop);
-
-var _upload = require('./upload');
-
-var _upload2 = _interopRequireDefault(_upload);
-
-var _gallery = require('./gallery');
-
-var _gallery2 = _interopRequireDefault(_gallery);
-
-var _modalLoader = require('../modal-loader');
-
-var _modalLoader2 = _interopRequireDefault(_modalLoader);
-
-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
-// 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.showIndex = function () {
-      _this2.setState({
-        'component': _index2.default
-      });
-    }, _this2.showUpload = function () {
-      _this2.setState({
-        'component': _upload2.default
-      });
-    }, _this2.showCrop = function () {
-      _this2.setState({
-        'component': _crop2.default
-      });
-    }, _this2.showGallery = function () {
-      _this2.setState({
-        'component': _gallery2.default
-      });
-    }, _this2.completeFlow = function (avatarHash, options) {
-      _store2.default.dispatch((0, _users.updateAvatar)(_this2.props.user, avatarHash));
-
-      _this2.setState({
-        'component': _index2.default,
-        options: options
-      });
-    }, _temp), _possibleConstructorReturn(_this2, _ret);
-  }
-
-  _createClass(_class, [{
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      var _this3 = this;
-
-      _ajax2.default.get(this.props.user.api_url.avatar).then(function (options) {
-        _this3.setState({
-          'component': _index2.default,
-          'options': options,
-          'error': null
-        });
-      }, 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,
-              onComplete: this.completeFlow,
-              showError: this.showError,
-              showIndex: this.showIndex,
-              showCrop: this.showCrop,
-              showUpload: this.showUpload,
-              showGallery: this.showGallery });
-            /* 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
-  };
-}
-
-},{"../../reducers/users":134,"../../services/ajax":135,"../../services/store":145,"../modal-loader":72,"./crop":63,"./gallery":64,"./index":65,"./upload":67,"react":"react"}],67:[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 _crop = require('./crop');
-
-var _crop2 = _interopRequireDefault(_crop);
-
-var _button = require('../button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _ajax = require('../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _fileSize = require('../../utils/file-size');
-
-var _fileSize2 = _interopRequireDefault(_fileSize);
-
-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 _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.pickFile = function () {
-      document.getElementById('avatar-hidden-upload').click();
-    };
-
-    _this.uploadFile = function () {
-      var image = document.getElementById('avatar-hidden-upload').files[0];
-
-      var validationError = _this.validateFile(image);
-      if (validationError) {
-        _snackbar2.default.error(validationError);
-        return;
-      }
-
-      _this.setState({
-        image: image,
-        'preview': URL.createObjectURL(image),
-        'progress': 0
-      });
-
-      var data = new FormData();
-      data.append('avatar', 'upload');
-      data.append('image', image);
-
-      _ajax2.default.upload(_this.props.user.api_url.avatar, data, function (progress) {
-        _this.setState({
-          progress: progress
-        });
-      }).then(function (data) {
-        _this.setState({
-          'options': data.options,
-          'uploaded': data.detail
-        });
-        _snackbar2.default.info(gettext("Your image has been uploaded and you may now crop it."));
-      }, function (rejection) {
-        if (rejection.status === 400) {
-          _snackbar2.default.error(rejection.detail);
-          _this.setState({
-            'isLoading': false,
-            'image': null,
-            'progress': 0
-          });
-        } else {
-          _this.props.showError(rejection);
-        }
-      });
-    };
-
-    _this.state = {
-      'image': null,
-      'preview': null,
-      'progress': 0,
-      'uploaded': null
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'validateFile',
-    value: function validateFile(image) {
-      if (image.size > this.props.options.upload.limit) {
-        return interpolate(gettext("Selected file is too big. (%(filesize)s)"), {
-          'filesize': (0, _fileSize2.default)(image.size)
-        }, true);
-      }
-
-      var invalidTypeMsg = gettext("Selected file type is not supported.");
-      if (this.props.options.upload.allowed_mime_types.indexOf(image.type) === -1) {
-        return invalidTypeMsg;
-      }
-
-      var extensionFound = false;
-      var loweredFilename = image.name.toLowerCase();
-      this.props.options.upload.allowed_extensions.map(function (extension) {
-        if (loweredFilename.substr(extension.length * -1) === extension) {
-          extensionFound = true;
-        }
-      });
-
-      if (!extensionFound) {
-        return invalidTypeMsg;
-      }
-
-      return false;
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getUploadRequirements',
-
-    /* jshint ignore:end */
-
-    value: function getUploadRequirements(options) {
-      var extensions = options.allowed_extensions.map(function (extension) {
-        return extension.substr(1);
-      });
-
-      return interpolate(gettext("%(files)s files smaller than %(limit)s"), {
-        'files': extensions.join(', '),
-        'limit': (0, _fileSize2.default)(options.limit)
-      }, true);
-    }
-  }, {
-    key: 'getUploadButton',
-    value: function getUploadButton() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'modal-body modal-avatar-upload' },
-        _react2.default.createElement(
-          _button2.default,
-          { className: 'btn-pick-file',
-            onClick: this.pickFile },
-          _react2.default.createElement(
-            'div',
-            { className: 'material-icon' },
-            'input'
-          ),
-          gettext("Select file")
-        ),
-        _react2.default.createElement(
-          'p',
-          { className: 'text-muted' },
-          this.getUploadRequirements(this.props.options.upload)
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getUploadProgressLabel',
-    value: function getUploadProgressLabel() {
-      return interpolate(gettext("%(progress)s % complete"), {
-        'progress': this.state.progress
-      }, true);
-    }
-  }, {
-    key: 'getUploadProgress',
-    value: function getUploadProgress() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'modal-body modal-avatar-upload' },
-        _react2.default.createElement(
-          'div',
-          { className: 'upload-progress' },
-          _react2.default.createElement('img', { src: this.state.preview }),
-          _react2.default.createElement(
-            'div',
-            { className: 'progress' },
-            _react2.default.createElement(
-              'div',
-              { className: 'progress-bar', role: 'progressbar',
-                'aria-valuenow': '{this.state.progress}',
-                'aria-valuemin': '0', 'aria-valuemax': '100',
-                style: { width: this.state.progress + '%' } },
-              _react2.default.createElement(
-                'span',
-                { className: 'sr-only' },
-                this.getUploadProgressLabel()
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'renderUpload',
-    value: function renderUpload() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        null,
-        _react2.default.createElement('input', { type: 'file',
-          id: 'avatar-hidden-upload',
-          className: 'hidden-file-upload',
-          onChange: this.uploadFile }),
-        this.state.image ? this.getUploadProgress() : this.getUploadButton(),
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-footer' },
-          _react2.default.createElement(
-            'div',
-            { className: 'col-md-6 col-md-offset-3' },
-            _react2.default.createElement(
-              _button2.default,
-              { onClick: this.props.showIndex,
-                disabled: !!this.state.image,
-                className: 'btn-default btn-block' },
-              gettext("Cancel")
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'renderCrop',
-    value: function renderCrop() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(_crop2.default, { options: this.state.options,
-        user: this.props.user,
-        upload: this.state.uploaded,
-        onComplete: this.props.onComplete,
-        showError: this.props.showError,
-        showIndex: this.props.showIndex });
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return this.state.uploaded ? this.renderCrop() : this.renderUpload();
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../services/ajax":135,"../../services/snackbar":144,"../../utils/file-size":149,"../button":56,"./crop":63,"react":"react"}],68:[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"}],69:[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');
-
-var _snackbar = require('../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
-// jshint ignore:line
-
-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 = _defineProperty({}, 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 = {};
-      if (!this.state.validators) {
-        return 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 = [];
-      if (!this.state.validators) {
-        return 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) {
-      _snackbar2.default.apiError(rejection);
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../services/snackbar":144,"../utils/validators":155,"react":"react"}],70:[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: 'isActive',
-    value: function isActive() {
-      if (this.props.path) {
-        return document.location.pathname.indexOf(this.props.path) === 0;
-      } else {
-        return false;
-      }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.isActive()) {
-        return (this.props.className || '') + ' ' + (this.props.activeClassName || 'active');
-      } else {
-        return this.props.className || '';
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      // jshint ignore:start
-      return _react2.default.createElement(
-        'li',
-        { className: this.getClassName() },
-        this.props.children
-      );
-      // jshint ignore:end
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],71:[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: this.props.className || "loader" },
-        _react2.default.createElement("div", { className: "loader-spinning-wheel" })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],72:[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":71,"react":"react"}],73:[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 _panelMessage = require('./panel-message');
-
-var _panelMessage2 = _interopRequireDefault(_panelMessage);
-
-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 (_PanelMessage) {
-  _inherits(_class, _PanelMessage);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    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: 'modal-body' },
-        _react2.default.createElement(
-          'div',
-          { className: 'message-icon' },
-          _react2.default.createElement(
-            'span',
-            { className: 'material-icon' },
-            this.props.icon || 'info_outline'
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'message-body' },
-          _react2.default.createElement(
-            'p',
-            { className: 'lead' },
-            this.props.message
-          ),
-          this.getHelpText()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_panelMessage2.default);
-
-exports.default = _class;
-
-},{"./panel-message":85,"react":"react"}],74:[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 _panelLoader = require('../../panel-loader');
-
-var _panelLoader2 = _interopRequireDefault(_panelLoader);
-
-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: 'panel panel-default panel-form' },
-        _react2.default.createElement(
-          'div',
-          { className: 'panel-heading' },
-          _react2.default.createElement(
-            'h3',
-            { className: 'panel-title' },
-            gettext("Change username")
-          )
-        ),
-        _react2.default.createElement(_panelLoader2.default, null)
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../panel-loader":84,"react":"react"}],75:[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 _panelMessage = require('../../panel-message');
-
-var _panelMessage2 = _interopRequireDefault(_panelMessage);
-
-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: 'getHelpText',
-    value: function getHelpText() {
-      if (this.props.options.next_on) {
-        return interpolate(gettext("You will be able to change your username %(next_change)s."), { 'next_change': this.props.options.next_on.fromNow() }, true);
-      } else {
-        return gettext("You have used up available name changes.");
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'panel panel-default panel-form' },
-        _react2.default.createElement(
-          'div',
-          { className: 'panel-heading' },
-          _react2.default.createElement(
-            'h3',
-            { className: 'panel-title' },
-            gettext("Change username")
-          )
-        ),
-        _react2.default.createElement(_panelMessage2.default, { message: gettext("You can't change your username at the moment."),
-          helpText: this.getHelpText() })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../panel-message":85,"react":"react"}],76:[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 _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 _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);
-
-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 _class = function (_Form) {
-  _inherits(_class, _Form);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.state = {
-      username: '',
-
-      validators: {
-        username: [validators.usernameContent(), validators.usernameMinLength({
-          username_length_min: props.options.length_min
-        }), validators.usernameMaxLength({
-          username_length_max: props.options.length_max
-        })]
-      },
-
-      isLoading: false
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'getHelpText',
-    value: function getHelpText() {
-      var phrases = [];
-
-      if (this.props.options.changes_left > 0) {
-        var message = ngettext("You can change your username %(changes_left)s more time.", "You can change your username %(changes_left)s more times.", this.props.options.changes_left);
-
-        phrases.push(interpolate(message, {
-          'changes_left': this.props.options.changes_left
-        }, true));
-      }
-
-      if (this.props.user.acl.name_changes_expire > 0) {
-        var message = ngettext("Used changes redeem after %(name_changes_expire)s day.", "Used changes redeem after %(name_changes_expire)s days.", this.props.user.acl.name_changes_expire);
-
-        phrases.push(interpolate(message, {
-          'name_changes_expire': this.props.user.acl.name_changes_expire
-        }, true));
-      }
-
-      return phrases.length ? phrases.join(' ') : null;
-    }
-  }, {
-    key: 'clean',
-    value: function clean() {
-      var errors = this.validate();
-      if (errors.username) {
-        _snackbar2.default.error(errors.username[0]);
-        return false;
-      }if (this.state.username.trim() === this.props.user.username) {
-        _snackbar2.default.info(gettext("Your new username is same as current one."));
-        return false;
-      } else {
-        return true;
-      }
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(this.props.user.api_url.username, {
-        'username': this.state.username
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(success) {
-      this.setState({
-        'username': ''
-      });
-
-      this.props.complete(success.username, success.slug, success.options);
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      _snackbar2.default.apiError(rejection);
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'form',
-        { onSubmit: this.handleSubmit, className: 'form-horizontal' },
-        _react2.default.createElement(
-          'div',
-          { className: 'panel panel-default panel-form' },
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-heading' },
-            _react2.default.createElement(
-              'h3',
-              { className: 'panel-title' },
-              gettext("Change username")
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-body' },
-            _react2.default.createElement(
-              _formGroup2.default,
-              { label: gettext("New username"), 'for': 'id_username',
-                labelClass: 'col-sm-4', controlClass: 'col-sm-8',
-                helpText: this.getHelpText() },
-              _react2.default.createElement('input', { type: 'text', id: 'id_username', className: 'form-control',
-                disabled: this.state.isLoading,
-                onChange: this.bindInput('username'),
-                value: this.state.username })
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-footer' },
-            _react2.default.createElement(
-              'div',
-              { className: 'row' },
-              _react2.default.createElement(
-                'div',
-                { className: 'col-sm-8 col-sm-offset-4' },
-                _react2.default.createElement(
-                  _button2.default,
-                  { className: 'btn-primary', loading: this.state.isLoading },
-                  gettext("Change username")
-                )
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_form2.default);
-
-exports.default = _class;
-
-},{"../../../services/ajax":135,"../../../services/snackbar":144,"../../../utils/validators":155,"../../button":56,"../../form":69,"../../form-group":68,"react":"react"}],77:[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);
-
-var _formLoading = require('./form-loading');
-
-var _formLoading2 = _interopRequireDefault(_formLoading);
-
-var _formLocked = require('./form-locked');
-
-var _formLocked2 = _interopRequireDefault(_formLocked);
-
-var _form = require('./form');
-
-var _form2 = _interopRequireDefault(_form);
-
-var _usernameHistory = require('../../username-history');
-
-var _usernameHistory2 = _interopRequireDefault(_usernameHistory);
-
-var _index = require('../../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _usernameHistory3 = require('../../../reducers/username-history');
-
-var _users = require('../../../reducers/users');
-
-var _ajax = require('../../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _pageTitle = require('../../../services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-var _snackbar = require('../../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-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
-// 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.onComplete = function (username, slug, options) {
-      _this.setState({
-        options: options
-      });
-
-      _store2.default.dispatch((0, _usernameHistory3.addNameChange)({ username: username, slug: slug }, _this.props.user, _this.props.user));
-      _store2.default.dispatch((0, _users.updateUsername)(_this.props.user, username, slug));
-
-      _snackbar2.default.success(gettext("Your username has been changed successfully."));
-    };
-
-    _this.state = {
-      isLoaded: false,
-      options: null
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      var _this2 = this;
-
-      _pageTitle2.default.set({
-        title: gettext("Change username"),
-        parent: gettext("Change your options")
-      });
-
-      Promise.all([_ajax2.default.get(this.props.user.api_url.username), _ajax2.default.get(_index2.default.get('USERNAME_CHANGES_API'), { user: this.props.user.id })]).then(function (data) {
-        _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data[1].results));
-
-        _this2.setState({
-          isLoaded: true,
-          options: {
-            changes_left: data[0].changes_left,
-            length_min: data[0].length_min,
-            length_max: data[0].length_max,
-            next_on: data[0].next_on ? (0, _moment2.default)(data[0].next_on) : null
-          }
-        });
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getChangeForm',
-
-    /* jshint ignore:end */
-
-    value: function getChangeForm() {
-      if (this.state.isLoaded) {
-        if (this.state.options.changes_left > 0) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_form2.default, { user: this.props.user,
-            options: this.state.options,
-            complete: this.onComplete });
-          /* jshint ignore:end */
-        } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(_formLocked2.default, { options: this.state.options });
-            /* jshint ignore:end */
-          }
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_formLoading2.default, null);
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        null,
-        this.getChangeForm(),
-        _react2.default.createElement(_usernameHistory2.default, { isLoaded: this.state.isLoaded,
-          changes: this.props['username-history'] })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../../index":128,"../../../reducers/username-history":133,"../../../reducers/users":134,"../../../services/ajax":135,"../../../services/page-title":142,"../../../services/snackbar":144,"../../../services/store":145,"../../username-history":112,"./form":76,"./form-loading":74,"./form-locked":75,"moment":"moment","react":"react"}],78:[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 _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 _select = require('../select');
-
-var _select2 = _interopRequireDefault(_select);
-
-var _yesNoSwitch = require('../yes-no-switch');
-
-var _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);
-
-var _auth = require('../../reducers/auth');
-
-var _ajax = require('../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _pageTitle = require('../../services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-var _snackbar = require('../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-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
-// 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,
-
-      'is_hiding_presence': props.user.is_hiding_presence,
-      'limits_private_thread_invites_to': props.user.limits_private_thread_invites_to,
-      'subscribe_to_started_threads': props.user.subscribe_to_started_threads,
-      'subscribe_to_replied_threads': props.user.subscribe_to_replied_threads,
-
-      'errors': {}
-    };
-
-    _this.privateThreadInvitesChoices = [{
-      'value': 0,
-      'icon': 'help_outline',
-      'label': gettext('Everybody')
-    }, {
-      'value': 1,
-      'icon': 'done_all',
-      'label': gettext('Users I follow')
-    }, {
-      'value': 2,
-      'icon': 'highlight_off',
-      'label': gettext('Nobody')
-    }];
-
-    _this.subscribeToChoices = [{
-      'value': 0,
-      'icon': 'bookmark_border',
-      'label': gettext('No')
-    }, {
-      'value': 1,
-      'icon': 'bookmark',
-      'label': gettext('Bookmark')
-    }, {
-      'value': 2,
-      'icon': 'mail',
-      'label': gettext('Bookmark with e-mail notification')
-    }];
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(this.props.user.api_url.options, {
-        is_hiding_presence: this.state.is_hiding_presence,
-        limits_private_thread_invites_to: this.state.limits_private_thread_invites_to,
-        subscribe_to_started_threads: this.state.subscribe_to_started_threads,
-        subscribe_to_replied_threads: this.state.subscribe_to_replied_threads
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess() {
-      _store2.default.dispatch((0, _auth.patchUser)({
-        is_hiding_presence: this.state.is_hiding_presence,
-        limits_private_thread_invites_to: this.state.limits_private_thread_invites_to,
-        subscribe_to_started_threads: this.state.subscribe_to_started_threads,
-        subscribe_to_replied_threads: this.state.subscribe_to_replied_threads
-      }));
-      _snackbar2.default.success(gettext("Your forum options have been changed."));
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      if (rejection.status === 400) {
-        _snackbar2.default.error(gettext("Please reload page and try again."));
-      } else {
-        _snackbar2.default.apiError(rejection);
-      }
-    }
-  }, {
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      _pageTitle2.default.set({
-        title: gettext("Forum options"),
-        parent: gettext("Change your options")
-      });
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'form',
-        { onSubmit: this.handleSubmit, className: 'form-horizontal' },
-        _react2.default.createElement(
-          'div',
-          { className: 'panel panel-default panel-form' },
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-heading' },
-            _react2.default.createElement(
-              'h3',
-              { className: 'panel-title' },
-              gettext("Change forum options")
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-body' },
-            _react2.default.createElement(
-              'fieldset',
-              null,
-              _react2.default.createElement(
-                'legend',
-                null,
-                gettext("Privacy settings")
-              ),
-              _react2.default.createElement(
-                _formGroup2.default,
-                { label: gettext("Hide my presence"),
-                  helpText: gettext("If you hide your presence, only members with permission to see hidden users will see when you are online."),
-                  'for': 'id_is_hiding_presence',
-                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-                _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_is_hiding_presence',
-                  disabled: this.state.isLoading,
-                  iconOn: 'visibility_off',
-                  iconOff: 'visibility',
-                  labelOn: gettext("Hide my presence from other users"),
-                  labelOff: gettext("Show my presence to other users"),
-                  onChange: this.bindInput('is_hiding_presence'),
-                  value: this.state.is_hiding_presence })
-              ),
-              _react2.default.createElement(
-                _formGroup2.default,
-                { label: gettext("Private thread invitations"),
-                  'for': 'id_limits_private_thread_invites_to',
-                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-                _react2.default.createElement(_select2.default, { id: 'id_limits_private_thread_invites_to',
-                  disabled: this.state.isLoading,
-                  onChange: this.bindInput('limits_private_thread_invites_to'),
-                  value: this.state.limits_private_thread_invites_to,
-                  choices: this.privateThreadInvitesChoices })
-              )
-            ),
-            _react2.default.createElement(
-              'fieldset',
-              null,
-              _react2.default.createElement(
-                'legend',
-                null,
-                gettext("Automatic subscriptions")
-              ),
-              _react2.default.createElement(
-                _formGroup2.default,
-                { label: gettext("Threads I start"),
-                  'for': 'id_subscribe_to_started_threads',
-                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-                _react2.default.createElement(_select2.default, { id: 'id_subscribe_to_started_threads',
-                  disabled: this.state.isLoading,
-                  onChange: this.bindInput('subscribe_to_started_threads'),
-                  value: this.state.subscribe_to_started_threads,
-                  choices: this.subscribeToChoices })
-              ),
-              _react2.default.createElement(
-                _formGroup2.default,
-                { label: gettext("Threads I reply to"),
-                  'for': 'id_subscribe_to_replied_threads',
-                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-                _react2.default.createElement(_select2.default, { id: 'id_subscribe_to_replied_threads',
-                  disabled: this.state.isLoading,
-                  onChange: this.bindInput('subscribe_to_replied_threads'),
-                  value: this.state.subscribe_to_replied_threads,
-                  choices: this.subscribeToChoices })
-              )
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-footer' },
-            _react2.default.createElement(
-              'div',
-              { className: 'row' },
-              _react2.default.createElement(
-                'div',
-                { className: 'col-sm-8 col-sm-offset-4' },
-                _react2.default.createElement(
-                  _button2.default,
-                  { className: 'btn-primary', loading: this.state.isLoading },
-                  gettext("Save changes")
-                )
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_form2.default);
-
-exports.default = _class;
-
-},{"../../reducers/auth":129,"../../services/ajax":135,"../../services/page-title":142,"../../services/snackbar":144,"../../services/store":145,"../button":56,"../form":69,"../form-group":68,"../select":105,"../yes-no-switch":127,"react":"react"}],79:[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.CompactNav = exports.SideNav = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactRouter = require('react-router');
-
-var _li = require('../li');
-
-var _li2 = _interopRequireDefault(_li);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-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 SideNav = exports.SideNav = function (_React$Component) {
-  _inherits(SideNav, _React$Component);
-
-  function SideNav() {
-    _classCallCheck(this, SideNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(SideNav).apply(this, arguments));
-  }
-
-  _createClass(SideNav, [{
-    key: 'render',
-    value: function render() {
-      var _this2 = this;
-
-      // jshint ignore:start
-      return _react2.default.createElement(
-        'div',
-        { className: 'list-group nav-side' },
-        this.props.options.map(function (option) {
-          return _react2.default.createElement(
-            _reactRouter.Link,
-            { to: _this2.props.baseUrl + option.component + '/',
-              className: 'list-group-item',
-              activeClassName: 'active',
-              key: option.component },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              option.icon
-            ),
-            option.name
-          );
-        })
-      );
-      // jshint ignore:end
-    }
-  }]);
-
-  return SideNav;
-}(_react2.default.Component);
-
-var CompactNav = exports.CompactNav = function (_React$Component2) {
-  _inherits(CompactNav, _React$Component2);
-
-  function CompactNav() {
-    _classCallCheck(this, CompactNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));
-  }
-
-  _createClass(CompactNav, [{
-    key: 'render',
-    value: function render() {
-      var _this4 = this;
-
-      // jshint ignore:start
-      return _react2.default.createElement(
-        'ul',
-        { className: 'dropdown-menu', role: 'menu' },
-        this.props.options.map(function (option) {
-          return _react2.default.createElement(
-            _li2.default,
-            { path: _this4.props.baseUrl + option.component + '/',
-              key: option.component },
-            _react2.default.createElement(
-              _reactRouter.Link,
-              { to: _this4.props.baseUrl + option.component + '/',
-                onClick: _this4.props.hideNav },
-              _react2.default.createElement(
-                'span',
-                { className: 'material-icon' },
-                option.icon
-              ),
-              option.name
-            )
-          );
-        })
-      );
-      // jshint ignore:end
-    }
-  }]);
-
-  return CompactNav;
-}(_react2.default.Component);
-
-},{"../../index":128,"../li":70,"react":"react","react-router":"react-router"}],80:[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;
-exports.paths = paths;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactRedux = require('react-redux');
-
-var _navs = require('./navs');
-
-var _forumOptions = require('./forum-options');
-
-var _forumOptions2 = _interopRequireDefault(_forumOptions);
-
-var _root = require('./change-username/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _root3 = require('./sign-in-credentials/root');
-
-var _root4 = _interopRequireDefault(_root3);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-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(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.toggleNav = function () {
-      if (_this.state.dropdown) {
-        _this.setState({
-          dropdown: false
-        });
-      } else {
-        _this.setState({
-          dropdown: true
-        });
-      }
-    };
-
-    _this.hideNav = function () {
-      _this.setState({
-        dropdown: false
-      });
-    };
-
-    _this.state = {
-      dropdown: false
-    };
-    return _this;
-  }
-
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'getToggleNavClassName',
-
-    /* jshint ignore:end */
-
-    value: function getToggleNavClassName() {
-      if (this.state.dropdown) {
-        return 'btn btn-default btn-icon open';
-      } else {
-        return 'btn btn-default btn-icon';
-      }
-    }
-  }, {
-    key: 'getCompactNavClassName',
-    value: function getCompactNavClassName() {
-      if (this.state.dropdown) {
-        return 'compact-nav open';
-      } else {
-        return 'compact-nav';
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'page page-options' },
-        _react2.default.createElement(
-          'div',
-          { className: 'page-header' },
-          _react2.default.createElement(
-            'div',
-            { className: 'container' },
-            _react2.default.createElement(
-              'h1',
-              { className: 'pull-left' },
-              gettext("Change your options")
-            ),
-            _react2.default.createElement(
-              'button',
-              { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',
-                type: 'button',
-                onClick: this.toggleNav,
-                'aria-haspopup': 'true',
-                'aria-expanded': this.state.dropdown ? 'true' : 'false' },
-              _react2.default.createElement(
-                'i',
-                { className: 'material-icon' },
-                'menu'
-              )
-            )
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: this.getCompactNavClassName() },
-          _react2.default.createElement(_navs.CompactNav, { options: _index2.default.get('USER_OPTIONS'),
-            baseUrl: _index2.default.get('USERCP_URL'),
-            hideNav: this.hideNav })
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'div',
-            { className: 'row' },
-            _react2.default.createElement(
-              'div',
-              { className: 'col-md-3 hidden-xs hidden-sm' },
-              _react2.default.createElement(_navs.SideNav, { options: _index2.default.get('USER_OPTIONS'),
-                baseUrl: _index2.default.get('USERCP_URL') })
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'col-md-9' },
-              this.props.children
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-function select(store) {
-  return {
-    'tick': store.tick.tick,
-    'user': store.auth.user,
-    'username-history': store['username-history']
-  };
-}
-
-function paths() {
-  return [{
-    path: _index2.default.get('USERCP_URL') + 'forum-options/',
-    component: (0, _reactRedux.connect)(select)(_forumOptions2.default)
-  }, {
-    path: _index2.default.get('USERCP_URL') + 'change-username/',
-    component: (0, _reactRedux.connect)(select)(_root2.default)
-  }, {
-    path: _index2.default.get('USERCP_URL') + 'sign-in-credentials/',
-    component: (0, _reactRedux.connect)(select)(_root4.default)
-  }];
-}
-
-},{"../../index":128,"./change-username/root":77,"./forum-options":78,"./navs":79,"./sign-in-credentials/root":83,"react":"react","react-redux":"react-redux"}],81:[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 _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 _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);
-
-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 _class = function (_Form) {
-  _inherits(_class, _Form);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.state = {
-      new_email: '',
-      password: '',
-
-      validators: {
-        new_email: [validators.email()],
-        password: []
-      },
-
-      isLoading: false
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'clean',
-    value: function clean() {
-      var errors = this.validate();
-      var lengths = [this.state.new_email.trim().length, this.state.password.trim().length];
-
-      if (lengths.indexOf(0) !== -1) {
-        _snackbar2.default.error(gettext("Fill out all fields."));
-        return false;
-      }
-
-      if (errors.new_email) {
-        _snackbar2.default.error(errors.new_email[0]);
-        return false;
-      }
-
-      return true;
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(this.props.user.api_url.change_email, {
-        new_email: this.state.new_email,
-        password: this.state.password
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(response) {
-      this.setState({
-        new_email: '',
-        password: ''
-      });
-
-      _snackbar2.default.success(response.detail);
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      if (rejection.status === 400) {
-        if (rejection.new_email) {
-          _snackbar2.default.error(rejection.new_email);
-        } else {
-          _snackbar2.default.error(rejection.password);
-        }
-      } else {
-        _snackbar2.default.apiError(rejection);
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _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: 'panel panel-default panel-form' },
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-heading' },
-            _react2.default.createElement(
-              'h3',
-              { className: 'panel-title' },
-              gettext("Change e-mail address")
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-body' },
-            _react2.default.createElement(
-              _formGroup2.default,
-              { label: gettext("New e-mail"), 'for': 'id_new_email',
-                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-              _react2.default.createElement('input', { type: 'text', id: 'id_new_email', className: 'form-control',
-                disabled: this.state.isLoading,
-                onChange: this.bindInput('new_email'),
-                value: this.state.new_email })
-            ),
-            _react2.default.createElement('hr', null),
-            _react2.default.createElement(
-              _formGroup2.default,
-              { label: gettext("Your current password"), 'for': 'id_password',
-                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-              _react2.default.createElement('input', { type: 'password', id: 'id_password', className: 'form-control',
-                disabled: this.state.isLoading,
-                onChange: this.bindInput('password'),
-                value: this.state.password })
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-footer' },
-            _react2.default.createElement(
-              'div',
-              { className: 'row' },
-              _react2.default.createElement(
-                'div',
-                { className: 'col-sm-8 col-sm-offset-4' },
-                _react2.default.createElement(
-                  _button2.default,
-                  { className: 'btn-primary', loading: this.state.isLoading },
-                  gettext("Change e-mail")
-                )
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_form2.default);
-
-exports.default = _class;
-
-},{"../../../services/ajax":135,"../../../services/snackbar":144,"../../../utils/validators":155,"../../button":56,"../../form":69,"../../form-group":68,"react":"react"}],82:[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 _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 _index = require('../../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-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);
-
-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 _class = function (_Form) {
-  _inherits(_class, _Form);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.state = {
-      new_password: '',
-      repeat_password: '',
-      password: '',
-
-      validators: {
-        new_password: [validators.passwordMinLength(_index2.default.get('SETTINGS'))],
-        repeat_password: [],
-        password: []
-      },
-
-      isLoading: false
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'clean',
-    value: function clean() {
-      var errors = this.validate();
-      var lengths = [this.state.new_password.trim().length, this.state.repeat_password.trim().length, this.state.password.trim().length];
-
-      if (lengths.indexOf(0) !== -1) {
-        _snackbar2.default.error(gettext("Fill out all fields."));
-        return false;
-      }
-
-      if (errors.new_password) {
-        _snackbar2.default.error(errors.new_password[0]);
-        return false;
-      }
-
-      if (this.state.new_password.trim() !== this.state.repeat_password.trim()) {
-        _snackbar2.default.error(gettext("New passwords are different."));
-        return false;
-      }
-
-      return true;
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(this.props.user.api_url.change_password, {
-        new_password: this.state.new_password,
-        password: this.state.password
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(response) {
-      this.setState({
-        new_password: '',
-        repeat_password: '',
-        password: ''
-      });
-
-      _snackbar2.default.success(response.detail);
-    }
-  }, {
-    key: 'handleError',
-    value: function handleError(rejection) {
-      if (rejection.status === 400) {
-        if (rejection.new_password) {
-          _snackbar2.default.error(rejection.new_password);
-        } else {
-          _snackbar2.default.error(rejection.password);
-        }
-      } else {
-        _snackbar2.default.apiError(rejection);
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _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: 'panel panel-default panel-form' },
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-heading' },
-            _react2.default.createElement(
-              'h3',
-              { className: 'panel-title' },
-              gettext("Change password")
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-body' },
-            _react2.default.createElement(
-              _formGroup2.default,
-              { label: gettext("New password"), 'for': 'id_new_password',
-                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-              _react2.default.createElement('input', { type: 'password', id: 'id_new_password', className: 'form-control',
-                disabled: this.state.isLoading,
-                onChange: this.bindInput('new_password'),
-                value: this.state.new_password })
-            ),
-            _react2.default.createElement(
-              _formGroup2.default,
-              { label: gettext("Repeat password"), 'for': 'id_repeat_password',
-                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-              _react2.default.createElement('input', { type: 'password', id: 'id_repeat_password', className: 'form-control',
-                disabled: this.state.isLoading,
-                onChange: this.bindInput('repeat_password'),
-                value: this.state.repeat_password })
-            ),
-            _react2.default.createElement('hr', null),
-            _react2.default.createElement(
-              _formGroup2.default,
-              { label: gettext("Your current password"), 'for': 'id_password',
-                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },
-              _react2.default.createElement('input', { type: 'password', id: 'id_password', className: 'form-control',
-                disabled: this.state.isLoading,
-                onChange: this.bindInput('password'),
-                value: this.state.password })
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-footer' },
-            _react2.default.createElement(
-              'div',
-              { className: 'row' },
-              _react2.default.createElement(
-                'div',
-                { className: 'col-sm-8 col-sm-offset-4' },
-                _react2.default.createElement(
-                  _button2.default,
-                  { className: 'btn-primary', loading: this.state.isLoading },
-                  gettext("Change password")
-                )
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_form2.default);
-
-exports.default = _class;
-
-},{"../../../index":128,"../../../services/ajax":135,"../../../services/snackbar":144,"../../../utils/validators":155,"../../button":56,"../../form":69,"../../form-group":68,"react":"react"}],83:[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 _changeEmail = require('./change-email');
-
-var _changeEmail2 = _interopRequireDefault(_changeEmail);
-
-var _changePassword = require('./change-password');
-
-var _changePassword2 = _interopRequireDefault(_changePassword);
-
-var _index = require('../../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _pageTitle = require('../../../services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-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() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      _pageTitle2.default.set({
-        title: gettext("Change email or password"),
-        parent: gettext("Change your options")
-      });
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        null,
-        _react2.default.createElement(_changeEmail2.default, { user: this.props.user }),
-        _react2.default.createElement(_changePassword2.default, { user: this.props.user }),
-        _react2.default.createElement(
-          'p',
-          { className: 'message-line' },
-          _react2.default.createElement(
-            'span',
-            { className: 'material-icon' },
-            'warning'
-          ),
-          _react2.default.createElement(
-            'a',
-            { href: _index2.default.get('FORGOTTEN_PASSWORD_URL') },
-            gettext("Change forgotten password")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../../index":128,"../../../services/page-title":142,"./change-email":81,"./change-password":82,"react":"react"}],84:[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: 'panel-body panel-body-loading' },
-        _react2.default.createElement(_loader2.default, { className: 'loader loader-spaced' })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"./loader":71,"react":"react"}],85:[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: "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: "panel-body panel-message-body" },
-        _react2.default.createElement(
-          "div",
-          { className: "message-icon" },
-          _react2.default.createElement(
-            "span",
-            { className: "material-icon" },
-            this.props.icon || 'info_outline'
-          )
-        ),
-        _react2.default.createElement(
-          "div",
-          { className: "message-body" },
-          _react2.default.createElement(
-            "p",
-            { className: "lead" },
-            this.props.message
-          ),
-          this.getHelpText()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],86:[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":146,"react":"react"}],87:[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 _followButton = require('./follow-button');
-
-var _followButton2 = _interopRequireDefault(_followButton);
-
-var _nav = require('./moderation/nav');
-
-var _nav2 = _interopRequireDefault(_nav);
-
-var _userStatus = require('../user-status');
-
-var _userStatus2 = _interopRequireDefault(_userStatus);
-
-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 _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: 'getUserStatus',
-    value: function getUserStatus() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'li',
-        { className: 'user-status-display' },
-        _react2.default.createElement(
-          _userStatus2.default,
-          { user: this.props.profile, status: this.props.profile.status },
-          _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.profile,
-            status: this.props.profile.status }),
-          _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.profile,
-            status: this.props.profile.status,
-            className: 'status-label' })
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getUserRank',
-    value: function getUserRank() {
-      if (this.props.profile.rank.is_tab) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'li',
-          { className: 'user-rank' },
-          _react2.default.createElement(
-            'a',
-            { href: this.props.profile.rank.absolute_url, className: 'item-title' },
-            this.props.profile.rank.name
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'li',
-            { className: 'user-rank' },
-            _react2.default.createElement(
-              'span',
-              { className: 'item-title' },
-              this.props.profile.rank.name
-            )
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'getUserTitle',
-    value: function getUserTitle() {
-      if (this.props.profile.title) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'li',
-          { className: 'user-title' },
-          this.props.profile.title
-        );
-        /* jshint ignore:end */
-      } else if (this.props.profile.rank.title) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'li',
-            { className: 'user-title' },
-            this.props.profile.rank.title
-          );
-          /* jshint ignore:end */
-        } else {
-            return null;
-          }
-    }
-  }, {
-    key: 'getJoinedOn',
-    value: function getJoinedOn() {
-      /* jshint ignore:start */
-      var title = interpolate(gettext("Joined on %(joined_on)s"), {
-        'joined_on': this.props.profile.joined_on.format('LL, LT')
-      }, true);
-
-      var age = interpolate(gettext("Joined %(joined_on)s"), {
-        'joined_on': this.props.profile.joined_on.fromNow()
-      }, true);
-
-      return _react2.default.createElement(
-        'li',
-        { className: 'user-joined-on' },
-        _react2.default.createElement(
-          'abbr',
-          { title: title },
-          age
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getEmail',
-    value: function getEmail() {
-      if (this.props.profile.email) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'li',
-          { className: 'user-email' },
-          _react2.default.createElement(
-            'a',
-            { href: 'mailto:' + this.props.profile.email, className: 'item-title' },
-            this.props.profile.email
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getFollowButton',
-    value: function getFollowButton() {
-      if (this.props.profile.acl.can_follow) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(_followButton2.default, { className: 'btn btn-aligned hidden-xs hidden-sm',
-          profile: this.props.profile });
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getModerationButton',
-    value: function getModerationButton() {
-      if (this.props.profile.acl.can_moderate) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'btn-group btn-aligned hidden-xs hidden-sm' },
-          _react2.default.createElement(
-            'button',
-            { className: 'btn btn-default btn-moderate dropdown-toggle',
-              type: 'button',
-              'data-toggle': 'dropdown',
-              'aria-haspopup': 'true',
-              'aria-expanded': 'false' },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'tonality'
-            ),
-            gettext("Moderation")
-          ),
-          _react2.default.createElement(_nav2.default, { profile: this.props.profile })
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'page-header' },
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'div',
-            { className: 'row' },
-            _react2.default.createElement(
-              'div',
-              { className: 'col-md-9 col-md-offset-3' },
-              _react2.default.createElement(
-                'h1',
-                { className: 'pull-left' },
-                _react2.default.createElement(_avatar2.default, { user: this.props.profile, size: '100' }),
-                _react2.default.createElement(
-                  'span',
-                  { className: 'user-name' },
-                  this.props.profile.username
-                )
-              ),
-              this.getFollowButton(),
-              this.getModerationButton(),
-              _react2.default.createElement(
-                'button',
-                { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',
-                  type: 'button',
-                  onClick: this.props.toggleNav,
-                  'aria-haspopup': 'true',
-                  'aria-expanded': this.props.dropdown ? 'true' : 'false' },
-                _react2.default.createElement(
-                  'i',
-                  { className: 'material-icon' },
-                  'menu'
-                )
-              )
-            )
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'header-stats' },
-          _react2.default.createElement(
-            'div',
-            { className: 'container' },
-            _react2.default.createElement(
-              'div',
-              { className: 'row' },
-              _react2.default.createElement(
-                'div',
-                { className: 'col-md-9 col-md-offset-3' },
-                _react2.default.createElement(
-                  'ul',
-                  { className: 'list-inline' },
-                  this.getUserStatus(),
-                  this.getUserRank(),
-                  this.getUserTitle(),
-                  this.getJoinedOn(),
-                  this.getEmail()
-                )
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../avatar":54,"../user-status":111,"./follow-button":89,"./moderation/nav":95,"react":"react"}],88:[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);
-
-var _panelLoader = require('../panel-loader');
-
-var _panelLoader2 = _interopRequireDefault(_panelLoader);
-
-var _panelMessage = require('../panel-message');
-
-var _panelMessage2 = _interopRequireDefault(_panelMessage);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _polls = require('../../services/polls');
-
-var _polls2 = _interopRequireDefault(_polls);
-
-var _pageTitle = require('../../services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-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 (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.update = function (ban) {
-      if (ban.expires_on) {
-        ban.expires_on = (0, _moment2.default)(ban.expires_on);
-      }
-
-      _this.setState({
-        isLoaded: true,
-        error: null,
-
-        ban: ban
-      });
-    };
-
-    _this.error = function (error) {
-      _this.setState({
-        isLoaded: true,
-        error: error.detail,
-        ban: null
-      });
-    };
-
-    if (_index2.default.has('PROFILE_BAN')) {
-      _this.initWithPreloadedData(_index2.default.pop('PROFILE_BAN'));
-    } else {
-      _this.initWithoutPreloadedData();
-    }
-
-    _this.startPolling(props.profile.api_url.ban);
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'initWithPreloadedData',
-    value: function initWithPreloadedData(ban) {
-      if (ban.expires_on) {
-        ban.expires_on = (0, _moment2.default)(ban.expires_on);
-      }
-
-      this.state = {
-        isLoaded: true,
-        ban: ban
-      };
-    }
-  }, {
-    key: 'initWithoutPreloadedData',
-    value: function initWithoutPreloadedData() {
-      this.state = {
-        isLoaded: false
-      };
-    }
-  }, {
-    key: 'startPolling',
-    value: function startPolling(api) {
-      _polls2.default.start({
-        poll: 'ban-details',
-        url: api,
-        frequency: 90 * 1000,
-        update: this.update,
-        error: this.error
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'componentDidMount',
-
-    /* jshint ignore:end */
-
-    value: function componentDidMount() {
-      _pageTitle2.default.set({
-        title: gettext("Ban details"),
-        parent: this.props.profile.username
-      });
-    }
-  }, {
-    key: 'componentWillUnmount',
-    value: function componentWillUnmount() {
-      _polls2.default.stop('ban-details');
-    }
-  }, {
-    key: 'getUserMessage',
-    value: function getUserMessage() {
-      if (this.state.ban.user_message) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'panel-body ban-message ban-user-message' },
-          _react2.default.createElement(
-            'h4',
-            null,
-            gettext("User-shown ban message")
-          ),
-          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {
-              __html: this.state.ban.user_message.html
-            } })
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getStaffMessage',
-    value: function getStaffMessage() {
-      if (this.state.ban.staff_message) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'panel-body ban-message ban-staff-message' },
-          _react2.default.createElement(
-            'h4',
-            null,
-            gettext("Team-shown ban message")
-          ),
-          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {
-              __html: this.state.ban.staff_message.html
-            } })
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getExpirationMessage',
-    value: function getExpirationMessage() {
-      if (this.state.ban.expires_on) {
-        if (this.state.ban.expires_on.isAfter((0, _moment2.default)())) {
-          /* jshint ignore:start */
-          var _title = interpolate(gettext("This ban expires on %(expires_on)s."), {
-            'expires_on': this.state.ban.expires_on.format('LL, LT')
-          }, true);
-
-          var message = interpolate(gettext("This ban expires %(expires_on)s."), {
-            'expires_on': this.state.ban.expires_on.fromNow()
-          }, true);
-
-          return _react2.default.createElement(
-            'abbr',
-            { title: _title },
-            message
-          );
-          /* jshint ignore:end */
-        } else {
-            return gettext("This ban has expired.");
-          }
-      } else {
-        return interpolate(gettext("%(username)s's ban is permanent."), {
-          'username': this.props.profile.username
-        }, true);
-      }
-    }
-  }, {
-    key: 'getPanelBody',
-    value: function getPanelBody() {
-      if (this.state.ban) {
-        if (Object.keys(this.state.ban).length) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'div',
-            null,
-            this.getUserMessage(),
-            this.getStaffMessage(),
-            _react2.default.createElement(
-              'div',
-              { className: 'panel-body ban-expires' },
-              _react2.default.createElement(
-                'h4',
-                null,
-                gettext("Ban expiration")
-              ),
-              _react2.default.createElement(
-                'p',
-                { className: 'lead' },
-                this.getExpirationMessage()
-              )
-            )
-          );
-          /* jshint ignore:end */
-        } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(
-              'div',
-              null,
-              _react2.default.createElement(_panelMessage2.default, { message: gettext("No ban is active at the moment.") })
-            );
-            /* jshint ignore:end */
-          }
-      } else if (this.state.error) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'div',
-            null,
-            _react2.default.createElement(_panelMessage2.default, { icon: 'error_outline',
-              message: this.state.error })
-          );
-          /* jshint ignore:end */
-        } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(
-              'div',
-              null,
-              _react2.default.createElement(_panelLoader2.default, null)
-            );
-            /* jshint ignore:end */
-          }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'profile-ban-details' },
-        _react2.default.createElement(
-          'div',
-          { className: 'panel panel-default' },
-          _react2.default.createElement(
-            'div',
-            { className: 'panel-heading' },
-            _react2.default.createElement(
-              'h3',
-              { className: 'panel-title' },
-              gettext("Ban details")
-            )
-          ),
-          this.getPanelBody()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../index":128,"../../services/page-title":142,"../../services/polls":143,"../panel-loader":84,"../panel-message":85,"moment":"moment","react":"react"}],89:[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 _button = require('../button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _profile = require('../../reducers/profile');
-
-var _ajax = require('../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-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
-
-// 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.action = function () {
-      _this.setState({
-        isLoading: true
-      });
-
-      if (_this.props.profile.is_followed) {
-        _store2.default.dispatch((0, _profile.patchProfile)({
-          is_followed: false,
-          followers: _this.props.profile.followers - 1
-        }));
-      } else {
-        _store2.default.dispatch((0, _profile.patchProfile)({
-          is_followed: true,
-          followers: _this.props.profile.followers + 1
-        }));
-      }
-
-      _ajax2.default.post(_this.props.profile.api_url.follow).then(function (data) {
-        _this.setState({
-          isLoading: false
-        });
-
-        _store2.default.dispatch((0, _profile.patchProfile)(data));
-      }, function (rejection) {
-        _this.setState({
-          isLoading: false
-        });
-        _snackbar2.default.apiError(rejection);
-      });
-    };
-
-    _this.state = {
-      isLoading: false
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.props.profile.is_followed) {
-        return this.props.className + ' btn-default btn-following';
-      } else {
-        return this.props.className + ' btn-default btn-follow';
-      }
-    }
-  }, {
-    key: 'getIcon',
-    value: function getIcon() {
-      if (this.props.profile.is_followed) {
-        return 'favorite';
-      } else {
-        return 'favorite_border';
-      }
-    }
-  }, {
-    key: 'getLabel',
-    value: function getLabel() {
-      if (this.props.profile.is_followed) {
-        return gettext("Following");
-      } else {
-        return gettext("Follow");
-      }
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'render',
-
-    /* jshint ignore:end */
-
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        _button2.default,
-        { className: this.getClassName(),
-          disabled: this.state.isLoading,
-          onClick: this.action },
-        _react2.default.createElement(
-          'span',
-          { className: 'material-icon' },
-          this.getIcon()
-        ),
-        this.getLabel()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../reducers/profile":130,"../../services/ajax":135,"../../services/snackbar":144,"../../services/store":145,"../button":56,"react":"react"}],90:[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 _button = require('../button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _search = require('../search');
-
-var _search2 = _interopRequireDefault(_search);
-
-var _root = require('../users-list/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _users = require('../../reducers/users');
-
-var _ajax = require('../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _store = require('../../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-var _pageTitle = require('../../services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
-function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
-function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // 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.loadMore = function () {
-      _this.setState({
-        isBusy: true
-      });
-
-      _this.loadUsers(_this.state.page + 1, _this.state.search);
-    };
-
-    _this.search = function (ev) {
-      _this.setState({
-        isLoaded: false,
-        isBusy: true,
-
-        search: ev.target.value,
-
-        count: 0,
-        more: 0,
-
-        page: 1,
-        pages: 1
-      });
-
-      _this.loadUsers(1, ev.target.value);
-    };
-
-    _this.setSpecialProps();
-
-    if (_index2.default.has(_this.PRELOADED_DATA_KEY)) {
-      _this.initWithPreloadedData(_index2.default.pop(_this.PRELOADED_DATA_KEY));
-    } else {
-      _this.initWithoutPreloadedData();
-    }
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'setSpecialProps',
-    value: function setSpecialProps() {
-      this.PRELOADED_DATA_KEY = 'PROFILE_FOLLOWERS';
-      this.TITLE = gettext('Followers');
-      this.API_FILTER = 'followers';
-    }
-  }, {
-    key: 'initWithPreloadedData',
-    value: function initWithPreloadedData(data) {
-      this.state = {
-        isLoaded: true,
-        isBusy: false,
-
-        search: '',
-
-        count: data.count,
-        more: data.more,
-
-        page: data.page,
-        pages: data.pages
-      };
-
-      _store2.default.dispatch((0, _users.dehydrate)(data.results));
-    }
-  }, {
-    key: 'initWithoutPreloadedData',
-    value: function initWithoutPreloadedData() {
-      this.state = {
-        isLoaded: false,
-        isBusy: false,
-
-        search: '',
-
-        count: 0,
-        more: 0,
-
-        page: 1,
-        pages: 1
-      };
-
-      this.loadUsers();
-    }
-  }, {
-    key: 'loadUsers',
-    value: function loadUsers() {
-      var _ajax$get,
-          _this2 = this;
-
-      var page = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0];
-      var search = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
-      _ajax2.default.get(_index2.default.get('USERS_API'), (_ajax$get = {}, _defineProperty(_ajax$get, this.API_FILTER, this.props.profile.id), _defineProperty(_ajax$get, 'name', search), _defineProperty(_ajax$get, 'page', page || 1), _ajax$get), 'user-' + this.API_FILTER).then(function (data) {
-        if (page === 1) {
-          _store2.default.dispatch((0, _users.dehydrate)(data.results));
-        } else {
-          _store2.default.dispatch((0, _users.append)(data.results));
-        }
-
-        _this2.setState({
-          isLoaded: true,
-          isBusy: false,
-
-          count: data.count,
-          more: data.more,
-
-          page: data.page,
-          pages: data.pages
-        });
-      }, function (rejection) {
-        _snackbar2.default.apiError(rejection);
-      });
-    }
-  }, {
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      _pageTitle2.default.set({
-        title: this.TITLE,
-        parent: this.props.profile.username
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getLabel',
-
-    /* jshint ignore:end */
-
-    value: function getLabel() {
-      if (!this.state.isLoaded) {
-        return gettext('Loading...');
-      } else if (this.state.search) {
-        var message = ngettext("Found %(users)s user.", "Found %(users)s users.", this.state.count);
-
-        return interpolate(message, {
-          'users': this.state.count
-        }, true);
-      } else if (this.props.profile.id === this.props.user.id) {
-        var message = ngettext("You have %(users)s follower.", "You have %(users)s followers.", this.state.count);
-
-        return interpolate(message, {
-          'users': this.state.count
-        }, true);
-      } else {
-        var message = ngettext("%(username)s has %(users)s follower.", "%(username)s has %(users)s followers.", this.state.count);
-
-        return interpolate(message, {
-          'username': this.props.profile.username,
-          'users': this.state.count
-        }, true);
-      }
-    }
-  }, {
-    key: 'getEmptyMessage',
-    value: function getEmptyMessage() {
-      if (this.state.search) {
-        return gettext("Search returned no users matching specified criteria.");
-      } else if (this.props.user.id === this.props.profile.id) {
-        return gettext("You have no followers.");
-      } else {
-        return interpolate(gettext("%(username)s has no followers."), {
-          'username': this.props.profile.username
-        }, true);
-      }
-    }
-  }, {
-    key: 'getMoreButton',
-    value: function getMoreButton() {
-      if (this.state.more) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'pager-more' },
-          _react2.default.createElement(
-            _button2.default,
-            { loading: this.state.isBusy,
-              onClick: this.loadMore },
-            interpolate(gettext("Show more (%(more)s)"), {
-              'more': this.state.more
-            }, true)
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getListBody',
-    value: function getListBody() {
-      if (this.state.isLoaded && this.state.count === 0) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'p',
-          { className: 'lead' },
-          this.getEmptyMessage()
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'div',
-            null,
-            _react2.default.createElement(_root2.default, { isLoaded: this.state.isLoaded,
-              users: this.props.users,
-              showRank: true,
-              cols: 2 }),
-            this.getMoreButton()
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      return 'profile-' + this.API_FILTER;
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: this.getClassName() },
-        _react2.default.createElement(
-          'nav',
-          { className: 'toolbar' },
-          _react2.default.createElement(
-            'h3',
-            { className: 'toolbar-left' },
-            this.getLabel()
-          ),
-          _react2.default.createElement(_search2.default, { className: 'toolbar-right',
-            value: this.state.search,
-            onChange: this.search,
-            placeholder: gettext("Search history...") })
-        ),
-        this.getListBody()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../index":128,"../../reducers/users":134,"../../services/ajax":135,"../../services/page-title":142,"../../services/snackbar":144,"../../services/store":145,"../button":56,"../search":104,"../users-list/root":113,"react":"react"}],91:[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 _followers = require('./followers');
-
-var _followers2 = _interopRequireDefault(_followers);
-
-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 (_Followers) {
-  _inherits(_class, _Followers);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'setSpecialProps',
-    value: function setSpecialProps() {
-      this.PRELOADED_DATA_KEY = 'PROFILE_FOLLOWS';
-      this.TITLE = gettext('Follows');
-      this.API_FILTER = 'follows';
-    }
-  }, {
-    key: 'getLabel',
-    value: function getLabel() {
-      if (!this.state.isLoaded) {
-        return gettext('Loading...');
-      } else if (this.state.search) {
-        var message = ngettext("Found %(users)s user.", "Found %(users)s users.", this.state.count);
-
-        return interpolate(message, {
-          'users': this.state.count
-        }, true);
-      } else if (this.props.profile.id === this.props.user.id) {
-        var message = ngettext("You are following %(users)s user.", "You are following %(users)s users.", this.state.count);
-
-        return interpolate(message, {
-          'users': this.state.count
-        }, true);
-      } else {
-        var message = ngettext("%(username)s is following %(users)s user.", "%(username)s is following %(users)s users.", this.state.count);
-
-        return interpolate(message, {
-          'username': this.props.profile.username,
-          'users': this.state.count
-        }, true);
-      }
-    }
-  }, {
-    key: 'getEmptyMessage',
-    value: function getEmptyMessage() {
-      if (this.state.search) {
-        return gettext("Search returned no users matching specified criteria.");
-      } else if (this.props.user.id === this.props.profile.id) {
-        return gettext("You are not following any users.");
-      } else {
-        return interpolate(gettext("%(username)s is not following any users."), {
-          'username': this.props.profile.username
-        }, true);
-      }
-    }
-  }]);
-
-  return _class;
-}(_followers2.default);
-
-exports.default = _class;
-
-},{"./followers":90,"react":"react"}],92:[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 _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 _modalLoader = require('../../modal-loader');
-
-var _modalLoader2 = _interopRequireDefault(_modalLoader);
-
-var _yesNoSwitch = require('../../yes-no-switch');
-
-var _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);
-
-var _modalMessage = require('../../modal-message');
-
-var _modalMessage2 = _interopRequireDefault(_modalMessage);
-
-var _users = require('../../../reducers/users');
-
-var _ajax = require('../../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-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
-// jshint ignore:line
-// 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 = {
-      isLoaded: false,
-      isLoading: false,
-      error: null,
-
-      is_avatar_locked: '',
-      avatar_lock_user_message: '',
-      avatar_lock_staff_message: ''
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      var _this2 = this;
-
-      _ajax2.default.get(this.props.profile.api_url.moderate_avatar).then(function (options) {
-        _this2.setState({
-          isLoaded: true,
-
-          is_avatar_locked: options.is_avatar_locked,
-          avatar_lock_user_message: options.avatar_lock_user_message,
-          avatar_lock_staff_message: options.avatar_lock_staff_message
-        });
-      }, function (rejection) {
-        _this2.setState({
-          isLoaded: true,
-          error: rejection.detail
-        });
-      });
-    }
-  }, {
-    key: 'clean',
-    value: function clean() {
-      if (this.isValid()) {
-        return true;
-      } else {
-        _snackbar2.default.error(this.validate().username[0]);
-        return false;
-      }
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(this.props.profile.api_url.moderate_avatar, {
-        is_avatar_locked: this.state.is_avatar_locked,
-        avatar_lock_user_message: this.state.avatar_lock_user_message,
-        avatar_lock_staff_message: this.state.avatar_lock_staff_message
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(apiResponse) {
-      _store2.default.dispatch((0, _users.updateAvatar)(this.props.profile, apiResponse.avatar_hash));
-      _snackbar2.default.success(gettext("Avatar controls have been changed."));
-    }
-  }, {
-    key: 'getFormBody',
-    value: function getFormBody() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'form',
-        { onSubmit: this.handleSubmit },
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-body' },
-          _react2.default.createElement(
-            _formGroup2.default,
-            { label: gettext("Lock avatar"),
-              helpText: gettext("Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one."),
-              'for': 'id_is_avatar_locked' },
-            _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_is_avatar_locked',
-              disabled: this.state.isLoading,
-              iconOn: 'lock_outline',
-              iconOff: 'lock_open',
-              labelOn: gettext("Disallow user from changing avatar"),
-              labelOff: gettext("Allow user to change avatar"),
-              onChange: this.bindInput('is_avatar_locked'),
-              value: this.state.is_avatar_locked })
-          ),
-          _react2.default.createElement(
-            _formGroup2.default,
-            { label: gettext("User message"),
-              helpText: gettext("Optional message for user explaining why he/she is prohibited form changing avatar."),
-              'for': 'id_avatar_lock_user_message' },
-            _react2.default.createElement('textarea', { id: 'id_avatar_lock_user_message',
-              className: 'form-control',
-              rows: '4',
-              disabled: this.state.isLoading,
-              onChange: this.bindInput('avatar_lock_user_message'),
-              value: this.state.avatar_lock_user_message })
-          ),
-          _react2.default.createElement(
-            _formGroup2.default,
-            { label: gettext("Staff message"),
-              helpText: gettext("Optional message for forum team members explaining why user is prohibited form changing avatar."),
-              'for': 'id_avatar_lock_staff_message' },
-            _react2.default.createElement('textarea', { id: 'id_avatar_lock_staff_message',
-              className: 'form-control',
-              rows: '4',
-              disabled: this.state.isLoading,
-              onChange: this.bindInput('avatar_lock_staff_message'),
-              value: this.state.avatar_lock_staff_message })
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-footer' },
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn btn-default', 'data-dismiss': 'modal' },
-            gettext("Close")
-          ),
-          _react2.default.createElement(
-            _button2.default,
-            { className: 'btn-primary', loading: this.state.isLoading },
-            gettext("Save changes")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getModalBody',
-    value: function getModalBody() {
-      if (this.state.error) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',
-          message: this.state.error });
-        /* jshint ignore:end */
-      } else if (this.state.isLoaded) {
-          return this.getFormBody();
-        } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_modalLoader2.default, null);
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.state.error) {
-        return "modal-dialog modal-message modal-avatar-controls";
-      } else {
-        return "modal-dialog modal-avatar-controls";
-      }
-    }
-  }, {
-    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("Avatar controls")
-            )
-          ),
-          this.getModalBody()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_form2.default);
-
-exports.default = _class;
-
-},{"../../../reducers/users":134,"../../../services/ajax":135,"../../../services/snackbar":144,"../../../services/store":145,"../../button":56,"../../form":69,"../../form-group":68,"../../modal-loader":72,"../../modal-message":73,"../../yes-no-switch":127,"react":"react"}],93:[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 _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 _modalLoader = require('../../modal-loader');
-
-var _modalLoader2 = _interopRequireDefault(_modalLoader);
-
-var _modalMessage = require('../../modal-message');
-
-var _modalMessage2 = _interopRequireDefault(_modalMessage);
-
-var _index = require('../../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _usernameHistory = require('../../../reducers/username-history');
-
-var _users = require('../../../reducers/users');
-
-var _ajax = require('../../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _store = require('../../../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-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
-// jshint ignore:line
-// 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 = {
-      isLoaded: false,
-      isLoading: false,
-      error: null,
-
-      username: '',
-      validators: {
-        username: [validators.usernameContent(), validators.usernameMinLength(_index2.default.get('SETTINGS')), validators.usernameMaxLength(_index2.default.get('SETTINGS'))]
-      }
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      var _this2 = this;
-
-      _ajax2.default.get(this.props.profile.api_url.moderate_username).then(function () {
-        _this2.setState({
-          isLoaded: true
-        });
-      }, function (rejection) {
-        _this2.setState({
-          isLoaded: true,
-          error: rejection.detail
-        });
-      });
-    }
-  }, {
-    key: 'clean',
-    value: function clean() {
-      if (this.isValid()) {
-        return true;
-      } else {
-        _snackbar2.default.error(this.validate().username[0]);
-        return false;
-      }
-    }
-  }, {
-    key: 'send',
-    value: function send() {
-      return _ajax2.default.post(this.props.profile.api_url.moderate_username, {
-        username: this.state.username
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess(apiResponse) {
-      this.setState({
-        username: ''
-      });
-
-      _store2.default.dispatch((0, _usernameHistory.addNameChange)(apiResponse, this.props.profile, this.props.user));
-      _store2.default.dispatch((0, _users.updateUsername)(this.props.profile, apiResponse.username, apiResponse.slug));
-
-      _snackbar2.default.success(gettext("Username has been changed."));
-    }
-  }, {
-    key: 'getFormBody',
-    value: function getFormBody() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'form',
-        { onSubmit: this.handleSubmit },
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-body' },
-          _react2.default.createElement(
-            _formGroup2.default,
-            { label: gettext("New username"), 'for': 'id_username' },
-            _react2.default.createElement('input', { type: 'text', id: 'id_username', className: 'form-control',
-              disabled: this.state.isLoading,
-              onChange: this.bindInput('username'),
-              value: this.state.username })
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-footer' },
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn btn-default', 'data-dismiss': 'modal' },
-            gettext("Close")
-          ),
-          _react2.default.createElement(
-            _button2.default,
-            { className: 'btn-primary', loading: this.state.isLoading },
-            gettext("Change username")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getModalBody',
-    value: function getModalBody() {
-      if (this.state.error) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',
-          message: this.state.error });
-        /* jshint ignore:end */
-      } else if (this.state.isLoaded) {
-          return this.getFormBody();
-        } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_modalLoader2.default, null);
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.state.error) {
-        return "modal-dialog modal-message modal-rename-user";
-      } else {
-        return "modal-dialog modal-rename-user";
-      }
-    }
-  }, {
-    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 username")
-            )
-          ),
-          this.getModalBody()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_form2.default);
-
-exports.default = _class;
-
-},{"../../../index":128,"../../../reducers/username-history":133,"../../../reducers/users":134,"../../../services/ajax":135,"../../../services/snackbar":144,"../../../services/store":145,"../../../utils/validators":155,"../../button":56,"../../form":69,"../../form-group":68,"../../modal-loader":72,"../../modal-message":73,"react":"react"}],94:[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 _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 _modalLoader = require('../../modal-loader');
-
-var _modalLoader2 = _interopRequireDefault(_modalLoader);
-
-var _modalMessage = require('../../modal-message');
-
-var _modalMessage2 = _interopRequireDefault(_modalMessage);
-
-var _yesNoSwitch = require('../../yes-no-switch');
-
-var _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);
-
-var _index = require('../../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _ajax = require('../../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _polls = require('../../../services/polls');
-
-var _polls2 = _interopRequireDefault(_polls);
-
-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
-// 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.countdown = function () {
-      window.setTimeout(function () {
-        if (_this.state.countdown > 1) {
-          _this.setState({
-            countdown: _this.state.countdown - 1
-          });
-          _this.countdown();
-        } else if (!_this.state.confirm) {
-          _this.setState({
-            confirm: true
-          });
-        }
-      }, 1000);
-    };
-
-    _this.state = {
-      isLoaded: false,
-      isLoading: false,
-      isDeleted: false,
-      error: null,
-
-      countdown: 5,
-      confirm: false,
-
-      with_content: false
-    };
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      var _this2 = this;
-
-      _ajax2.default.get(this.props.profile.api_url.delete).then(function () {
-        _this2.setState({
-          isLoaded: true
-        });
-
-        _this2.countdown();
-      }, function (rejection) {
-        _this2.setState({
-          isLoaded: true,
-          error: rejection.detail
-        });
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'send',
-
-    /* jshint ignore:end */
-
-    value: function send() {
-      return _ajax2.default.post(this.props.profile.api_url.delete, {
-        with_content: this.state.with_content
-      });
-    }
-  }, {
-    key: 'handleSuccess',
-    value: function handleSuccess() {
-      _polls2.default.stop('user-profile');
-
-      if (this.state.with_content) {
-        this.setState({
-          isDeleted: interpolate(gettext("%(username)s's account, threads, posts and other content has been deleted."), {
-            'username': this.props.profile.username
-          }, true)
-        });
-      } else {
-        this.setState({
-          isDeleted: interpolate(gettext("%(username)s's account has been deleted and other content has been hidden."), {
-            'username': this.props.profile.username
-          }, true)
-        });
-      }
-    }
-  }, {
-    key: 'getButtonLabel',
-    value: function getButtonLabel() {
-      if (this.state.confirm) {
-        return interpolate(gettext("Delete %(username)s"), {
-          'username': this.props.profile.username
-        }, true);
-      } else {
-        return interpolate(gettext("Please wait... (%(countdown)ss)"), {
-          'countdown': this.state.countdown
-        }, true);
-      }
-    }
-  }, {
-    key: 'getForm',
-    value: function getForm() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'form',
-        { onSubmit: this.handleSubmit, className: 'form-horizontal' },
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-body' },
-          _react2.default.createElement(
-            _formGroup2.default,
-            { label: gettext("User content"),
-              labelClass: 'col-sm-4', controlClass: 'col-sm-8',
-              'for': 'id_with_content' },
-            _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_with_content',
-              disabled: this.state.isLoading,
-              labelOn: gettext("Delete together with user's account"),
-              labelOff: gettext("Hide after deleting user's account"),
-              onChange: this.bindInput('with_content'),
-              value: this.state.with_content })
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'modal-footer' },
-          _react2.default.createElement(
-            'button',
-            { type: 'button',
-              className: 'btn btn-default',
-              'data-dismiss': 'modal' },
-            gettext("Cancel")
-          ),
-          _react2.default.createElement(
-            _button2.default,
-            { className: 'btn-danger',
-              loading: this.state.isLoading,
-              disabled: !this.state.confirm },
-            this.getButtonLabel()
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getDeletedBody',
-    value: function getDeletedBody() {
-      /* 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' },
-            'info_outline'
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'message-body' },
-          _react2.default.createElement(
-            'p',
-            { className: 'lead' },
-            this.state.isDeleted
-          ),
-          _react2.default.createElement(
-            'p',
-            null,
-            _react2.default.createElement(
-              'a',
-              { href: _index2.default.get('USERS_LIST_URL') },
-              gettext("Return to users list")
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getModalBody',
-    value: function getModalBody() {
-      if (this.state.error) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',
-          message: this.state.error });
-        /* jshint ignore:end */
-      } else if (this.state.isLoaded) {
-          if (this.state.isDeleted) {
-            return this.getDeletedBody();
-          } else {
-            return this.getForm();
-          }
-        } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_modalLoader2.default, null);
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.state.error || this.state.isDeleted) {
-        return "modal-dialog modal-message modal-delete-account";
-      } else {
-        return "modal-dialog modal-delete-account";
-      }
-    }
-  }, {
-    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("Delete user account")
-            )
-          ),
-          this.getModalBody()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_form2.default);
-
-exports.default = _class;
-
-},{"../../../index":128,"../../../services/ajax":135,"../../../services/polls":143,"../../button":56,"../../form":69,"../../form-group":68,"../../modal-loader":72,"../../modal-message":73,"../../yes-no-switch":127,"react":"react"}],95:[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 _reactRedux = require('react-redux');
-
-var _avatarControls = require('./avatar-controls');
-
-var _avatarControls2 = _interopRequireDefault(_avatarControls);
-
-var _changeUsername = require('./change-username');
-
-var _changeUsername2 = _interopRequireDefault(_changeUsername);
-
-var _deleteAccount = require('./delete-account');
-
-var _deleteAccount2 = _interopRequireDefault(_deleteAccount);
-
-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
-// jshint ignore:line
-
-// jshint ignore:line
-
-/* jshint ignore:start */
-var select = function select(store) {
-  return {
-    tick: store.tick,
-    user: store.auth,
-    profile: store.profile
-  };
-};
-/* jshint ignore:end */
-
-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.showAvatarDialog = function () {
-      _modal2.default.show((0, _reactRedux.connect)(select)(_avatarControls2.default));
-    }, _this.showRenameDialog = function () {
-      _modal2.default.show((0, _reactRedux.connect)(select)(_changeUsername2.default));
-    }, _this.showDeleteDialog = function () {
-      _modal2.default.show((0, _reactRedux.connect)(select)(_deleteAccount2.default));
-    }, _temp), _possibleConstructorReturn(_this, _ret);
-  }
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'getAvatarButton',
-
-    /* jshint ignore:end */
-
-    value: function getAvatarButton() {
-      if (this.props.profile.acl.can_moderate_avatar) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'li',
-          null,
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn-link',
-              onClick: this.showAvatarDialog },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'portrait'
-            ),
-            gettext("Avatar controls")
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getRenameButton',
-
-    /* jshint ignore:end */
-
-    value: function getRenameButton() {
-      if (this.props.profile.acl.can_rename) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'li',
-          null,
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn-link',
-              onClick: this.showRenameDialog },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'credit_card'
-            ),
-            gettext("Change username")
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getDeleteButton',
-
-    /* jshint ignore:end */
-
-    value: function getDeleteButton() {
-      if (this.props.profile.acl.can_delete) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'li',
-          null,
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn-link',
-              onClick: this.showDeleteDialog },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'clear'
-            ),
-            gettext("Delete account")
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'ul',
-        { className: 'dropdown-menu dropdown-menu-right', role: 'menu' },
-        this.getAvatarButton(),
-        this.getRenameButton(),
-        this.getDeleteButton(),
-        _react2.default.createElement('li', { className: 'divider hidden-md hidden-lg' }),
-        _react2.default.createElement(
-          'li',
-          { className: 'dropdown-buttons hidden-md hidden-lg' },
-          _react2.default.createElement(
-            'button',
-            { type: 'button', className: 'btn btn-default btn-block',
-              onClick: this.props.toggleNav },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              'menu'
-            ),
-            gettext("Menu")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../../services/modal":141,"./avatar-controls":92,"./change-username":93,"./delete-account":94,"react":"react","react-redux":"react-redux"}],96:[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.CompactNav = exports.SideNav = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactRouter = require('react-router');
-
-var _li = require('../li');
-
-var _li2 = _interopRequireDefault(_li);
-
-var _followButton = require('./follow-button');
-
-var _followButton2 = _interopRequireDefault(_followButton);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-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 SideNav = exports.SideNav = function (_React$Component) {
-  _inherits(SideNav, _React$Component);
-
-  function SideNav() {
-    _classCallCheck(this, SideNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(SideNav).apply(this, arguments));
-  }
-
-  _createClass(SideNav, [{
-    key: 'getMeta',
-    value: function getMeta(meta) {
-      if (meta) {
-        // jshint ignore:start
-        return _react2.default.createElement(
-          'span',
-          { className: 'badge' },
-          this.props.profile[meta.attr]
-        );
-        // jshint ignore:end
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      var _this2 = this;
-
-      // jshint ignore:start
-      return _react2.default.createElement(
-        'div',
-        { className: 'list-group nav-side' },
-        this.props.pages.map(function (page) {
-          return _react2.default.createElement(
-            _reactRouter.Link,
-            { to: _this2.props.baseUrl + page.component + '/',
-              className: 'list-group-item',
-              activeClassName: 'active',
-              key: page.component },
-            _react2.default.createElement(
-              'span',
-              { className: 'material-icon' },
-              page.icon
-            ),
-            page.name,
-            _this2.getMeta(page.meta)
-          );
-        })
-      );
-      // jshint ignore:end
-    }
-  }]);
-
-  return SideNav;
-}(_react2.default.Component);
-
-var CompactNav = exports.CompactNav = function (_SideNav) {
-  _inherits(CompactNav, _SideNav);
-
-  function CompactNav() {
-    _classCallCheck(this, CompactNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));
-  }
-
-  _createClass(CompactNav, [{
-    key: 'showSpecialOptions',
-    value: function showSpecialOptions() {
-      return this.props.profile.acl.can_follow || this.props.profile.acl.can_moderate;
-    }
-  }, {
-    key: 'getFollowButton',
-    value: function getFollowButton() {
-      if (this.props.profile.acl.can_follow) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(_followButton2.default, { className: 'btn btn-block',
-          profile: this.props.profile });
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getModerationButton',
-    value: function getModerationButton() {
-      if (this.props.profile.acl.can_moderate) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'button',
-          { type: 'button', className: 'btn btn-default btn-block',
-            onClick: this.props.toggleModeration },
-          _react2.default.createElement(
-            'span',
-            { className: 'material-icon' },
-            'tonality'
-          ),
-          gettext("Moderation")
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getSpecialOptions',
-    value: function getSpecialOptions() {
-      if (this.showSpecialOptions()) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'li',
-          { className: 'dropdown-buttons' },
-          this.getFollowButton(),
-          this.getModerationButton()
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      var _this4 = this;
-
-      // jshint ignore:start
-      return _react2.default.createElement(
-        'ul',
-        { className: 'dropdown-menu', role: 'menu' },
-        this.getSpecialOptions(),
-        this.showSpecialOptions() ? _react2.default.createElement('li', { className: 'divider' }) : null,
-        this.props.pages.map(function (page) {
-          return _react2.default.createElement(
-            _li2.default,
-            { path: _this4.props.baseUrl + page.component + '/',
-              key: page.component },
-            _react2.default.createElement(
-              _reactRouter.Link,
-              { to: _this4.props.baseUrl + page.component + '/',
-                onClick: _this4.props.hideNav },
-              _react2.default.createElement(
-                'span',
-                { className: 'material-icon' },
-                page.icon
-              ),
-              page.name,
-              _this4.getMeta(page.meta)
-            )
-          );
-        })
-      );
-      // jshint ignore:end
-    }
-  }]);
-
-  return CompactNav;
-}(SideNav);
-
-},{"../../index":128,"../li":70,"./follow-button":89,"react":"react","react-router":"react-router"}],97:[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;
-exports.paths = paths;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactRedux = require('react-redux');
-
-var _avatar = require('../avatar');
-
-var _avatar2 = _interopRequireDefault(_avatar);
-
-var _banDetails = require('./ban-details');
-
-var _banDetails2 = _interopRequireDefault(_banDetails);
-
-var _followers = require('./followers');
-
-var _followers2 = _interopRequireDefault(_followers);
-
-var _follows = require('./follows');
-
-var _follows2 = _interopRequireDefault(_follows);
-
-var _usernameHistory = require('./username-history');
-
-var _usernameHistory2 = _interopRequireDefault(_usernameHistory);
-
-var _Header = require('./Header');
-
-var _Header2 = _interopRequireDefault(_Header);
-
-var _nav = require('./moderation/nav');
-
-var _nav2 = _interopRequireDefault(_nav);
-
-var _navs = require('./navs');
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _profile = require('../../reducers/profile');
-
-var _polls = require('../../services/polls');
-
-var _polls2 = _interopRequireDefault(_polls);
-
-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
-// 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.update = function (data) {
-      _store2.default.dispatch((0, _profile.dehydrate)(data));
-    };
-
-    _this.toggleNav = function () {
-      if (_this.state.dropdown === 'pages') {
-        _this.setState({
-          dropdown: false
-        });
-      } else {
-        _this.setState({
-          dropdown: 'pages'
-        });
-      }
-    };
-
-    _this.toggleModeration = function () {
-      if (_this.state.dropdown === 'moderation') {
-        _this.setState({
-          dropdown: false
-        });
-      } else {
-        _this.setState({
-          dropdown: 'moderation'
-        });
-      }
-    };
-
-    _this.hideNav = function () {
-      _this.setState({
-        dropdown: false
-      });
-    };
-
-    _this.state = {
-      dropdown: false
-    };
-
-    _this.startPolling(props.profile.api_url.root);
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'startPolling',
-    value: function startPolling(api) {
-      _polls2.default.start({
-        poll: 'user-profile',
-        url: api,
-        frequency: 90 * 1000,
-        update: this.update
-      });
-    }
-
-    /* jshint ignore:start */
-
-    /* jshint ignore:end */
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getToggleNavClassName',
-
-    /* jshint ignore:end */
-
-    value: function getToggleNavClassName() {
-      if (this.state.dropdown) {
-        return 'btn btn-default btn-icon open';
-      } else {
-        return 'btn btn-default btn-icon';
-      }
-    }
-  }, {
-    key: 'getCompactNavClassName',
-    value: function getCompactNavClassName() {
-      if (this.state.dropdown) {
-        return 'compact-nav open';
-      } else {
-        return 'compact-nav';
-      }
-    }
-  }, {
-    key: 'getNavDropdown',
-    value: function getNavDropdown() {
-      if (this.state.dropdown === 'pages') {
-        /* jshint ignore:start */
-        return _react2.default.createElement(_navs.CompactNav, { pages: _index2.default.get('PROFILE_PAGES'),
-          baseUrl: _index2.default.get('PROFILE').absolute_url,
-          profile: this.props.profile,
-          toggleModeration: this.toggleModeration,
-          hideNav: this.hideNav });
-        /* jshint ignore:end */
-      } else if (this.state.dropdown === 'moderation') {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_nav2.default, { profile: this.props.profile,
-            toggleNav: this.toggleNav,
-            hideNav: this.hideNav });
-          /* jshint ignore:end */
-        } else {
-            return null;
-          }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      var baseClass = 'page page-user-profile';
-      if (false && this.props.profile.rank.css_class) {
-        return baseClass + ' page-user-profile-' + this.props.profile.rank.css_class;
-      } else {
-        return baseClass;
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: this.getClassName() },
-        _react2.default.createElement(_Header2.default, { user: this.props.user,
-          profile: this.props.profile,
-          toggleNav: this.toggleNav,
-          toggleModeration: this.toggleModeration }),
-        _react2.default.createElement(
-          'div',
-          { className: this.getCompactNavClassName() },
-          this.getNavDropdown()
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'div',
-            { className: 'row' },
-            _react2.default.createElement(
-              'div',
-              { className: 'col-md-3 hidden-xs hidden-sm' },
-              _react2.default.createElement(
-                'div',
-                { className: 'profile-side-avatar' },
-                _react2.default.createElement(_avatar2.default, { user: this.props.profile, size: '400' })
-              ),
-              _react2.default.createElement(_navs.SideNav, { pages: _index2.default.get('PROFILE_PAGES'),
-                baseUrl: _index2.default.get('PROFILE').absolute_url,
-                profile: this.props.profile })
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'col-md-9' },
-              this.props.children
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-function select(store) {
-  return {
-    'tick': store.tick.tick,
-    'user': store.auth.user,
-    'users': store.users,
-    'profile': store.profile,
-    'username-history': store['username-history']
-  };
-}
-
-var Placeholder = function (_React$Component2) {
-  _inherits(Placeholder, _React$Component2);
-
-  function Placeholder() {
-    _classCallCheck(this, Placeholder);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(Placeholder).apply(this, arguments));
-  }
-
-  _createClass(Placeholder, [{
-    key: 'render',
-    value: function render() {
-      // jshint ignore:start
-      return _react2.default.createElement(
-        'div',
-        { className: 'container' },
-        _react2.default.createElement(
-          'p',
-          null,
-          "Hello, I'm placeholder for " + this.props.route.name
-        )
-      );
-      // jshint ignore:end
-    }
-  }]);
-
-  return Placeholder;
-}(_react2.default.Component);
-
-var COMPONENTS = {
-  'posts': Placeholder,
-  'threads': Placeholder,
-  'followers': _followers2.default,
-  'follows': _follows2.default,
-  'username-history': _usernameHistory2.default,
-  'ban-details': _banDetails2.default
-};
-
-function paths() {
-  var paths = [];
-
-  _index2.default.get('PROFILE_PAGES').forEach(function (item) {
-    paths.push(Object.assign({}, item, {
-      path: _index2.default.get('PROFILE').absolute_url + item.component + '/',
-      component: (0, _reactRedux.connect)(select)(COMPONENTS[item.component])
-    }));
-  });
-
-  return paths;
-}
-
-},{"../../index":128,"../../reducers/profile":130,"../../services/polls":143,"../../services/store":145,"../avatar":54,"./Header":87,"./ban-details":88,"./followers":90,"./follows":91,"./moderation/nav":95,"./navs":96,"./username-history":98,"react":"react","react-redux":"react-redux"}],98:[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 _button = require('../button');
-
-var _button2 = _interopRequireDefault(_button);
-
-var _search = require('../search');
-
-var _search2 = _interopRequireDefault(_search);
-
-var _usernameHistory = require('../username-history');
-
-var _usernameHistory2 = _interopRequireDefault(_usernameHistory);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _usernameHistory3 = require('../../reducers/username-history');
-
-var _ajax = require('../../services/ajax');
-
-var _ajax2 = _interopRequireDefault(_ajax);
-
-var _snackbar = require('../../services/snackbar');
-
-var _snackbar2 = _interopRequireDefault(_snackbar);
-
-var _store = require('../../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-var _pageTitle = require('../../services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-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 _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.loadMore = function () {
-      _this.setState({
-        isBusy: true
-      });
-
-      _this.loadChanges(_this.state.page + 1, _this.state.search);
-    };
-
-    _this.search = function (ev) {
-      _this.setState({
-        isLoaded: false,
-        isBusy: true,
-
-        search: ev.target.value,
-
-        count: 0,
-        more: 0,
-
-        page: 1,
-        pages: 1
-      });
-
-      _this.loadChanges(1, ev.target.value);
-    };
-
-    if (_index2.default.has('PROFILE_NAME_HISTORY')) {
-      _this.initWithPreloadedData(_index2.default.pop('PROFILE_NAME_HISTORY'));
-    } else {
-      _this.initWithoutPreloadedData();
-    }
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'initWithPreloadedData',
-    value: function initWithPreloadedData(data) {
-      this.state = {
-        isLoaded: true,
-        isBusy: false,
-
-        search: '',
-
-        count: data.count,
-        more: data.more,
-
-        page: data.page,
-        pages: data.pages
-      };
-
-      _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data.results));
-    }
-  }, {
-    key: 'initWithoutPreloadedData',
-    value: function initWithoutPreloadedData() {
-      this.state = {
-        isLoaded: false,
-        isBusy: false,
-
-        search: '',
-
-        count: 0,
-        more: 0,
-
-        page: 1,
-        pages: 1
-      };
-
-      this.loadChanges();
-    }
-  }, {
-    key: 'loadChanges',
-    value: function loadChanges() {
-      var _this2 = this;
-
-      var page = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0];
-      var search = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
-      _ajax2.default.get(_index2.default.get('USERNAME_CHANGES_API'), {
-        user: this.props.profile.id,
-        search: search,
-        page: page || 1
-      }, 'search-username-history').then(function (data) {
-        if (page === 1) {
-          _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data.results));
-        } else {
-          _store2.default.dispatch((0, _usernameHistory3.append)(data.results));
-        }
-
-        _this2.setState({
-          isLoaded: true,
-          isBusy: false,
-
-          count: data.count,
-          more: data.more,
-
-          page: data.page,
-          pages: data.pages
-        });
-      }, function (rejection) {
-        _snackbar2.default.apiError(rejection);
-      });
-    }
-  }, {
-    key: 'componentDidMount',
-    value: function componentDidMount() {
-      _pageTitle2.default.set({
-        title: gettext("Username history"),
-        parent: this.props.profile.username
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'getLabel',
-
-    /* jshint ignore:end */
-
-    value: function getLabel() {
-      if (!this.state.isLoaded) {
-        return gettext('Loading...');
-      } else if (this.state.search) {
-        var message = ngettext("Found %(changes)s username change.", "Found %(changes)s username changes.", this.state.count);
-
-        return interpolate(message, {
-          'changes': this.state.count
-        }, true);
-      } else if (this.props.profile.id === this.props.user.id) {
-        var message = ngettext("Your username was changed %(changes)s time.", "Your username was changed %(changes)s times.", this.state.count);
-
-        return interpolate(message, {
-          'changes': this.state.count
-        }, true);
-      } else {
-        var message = ngettext("%(username)s's username was changed %(changes)s time.", "%(username)s's username was changed %(changes)s times.", this.state.count);
-
-        return interpolate(message, {
-          'username': this.props.profile.username,
-          'changes': this.state.count
-        }, true);
-      }
-    }
-  }, {
-    key: 'getEmptyMessage',
-    value: function getEmptyMessage() {
-      if (this.state.search) {
-        return gettext("Search returned no username changes matching specified criteria.");
-      } else if (this.props.user.id === this.props.profile.id) {
-        return gettext("No name changes have been recorded for your account.");
-      } else {
-        return interpolate(gettext("%(username)s's username was never changed."), {
-          'username': this.props.profile.username
-        }, true);
-      }
-    }
-  }, {
-    key: 'getMoreButton',
-    value: function getMoreButton() {
-      if (this.state.more) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'pager-more' },
-          _react2.default.createElement(
-            _button2.default,
-            { loading: this.state.isBusy,
-              onClick: this.loadMore },
-            interpolate(gettext("Show older (%(more)s)"), {
-              'more': this.state.more
-            }, true)
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'profile-username-history' },
-        _react2.default.createElement(
-          'nav',
-          { className: 'toolbar' },
-          _react2.default.createElement(
-            'h3',
-            { className: 'toolbar-left' },
-            this.getLabel()
-          ),
-          _react2.default.createElement(_search2.default, { className: 'toolbar-right',
-            value: this.state.search,
-            onChange: this.search,
-            placeholder: gettext("Search history...") })
-        ),
-        _react2.default.createElement(_usernameHistory2.default, { isLoaded: this.state.isLoaded,
-          emptyMessage: this.getEmptyMessage(),
-          changes: this.props['username-history'] }),
-        this.getMoreButton()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../index":128,"../../reducers/username-history":133,"../../services/ajax":135,"../../services/page-title":142,"../../services/snackbar":144,"../../services/store":145,"../button":56,"../search":104,"../username-history":112,"react":"react"}],99:[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":137,"../services/modal":141,"../services/snackbar":144,"../services/zxcvbn":146,"./loader":71,"./register.js":100,"react":"react"}],100:[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":128,"../services/ajax":135,"../services/auth":136,"../services/captcha":137,"../services/modal":141,"../services/snackbar":144,"../utils/banned-page":147,"../utils/validators":155,"./button":56,"./form":69,"./form-group":68,"./password-strength":86,"react":"react"}],101:[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":128,"../services/ajax":135,"../services/snackbar":144,"../utils/banned-page":147,"../utils/validators":155,"./button":56,"./form":69,"react":"react"}],102:[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":128,"../services/ajax":135,"../services/snackbar":144,"../utils/banned-page":147,"../utils/validators":155,"./button":56,"./form":69,"react":"react","react-dom":"react-dom"}],103:[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":128,"../services/ajax":135,"../services/auth":136,"../services/modal":141,"../services/snackbar":144,"../utils/banned-page":147,"../utils/validators":155,"./button":56,"./form":69,"./sign-in.js":106,"react":"react","react-dom":"react-dom"}],104:[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: "getClassName",
-    value: function getClassName() {
-      if (this.props.className) {
-        return "form-search " + this.props.className;
-      } else {
-        return "form-search";
-      }
-    }
-  }, {
-    key: "render",
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        "div",
-        { className: this.getClassName() },
-        _react2.default.createElement("input", { type: "text",
-          className: "form-control",
-          value: this.props.value,
-          onChange: this.props.onChange,
-          placeholder: this.props.placeholder || gettext("Search...") }),
-        _react2.default.createElement(
-          "span",
-          { className: "material-icon" },
-          "search"
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],105:[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() {
-    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.change = function (value) {
-      return function () {
-        _this.props.onChange({
-          target: {
-            value: value
-          }
-        });
-      };
-    }, _temp), _possibleConstructorReturn(_this, _ret);
-  }
-
-  _createClass(_class, [{
-    key: "getChoice",
-    value: function getChoice() {
-      var _this2 = this;
-
-      var choice = null;
-      this.props.choices.map(function (item) {
-        if (item.value === _this2.props.value) {
-          choice = item;
-        }
-      });
-      return choice;
-    }
-  }, {
-    key: "getIcon",
-    value: function getIcon() {
-      return this.getChoice().icon;
-    }
-  }, {
-    key: "getLabel",
-    value: function getLabel() {
-      return this.getChoice().label;
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: "render",
-
-    /* jshint ignore:end */
-
-    value: function render() {
-      var _this3 = this;
-
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        "div",
-        { className: "btn-group btn-select-group" },
-        _react2.default.createElement(
-          "button",
-          { type: "button",
-            className: "btn btn-select dropdown-toggle",
-            id: this.props.id || null,
-            "data-toggle": "dropdown",
-            "aria-haspopup": "true",
-            "aria-expanded": "false",
-            "aria-describedby": this.props['aria-describedby'] || null,
-            disabled: this.props.disabled || false },
-          _react2.default.createElement(
-            "span",
-            { className: "material-icon" },
-            this.getIcon()
-          ),
-          this.getLabel()
-        ),
-        _react2.default.createElement(
-          "ul",
-          { className: "dropdown-menu" },
-          this.props.choices.map(function (item, i) {
-            return _react2.default.createElement(
-              "li",
-              { key: i },
-              _react2.default.createElement(
-                "button",
-                { type: "button", className: "btn-link",
-                  onClick: _this3.change(item.value) },
-                _react2.default.createElement(
-                  "span",
-                  { className: "material-icon" },
-                  item.icon
-                ),
-                item.label
-              )
-            );
-          })
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],106:[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":128,"../services/ajax":135,"../services/modal":141,"../services/snackbar":144,"../utils/banned-page":147,"./button":56,"./form":69,"react":"react"}],107:[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"}],108:[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":140,"../../services/modal":141,"../avatar":54,"../register-button":99,"../sign-in.js":106,"react":"react"}],109:[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":108,"./user-nav":110,"react":"react"}],110:[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' },
-              'portrait'
-            ),
-            gettext("Change avatar")
-          )
-        ),
-        _react2.default.createElement('li', { className: 'divider' }),
-        _react2.default.createElement(
-          'li',
-          { className: 'dropdown-buttons' },
-          _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) {
-  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":128,"../../services/mobile-navbar-dropdown":140,"../../services/modal":141,"../avatar":54,"../change-avatar/root":66,"react":"react","react-redux":"react-redux"}],111:[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.StatusLabel = exports.StatusIcon = undefined;
-
-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: 'getClass',
-    value: function getClass() {
-      var status = '';
-      if (this.props.status.is_banned) {
-        status = 'banned';
-      } else if (this.props.status.is_hidden) {
-        status = 'offline';
-      } else if (this.props.status.is_online_hidden) {
-        status = 'online';
-      } else if (this.props.status.is_offline_hidden) {
-        status = 'offline';
-      } else if (this.props.status.is_online) {
-        status = 'online';
-      } else if (this.props.status.is_offline) {
-        status = 'offline';
-      }
-
-      return 'user-status user-' + status;
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'span',
-        { className: this.getClass() },
-        this.props.children
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-var StatusIcon = exports.StatusIcon = function (_React$Component2) {
-  _inherits(StatusIcon, _React$Component2);
-
-  function StatusIcon() {
-    _classCallCheck(this, StatusIcon);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(StatusIcon).apply(this, arguments));
-  }
-
-  _createClass(StatusIcon, [{
-    key: 'getIcon',
-    value: function getIcon() {
-      if (this.props.status.is_banned) {
-        return 'remove_circle_outline';
-      } else if (this.props.status.is_hidden) {
-        return 'help_outline';
-      } else if (this.props.status.is_online_hidden) {
-        return 'label';
-      } else if (this.props.status.is_offline_hidden) {
-        return 'label_outline';
-      } else if (this.props.status.is_online) {
-        return 'lens';
-      } else if (this.props.status.is_offline) {
-        return 'panorama_fish_eye';
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'span',
-        { className: 'material-icon status-icon' },
-        this.getIcon()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return StatusIcon;
-}(_react2.default.Component);
-
-var StatusLabel = exports.StatusLabel = function (_React$Component3) {
-  _inherits(StatusLabel, _React$Component3);
-
-  function StatusLabel() {
-    _classCallCheck(this, StatusLabel);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(StatusLabel).apply(this, arguments));
-  }
-
-  _createClass(StatusLabel, [{
-    key: 'getHelp',
-    value: function getHelp() {
-      if (this.props.status.is_banned) {
-        if (this.props.status.banned_until) {
-          return interpolate(gettext("%(username)s is banned until %(ban_expires)s"), {
-            username: this.props.user.username,
-            ban_expires: this.props.status.banned_until.format('LL, LT')
-          }, true);
-        } else {
-          return interpolate(gettext("%(username)s is banned"), {
-            username: this.props.user.username
-          }, true);
-        }
-      } else if (this.props.status.is_hidden) {
-        return interpolate(gettext("%(username)s is hiding presence"), {
-          username: this.props.user.username
-        }, true);
-      } else if (this.props.status.is_online_hidden) {
-        return interpolate(gettext("%(username)s is online (hidden)"), {
-          username: this.props.user.username
-        }, true);
-      } else if (this.props.status.is_offline_hidden) {
-        return interpolate(gettext("%(username)s was last seen %(last_click)s (hidden)"), {
-          username: this.props.user.username,
-          last_click: this.props.status.last_click.fromNow()
-        }, true);
-      } else if (this.props.status.is_online) {
-        return interpolate(gettext("%(username)s is online"), {
-          username: this.props.user.username
-        }, true);
-      } else if (this.props.status.is_offline) {
-        return interpolate(gettext("%(username)s was last seen %(last_click)s"), {
-          username: this.props.user.username,
-          last_click: this.props.status.last_click.fromNow()
-        }, true);
-      }
-    }
-  }, {
-    key: 'getLabel',
-    value: function getLabel() {
-      if (this.props.status.is_banned) {
-        return gettext("Banned");
-      } else if (this.props.status.is_hidden) {
-        return gettext("Hidden");
-      } else if (this.props.status.is_online_hidden) {
-        return gettext("Online (hidden)");
-      } else if (this.props.status.is_offline_hidden) {
-        return gettext("Offline (hidden)");
-      } else if (this.props.status.is_online) {
-        return gettext("Online");
-      } else if (this.props.status.is_offline) {
-        return gettext("Offline");
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'span',
-        { className: this.props.className || "status-label",
-          title: this.getHelp() },
-        this.getLabel()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return StatusLabel;
-}(_react2.default.Component);
-
-},{"react":"react"}],112:[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 _random = require('../utils/random');
-
-var random = _interopRequireWildcard(_random);
-
-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 _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: 'renderUserAvatar',
-    value: function renderUserAvatar(item) {
-      if (item.changed_by) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'a',
-          { href: item.changed_by.absolute_url, className: 'user-avatar' },
-          _react2.default.createElement(_avatar2.default, { user: item.changed_by, size: '100' })
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'span',
-            { className: 'user-avatar' },
-            _react2.default.createElement(_avatar2.default, { size: '100' })
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'renderUsername',
-    value: function renderUsername(item) {
-      if (item.changed_by) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'a',
-          { href: item.changed_by.absolute_url, className: 'item-title' },
-          item.changed_by.username
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'span',
-            { className: 'item-title' },
-            item.changed_by_username
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'renderHistory',
-    value: function renderHistory() {
-      var _this2 = this;
-
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'username-history ui-ready' },
-        _react2.default.createElement(
-          'ul',
-          { className: 'list-group' },
-          this.props.changes.map(function (item) {
-            return _react2.default.createElement(
-              'li',
-              { className: 'list-group-item', key: item.id },
-              _react2.default.createElement(
-                'div',
-                { className: 'username-change-avatar' },
-                _this2.renderUserAvatar(item)
-              ),
-              _react2.default.createElement(
-                'div',
-                { className: 'username-change-author' },
-                _this2.renderUsername(item)
-              ),
-              _react2.default.createElement(
-                'div',
-                { className: 'username-change' },
-                item.old_username,
-                _react2.default.createElement(
-                  'span',
-                  { className: 'material-icon' },
-                  'arrow_forward'
-                ),
-                item.new_username
-              ),
-              _react2.default.createElement(
-                'div',
-                { className: 'username-change-date' },
-                _react2.default.createElement(
-                  'abbr',
-                  { title: item.changed_on.format('LLL') },
-                  item.changed_on.fromNow()
-                )
-              )
-            );
-          })
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'getEmptyMessage',
-    value: function getEmptyMessage() {
-      if (this.props.emptyMessage) {
-        return this.props.emptyMessage;
-      } else {
-        return gettext("No name changes have been recorded for your account.");
-      }
-    }
-  }, {
-    key: 'renderEmptyHistory',
-    value: function renderEmptyHistory() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'username-history ui-ready' },
-        _react2.default.createElement(
-          'ul',
-          { className: 'list-group' },
-          _react2.default.createElement(
-            'li',
-            { className: 'list-group-item empty-message' },
-            this.getEmptyMessage()
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'renderHistoryPreview',
-    value: function renderHistoryPreview() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'username-history ui-preview' },
-        _react2.default.createElement(
-          'ul',
-          { className: 'list-group' },
-          random.range(3, 5).map(function (i) {
-            return _react2.default.createElement(
-              'li',
-              { className: 'list-group-item', key: i },
-              _react2.default.createElement(
-                'div',
-                { className: 'username-change-avatar' },
-                _react2.default.createElement(
-                  'span',
-                  { className: 'user-avatar' },
-                  _react2.default.createElement(_avatar2.default, { size: '100' })
-                )
-              ),
-              _react2.default.createElement(
-                'div',
-                { className: 'username-change-author' },
-                _react2.default.createElement(
-                  'span',
-                  { className: 'ui-preview-text', style: { width: random.int(30, 100) + "px" } },
-                  ' '
-                )
-              ),
-              _react2.default.createElement(
-                'div',
-                { className: 'username-change' },
-                _react2.default.createElement(
-                  'span',
-                  { className: 'ui-preview-text', style: { width: random.int(30, 50) + "px" } },
-                  ' '
-                ),
-                _react2.default.createElement(
-                  'span',
-                  { className: 'material-icon' },
-                  'arrow_forward'
-                ),
-                _react2.default.createElement(
-                  'span',
-                  { className: 'ui-preview-text', style: { width: random.int(30, 50) + "px" } },
-                  ' '
-                )
-              ),
-              _react2.default.createElement(
-                'div',
-                { className: 'username-change-date' },
-                _react2.default.createElement(
-                  'span',
-                  { className: 'ui-preview-text', style: { width: random.int(50, 100) + "px" } },
-                  ' '
-                )
-              )
-            );
-          })
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      if (this.props.isLoaded) {
-        if (this.props.changes.length) {
-          return this.renderHistory();
-        } else {
-          return this.renderEmptyHistory();
-        }
-      } else {
-        return this.renderHistoryPreview();
-      }
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../utils/random":152,"./avatar":54,"react":"react"}],113:[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 _userCard = require('./user-card');
-
-var _userCard2 = _interopRequireDefault(_userCard);
-
-var _userPreview = require('./user-preview');
-
-var _userPreview2 = _interopRequireDefault(_userPreview);
-
-var _batch = require('../../utils/batch');
-
-var _batch2 = _interopRequireDefault(_batch);
-
-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() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'getPager',
-    value: function getPager() {
-      if (this.props.pages > 1) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(Pager, this.props);
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.props.className) {
-        return "users-cards-list " + this.props.className + " ui-ready";
-      } else {
-        return "users-cards-list ui-ready";
-      }
-    }
-  }, {
-    key: 'getColClassName',
-    value: function getColClassName() {
-      return "col-md-" + 12 / this.props.cols;
-    }
-  }, {
-    key: 'getBody',
-    value: function getBody() {
-      var _this2 = this;
-
-      if (this.props.isLoaded) {
-        /* jshint ignore:start */
-        return (0, _batch2.default)(this.props.users, this.props.cols).map(function (row, r) {
-          return _react2.default.createElement(
-            'div',
-            { className: 'row', key: r },
-            row.map(function (user) {
-              return _react2.default.createElement(
-                'div',
-                { className: _this2.getColClassName(), key: user.id },
-                _react2.default.createElement(_userCard2.default, { user: user,
-                  showStatus: _this2.props.showStatus,
-                  showRank: _this2.props.showRank })
-              );
-            })
-          );
-        });
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          var row = [];
-          for (var i = 0; i < this.props.cols; i++) {
-            row.push(i);
-          }
-
-          return _react2.default.createElement(
-            'div',
-            { className: 'row' },
-            row.map(function (i) {
-              return _react2.default.createElement(
-                'div',
-                { className: _this2.getColClassName(), key: i },
-                _react2.default.createElement(_userPreview2.default, { showStatus: _this2.props.showStatus })
-              );
-            })
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'users-cards-list ui-ready' },
-        this.getBody()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../utils/batch":148,"./user-card":114,"./user-preview":115,"react":"react"}],114:[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 _userStatus = require('../user-status');
-
-var _userStatus2 = _interopRequireDefault(_userStatus);
-
-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 (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.props.user.rank.css_class) {
-        return 'user-card user-card-' + this.props.user.rank.css_class + ' ui-ready';
-      } else {
-        return 'user-card ui-ready';
-      }
-    }
-  }, {
-    key: 'getUserStatus',
-    value: function getUserStatus() {
-      if (this.props.showStatus) {
-        if (this.props.user.status) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            _userStatus2.default,
-            { user: this.props.user, status: this.props.user.status },
-            _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.user,
-              status: this.props.user.status }),
-            _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.user,
-              status: this.props.user.status,
-              className: 'status-label' })
-          );
-          /* jshint ignore:end */
-        } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(
-              'span',
-              { className: 'user-status' },
-              _react2.default.createElement(
-                'span',
-                { className: 'status-icon ui-preview' },
-                ' '
-              ),
-              _react2.default.createElement(
-                'span',
-                { className: 'status-label ui-preview' },
-                ' '
-              )
-            );
-            /* jshint ignore:end */
-          }
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getRankName',
-    value: function getRankName() {
-      if (this.props.showRank) {
-        if (this.props.user.rank.is_tab) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'a',
-            { href: this.props.user.rank.absolute_url,
-              className: 'item-title rank-name' },
-            this.props.user.rank.name
-          );
-          /* jshint ignore:end */
-        } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(
-              'span',
-              { className: 'item-title rank-name' },
-              this.props.user.rank.name
-            );
-            /* jshint ignore:end */
-          }
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getUserTitle',
-    value: function getUserTitle() {
-      if (this.props.user.title) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'span',
-          { className: 'user-title' },
-          this.props.user.title
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getUserJoinedOn',
-    value: function getUserJoinedOn() {
-      /* jshint ignore:start */
-      var title = interpolate(gettext("Joined on %(joined_on)s"), {
-        'joined_on': this.props.user.joined_on.format('LL, LT')
-      }, true);
-
-      var age = interpolate(gettext("Joined %(joined_on)s"), {
-        'joined_on': this.props.user.joined_on.fromNow()
-      }, true);
-
-      return _react2.default.createElement(
-        'span',
-        { className: 'user-joined-on', title: title },
-        age
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: this.getClassName() },
-        _react2.default.createElement(
-          'div',
-          { className: 'user-card-bg-image' },
-          _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '400', className: 'bg-image' }),
-          _react2.default.createElement(
-            'div',
-            { className: 'user-card-bg' },
-            _react2.default.createElement(
-              'div',
-              { className: 'user-details' },
-              _react2.default.createElement(
-                'div',
-                { className: 'user-avatar' },
-                _react2.default.createElement(
-                  'a',
-                  { href: this.props.user.absolute_url },
-                  _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '400' })
-                )
-              ),
-              _react2.default.createElement(
-                'h4',
-                { className: 'user-name' },
-                _react2.default.createElement(
-                  'a',
-                  { href: this.props.user.absolute_url, className: 'item-title' },
-                  this.props.user.username
-                )
-              ),
-              _react2.default.createElement(
-                'p',
-                { className: 'user-subscript' },
-                this.getUserStatus(),
-                this.getRankName(),
-                this.getUserTitle(),
-                this.getUserJoinedOn()
-              )
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'user-card-stats' },
-              _react2.default.createElement(
-                'ul',
-                { className: 'list-unstyled' },
-                _react2.default.createElement(
-                  'li',
-                  { className: 'user-posts-count' },
-                  _react2.default.createElement(
-                    'strong',
-                    null,
-                    this.props.user.posts
-                  ),
-                  _react2.default.createElement(
-                    'small',
-                    null,
-                    gettext("posts")
-                  )
-                ),
-                _react2.default.createElement(
-                  'li',
-                  { className: 'user-threads-count' },
-                  _react2.default.createElement(
-                    'strong',
-                    null,
-                    this.props.user.threads
-                  ),
-                  _react2.default.createElement(
-                    'small',
-                    null,
-                    gettext("threads")
-                  )
-                ),
-                _react2.default.createElement(
-                  'li',
-                  { className: 'user-followers-count' },
-                  _react2.default.createElement(
-                    'strong',
-                    null,
-                    this.props.user.followers
-                  ),
-                  _react2.default.createElement(
-                    'small',
-                    null,
-                    gettext("followers")
-                  )
-                )
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../avatar":54,"../user-status":111,"react":"react"}],115:[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 _random = require('../../utils/random');
-
-var random = _interopRequireWildcard(_random);
-
-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 _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: 'getUserStatus',
-    value: function getUserStatus() {
-      if (this.props.showStatus) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'span',
-          { className: 'user-status' },
-          _react2.default.createElement(
-            'span',
-            { className: 'status-icon ui-preview' },
-            ' '
-          ),
-          _react2.default.createElement(
-            'span',
-            { className: 'status-label ui-preview' },
-            ' '
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'user-card ui-preview' },
-        _react2.default.createElement(
-          'div',
-          { className: 'user-card-bg-image' },
-          _react2.default.createElement(_avatar2.default, { size: '400', className: 'bg-image' }),
-          _react2.default.createElement(
-            'div',
-            { className: 'user-card-bg' },
-            _react2.default.createElement(
-              'div',
-              { className: 'user-details' },
-              _react2.default.createElement(
-                'div',
-                { className: 'user-avatar' },
-                _react2.default.createElement(_avatar2.default, { size: '400' })
-              ),
-              _react2.default.createElement(
-                'h4',
-                { className: 'user-name' },
-                _react2.default.createElement(
-                  'span',
-                  { className: 'item-title' },
-                  _react2.default.createElement(
-                    'span',
-                    { className: 'ui-preview-text', style: { width: random.int(60, 150) + "px" } },
-                    ' '
-                  )
-                )
-              ),
-              _react2.default.createElement(
-                'p',
-                { className: 'user-subscript' },
-                this.getUserStatus(),
-                _react2.default.createElement(
-                  'span',
-                  { className: 'user-joined-on' },
-                  _react2.default.createElement(
-                    'span',
-                    { className: 'ui-preview-text', style: { width: random.int(30, 50) + "px" } },
-                    ' '
-                  )
-                )
-              )
-            ),
-            _react2.default.createElement(
-              'div',
-              { className: 'user-card-stats' },
-              _react2.default.createElement(
-                'ul',
-                { className: 'list-unstyled' },
-                _react2.default.createElement(
-                  'li',
-                  { className: 'user-posts-count' },
-                  _react2.default.createElement(
-                    'strong',
-                    null,
-                    _react2.default.createElement(
-                      'span',
-                      { className: 'ui-preview-text' },
-                      ' '
-                    )
-                  ),
-                  _react2.default.createElement(
-                    'small',
-                    null,
-                    gettext("posts")
-                  )
-                ),
-                _react2.default.createElement(
-                  'li',
-                  { className: 'user-threads-count' },
-                  _react2.default.createElement(
-                    'strong',
-                    null,
-                    _react2.default.createElement(
-                      'span',
-                      { className: 'ui-preview-text' },
-                      ' '
-                    )
-                  ),
-                  _react2.default.createElement(
-                    'small',
-                    null,
-                    gettext("threads")
-                  )
-                ),
-                _react2.default.createElement(
-                  'li',
-                  { className: 'user-followers-count' },
-                  _react2.default.createElement(
-                    'strong',
-                    null,
-                    _react2.default.createElement(
-                      'span',
-                      { className: 'ui-preview-text' },
-                      ' '
-                    )
-                  ),
-                  _react2.default.createElement(
-                    'small',
-                    null,
-                    gettext("followers")
-                  )
-                )
-              )
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../utils/random":152,"../avatar":54,"react":"react"}],116:[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: 'getEmptyMessage',
-    value: function getEmptyMessage() {
-      return interpolate(gettext("No users have posted any new messages during last %(days)s days."), { 'days': this.props.trackedPeriod }, true);
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'active-posters-list' },
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'p',
-            { className: 'lead' },
-            this.getEmptyMessage()
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],117:[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 _reactRouter = require('react-router');
-
-var _avatar = require('../../avatar');
-
-var _avatar2 = _interopRequireDefault(_avatar);
-
-var _userStatus = require('../../user-status');
-
-var _userStatus2 = _interopRequireDefault(_userStatus);
-
-var _index = require('../../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-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 _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: 'getClassName',
-    value: function getClassName() {
-      if (this.props.rank.css_class) {
-        return "list-group-item list-group-rank-" + this.props.rank.css_class;
-      } else {
-        return "list-group-item";
-      }
-    }
-  }, {
-    key: 'getUserStatus',
-    value: function getUserStatus() {
-      if (this.props.user.status) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          _userStatus2.default,
-          { user: this.props.user, status: this.props.user.status },
-          _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.user,
-            status: this.props.user.status }),
-          _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.user,
-            status: this.props.user.status,
-            className: 'status-label hidden-xs hidden-sm' })
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'span',
-            { className: 'user-status' },
-            _react2.default.createElement(
-              'span',
-              { className: 'status-icon ui-preview' },
-              ' '
-            ),
-            _react2.default.createElement(
-              'span',
-              { className: 'status-label ui-preview hidden-xs hidden-sm' },
-              ' '
-            )
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'getRankName',
-    value: function getRankName() {
-      if (this.props.rank.is_tab) {
-        /* jshint ignore:start */
-        var rankUrl = _index2.default.get('USERS_LIST_URL') + this.props.rank.slug + '/';
-        return _react2.default.createElement(
-          _reactRouter.Link,
-          { to: rankUrl, className: 'item-title rank-name' },
-          this.props.rank.name
-        );
-        /* jshint ignore:end */
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(
-            'span',
-            { className: 'item-title rank-name' },
-            this.props.rank.name
-          );
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'getUserTitle',
-    value: function getUserTitle() {
-      if (this.props.user.title) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'span',
-          { className: 'user-title hidden-xs hidden-sm' },
-          this.props.user.title
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'li',
-        { className: this.getClassName() },
-        _react2.default.createElement(
-          'div',
-          { className: 'rank-user-avatar' },
-          _react2.default.createElement(
-            'a',
-            { href: this.props.user.absolute_url },
-            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '50' })
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'rank-user' },
-          _react2.default.createElement(
-            'div',
-            { className: 'user-name' },
-            _react2.default.createElement(
-              'a',
-              { href: this.props.user.absolute_url, className: 'item-title' },
-              this.props.user.username
-            )
-          ),
-          this.getUserStatus(),
-          this.getRankName(),
-          this.getUserTitle()
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'rank-position' },
-          _react2.default.createElement(
-            'strong',
-            null,
-            '#',
-            this.props.counter
-          ),
-          _react2.default.createElement(
-            'small',
-            null,
-            gettext("Rank")
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'rank-posts-counted' },
-          _react2.default.createElement(
-            'strong',
-            null,
-            this.props.user.meta.score
-          ),
-          _react2.default.createElement(
-            'small',
-            null,
-            gettext("Ranked posts")
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: 'rank-posts-total' },
-          _react2.default.createElement(
-            'strong',
-            null,
-            this.props.user.posts
-          ),
-          _react2.default.createElement(
-            'small',
-            null,
-            gettext("Total posts")
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../../index":128,"../../avatar":54,"../../user-status":111,"react":"react","react-router":"react-router"}],118:[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 _random = require('../../../utils/random');
-
-var random = _interopRequireWildcard(_random);
-
-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 _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: 'active-posters-list' },
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'p',
-            { className: 'lead ui-preview-paragraph' },
-            random.range(3, 4).map(function (i) {
-              return _react2.default.createElement(
-                'span',
-                { key: i, className: 'ui-preview-text', style: { width: random.int(50, 120) + "px" } },
-                ' '
-              );
-            })
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'active-posters ui-preview' },
-            _react2.default.createElement(
-              'ul',
-              { className: 'list-group' },
-              random.range(5, 10).map(function (i, counter) {
-                return _react2.default.createElement(
-                  'li',
-                  { key: i, className: 'list-group-item' },
-                  _react2.default.createElement(
-                    'div',
-                    { className: 'rank-user-avatar' },
-                    _react2.default.createElement(
-                      'span',
-                      null,
-                      _react2.default.createElement(_avatar2.default, { size: '50' })
-                    )
-                  ),
-                  _react2.default.createElement(
-                    'div',
-                    { className: 'rank-user' },
-                    _react2.default.createElement(
-                      'div',
-                      { className: 'user-name' },
-                      _react2.default.createElement(
-                        'span',
-                        { className: 'item-title' },
-                        _react2.default.createElement(
-                          'span',
-                          { className: 'ui-preview-text', style: { width: random.int(30, 80) + "px" } },
-                          ' '
-                        )
-                      )
-                    ),
-                    _react2.default.createElement(
-                      'span',
-                      { className: 'user-status' },
-                      _react2.default.createElement(
-                        'span',
-                        { className: 'status-icon ui-preview' },
-                        ' '
-                      ),
-                      _react2.default.createElement(
-                        'span',
-                        { className: 'status-label ui-preview hidden-xs hidden-sm' },
-                        ' '
-                      )
-                    ),
-                    _react2.default.createElement(
-                      'span',
-                      { className: 'rank-name' },
-                      _react2.default.createElement(
-                        'span',
-                        { className: 'ui-preview-text', style: { width: random.int(30, 50) + "px" } },
-                        ' '
-                      )
-                    ),
-                    _react2.default.createElement(
-                      'span',
-                      { className: 'user-title hidden-xs hidden-sm' },
-                      _react2.default.createElement(
-                        'span',
-                        { className: 'ui-preview-text', style: { width: random.int(30, 50) + "px" } },
-                        ' '
-                      )
-                    )
-                  ),
-                  _react2.default.createElement(
-                    'div',
-                    { className: 'rank-position' },
-                    _react2.default.createElement(
-                      'strong',
-                      null,
-                      _react2.default.createElement(
-                        'span',
-                        { className: 'ui-preview-text', style: { width: "30px" } },
-                        ' '
-                      )
-                    ),
-                    _react2.default.createElement(
-                      'small',
-                      null,
-                      gettext("Rank")
-                    )
-                  ),
-                  _react2.default.createElement(
-                    'div',
-                    { className: 'rank-posts-counted' },
-                    _react2.default.createElement(
-                      'strong',
-                      null,
-                      _react2.default.createElement(
-                        'span',
-                        { className: 'ui-preview-text', style: { width: "30px" } },
-                        ' '
-                      )
-                    ),
-                    _react2.default.createElement(
-                      'small',
-                      null,
-                      gettext("Ranked posts")
-                    )
-                  ),
-                  _react2.default.createElement(
-                    'div',
-                    { className: 'rank-posts-total' },
-                    _react2.default.createElement(
-                      'strong',
-                      null,
-                      _react2.default.createElement(
-                        'span',
-                        { className: 'ui-preview-text', style: { width: "30px" } },
-                        ' '
-                      )
-                    ),
-                    _react2.default.createElement(
-                      'small',
-                      null,
-                      gettext("Total posts")
-                    )
-                  )
-                );
-              })
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../../utils/random":152,"../../avatar":54,"react":"react"}],119:[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 _listItem = require('./list-item');
-
-var _listItem2 = _interopRequireDefault(_listItem);
-
-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: 'getLeadMessage',
-    value: function getLeadMessage() {
-      var message = ngettext("%(posters)s most active poster from last %(days)s days.", "%(posters)s most active posters from last %(days)s days.", this.props.count);
-
-      return interpolate(message, {
-        posters: this.props.count,
-        days: this.props.trackedPeriod
-      }, true);
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'active-posters-list' },
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          _react2.default.createElement(
-            'p',
-            { className: 'lead' },
-            this.getLeadMessage()
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'active-posters ui-ready' },
-            _react2.default.createElement(
-              'ul',
-              { className: 'list-group' },
-              this.props.users.map(function (user, i) {
-                return _react2.default.createElement(_listItem2.default, { user: user,
-                  rank: user.rank,
-                  counter: i + 1,
-                  key: user.id });
-              })
-            )
-          )
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"./list-item":117,"react":"react"}],120:[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 _listEmpty = require('./list-empty');
-
-var _listEmpty2 = _interopRequireDefault(_listEmpty);
-
-var _listLoading = require('./list-loading');
-
-var _listLoading2 = _interopRequireDefault(_listLoading);
-
-var _list = require('./list');
-
-var _list2 = _interopRequireDefault(_list);
-
-var _index = require('../../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _users = require('../../../reducers/users');
-
-var _polls = require('../../../services/polls');
-
-var _polls2 = _interopRequireDefault(_polls);
-
-var _store = require('../../../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-var _pageTitle = require('../../../services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-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.update = function (data) {
-      _store2.default.dispatch((0, _users.dehydrate)(data.results));
-
-      _this.setState({
-        isLoaded: true,
-
-        trackedPeriod: data.tracked_period,
-        count: data.count
-      });
-    };
-
-    if (_index2.default.has('USERS')) {
-      _this.initWithPreloadedData(_index2.default.pop('USERS'));
-    } else {
-      _this.initWithoutPreloadedData();
-    }
-
-    _this.startPolling();
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'initWithPreloadedData',
-    value: function initWithPreloadedData(data) {
-      this.state = {
-        isLoaded: true,
-
-        trackedPeriod: data.tracked_period,
-        count: data.count
-      };
-
-      _store2.default.dispatch((0, _users.dehydrate)(data.results));
-    }
-  }, {
-    key: 'initWithoutPreloadedData',
-    value: function initWithoutPreloadedData() {
-      this.state = {
-        isLoaded: false
-      };
-    }
-  }, {
-    key: 'startPolling',
-    value: function startPolling() {
-      _polls2.default.start({
-        poll: 'active-posters',
-        url: _index2.default.get('USERS_API'),
-        data: {
-          list: 'active'
-        },
-        frequency: 90 * 1000,
-        update: this.update
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'componentDidMount',
-
-    /* jshint ignore:end */
-
-    value: function componentDidMount() {
-      _pageTitle2.default.set({
-        title: this.props.route.extra.name,
-        parent: gettext("Users")
-      });
-    }
-  }, {
-    key: 'componentWillUnmount',
-    value: function componentWillUnmount() {
-      _polls2.default.stop('active-posters');
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      if (this.state.isLoaded) {
-        if (this.state.count > 0) {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_list2.default, { users: this.props.users,
-            trackedPeriod: this.state.trackedPeriod,
-            count: this.state.count });
-          /* jshint ignore:end */
-        } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(_listEmpty2.default, { trackedPeriod: this.state.trackedPeriod });
-            /* jshint ignore:end */
-          }
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_listLoading2.default, null);
-          /* jshint ignore:end */
-        }
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../../index":128,"../../../reducers/users":134,"../../../services/page-title":142,"../../../services/polls":143,"../../../services/store":145,"./list":119,"./list-empty":116,"./list-loading":118,"react":"react"}],121:[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.CompactNav = exports.TabsNav = undefined;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactRouter = require('react-router');
-
-var _li = require('../li');
-
-var _li2 = _interopRequireDefault(_li);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-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:start
-var listUrl = function listUrl(baseUrl, list) {
-  var url = baseUrl;
-  if (list.component === 'rank') {
-    url += list.slug;
-  } else {
-    url += list.component;
-  }
-  return url + '/';
-};
-
-var navLinks = function navLinks(baseUrl, lists, hideNav) {
-  return lists.map(function (list) {
-    var url = listUrl(baseUrl, list);
-    return _react2.default.createElement(
-      _li2.default,
-      { path: url,
-        key: url },
-      _react2.default.createElement(
-        _reactRouter.Link,
-        { to: url, onClick: hideNav },
-        list.name
-      )
-    );
-  });
-};
-// jshint ignore:end
-
-var TabsNav = exports.TabsNav = function (_React$Component) {
-  _inherits(TabsNav, _React$Component);
-
-  function TabsNav() {
-    _classCallCheck(this, TabsNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(TabsNav).apply(this, arguments));
-  }
-
-  _createClass(TabsNav, [{
-    key: 'render',
-    value: function render() {
-      // jshint ignore:start
-      return _react2.default.createElement(
-        'ul',
-        { className: 'nav nav-pills' },
-        navLinks(this.props.baseUrl, this.props.lists)
-      );
-      // jshint ignore:end
-    }
-  }]);
-
-  return TabsNav;
-}(_react2.default.Component);
-
-var CompactNav = exports.CompactNav = function (_React$Component2) {
-  _inherits(CompactNav, _React$Component2);
-
-  function CompactNav() {
-    _classCallCheck(this, CompactNav);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));
-  }
-
-  _createClass(CompactNav, [{
-    key: 'render',
-    value: function render() {
-      // jshint ignore:start
-      return _react2.default.createElement(
-        'ul',
-        { className: 'dropdown-menu', role: 'menu' },
-        navLinks(this.props.baseUrl, this.props.lists, this.props.hideNav)
-      );
-      // jshint ignore:end
-    }
-  }]);
-
-  return CompactNav;
-}(_react2.default.Component);
-
-},{"../../index":128,"../li":70,"react":"react","react-router":"react-router"}],122:[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 _root = require('../../users-list/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-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',
-        null,
-        _react2.default.createElement(_root2.default, { isLoaded: false, cols: 3, showStatus: true })
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../users-list/root":113,"react":"react"}],123:[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 _pager = require('./pager');
-
-var _pager2 = _interopRequireDefault(_pager);
-
-var _root = require('../../users-list/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-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 (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'getPager',
-    value: function getPager() {
-      if (this.props.pages > 1) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(_pager2.default, this.props);
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        null,
-        _react2.default.createElement(_root2.default, { users: this.props.users,
-          showStatus: true,
-          cols: 3,
-          isLoaded: true }),
-        this.getPager()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../users-list/root":113,"./pager":124,"react":"react"}],124:[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 _reactRouter = require('react-router');
-
-var _resetScroll = require('../../../utils/reset-scroll');
-
-var _resetScroll2 = _interopRequireDefault(_resetScroll);
-
-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 (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class() {
-    _classCallCheck(this, _class);
-
-    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));
-  }
-
-  _createClass(_class, [{
-    key: 'getPreviousPage',
-    value: function getPreviousPage() {
-      if (this.props.previous || this.props.first) {
-        /* jshint ignore:start */
-        var url = this.props.baseUrl;
-        if (this.props.previous) {
-          url += this.props.previous + '/';
-        }
-
-        return _react2.default.createElement(
-          'li',
-          { className: 'previous' },
-          _react2.default.createElement(
-            _reactRouter.Link,
-            { to: url, onClick: _resetScroll2.default },
-            _react2.default.createElement(
-              'span',
-              { 'aria-hidden': 'true', className: 'material-icon' },
-              'arrow_back'
-            )
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getNextPage',
-    value: function getNextPage() {
-      if (this.props.next) {
-        /* jshint ignore:start */
-        var url = this.props.baseUrl + this.props.next + '/';
-        return _react2.default.createElement(
-          'li',
-          { className: 'next' },
-          _react2.default.createElement(
-            _reactRouter.Link,
-            { to: url, onClick: _resetScroll2.default },
-            _react2.default.createElement(
-              'span',
-              { 'aria-hidden': 'true', className: 'material-icon' },
-              'arrow_forward'
-            )
-          )
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getProgessBar',
-    value: function getProgessBar() {
-      var _this2 = this;
-
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'ul',
-        { className: 'pager-progress-bar' },
-        this.props.page_range.map(function (page) {
-          var className = page === _this2.props.page ? 'active' : null;
-          var url = _this2.props.baseUrl;
-
-          if (page > 1) {
-            url += page + '/';
-          }
-
-          return _react2.default.createElement(
-            'li',
-            { key: page, className: className },
-            _react2.default.createElement(
-              _reactRouter.Link,
-              { to: url, onClick: _resetScroll2.default },
-              page
-            )
-          );
-        })
-      );
-      /* jshint ignore:end */
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'pager-undercontent' },
-        _react2.default.createElement(
-          'nav',
-          null,
-          _react2.default.createElement(
-            'ul',
-            { className: 'pager' },
-            this.getPreviousPage(),
-            this.getNextPage()
-          ),
-          this.getProgessBar()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../../utils/reset-scroll":153,"react":"react","react-router":"react-router"}],125:[function(require,module,exports){
-'use strict';
-
-var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
-
-var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _list = require('./list');
-
-var _list2 = _interopRequireDefault(_list);
-
-var _listLoading = require('./list-loading');
-
-var _listLoading2 = _interopRequireDefault(_listLoading);
-
-var _index = require('../../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-var _users = require('../../../reducers/users');
-
-var _polls = require('../../../services/polls');
-
-var _polls2 = _interopRequireDefault(_polls);
-
-var _store = require('../../../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-var _pageTitle = require('../../../services/page-title');
-
-var _pageTitle2 = _interopRequireDefault(_pageTitle);
-
-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 (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.update = function (data) {
-      _store2.default.dispatch((0, _users.dehydrate)(data.results));
-
-      data.isLoaded = true;
-      _this.setState(data);
-    };
-
-    if (_index2.default.has('USERS')) {
-      _this.initWithPreloadedData(_index2.default.pop('USERS'));
-    } else {
-      _this.initWithoutPreloadedData();
-    }
-
-    _this.startPolling(props.params.page || 1);
-    return _this;
-  }
-
-  _createClass(_class, [{
-    key: 'initWithPreloadedData',
-    value: function initWithPreloadedData(data) {
-      this.state = Object.assign(data, {
-        isLoaded: true
-      });
-      _store2.default.dispatch((0, _users.dehydrate)(data.results));
-    }
-  }, {
-    key: 'initWithoutPreloadedData',
-    value: function initWithoutPreloadedData() {
-      this.state = {
-        isLoaded: false
-      };
-    }
-  }, {
-    key: 'startPolling',
-    value: function startPolling(page) {
-      _polls2.default.start({
-        poll: 'rank-users',
-        url: _index2.default.get('USERS_API'),
-        data: {
-          rank: this.props.route.rank.id,
-          page: page
-        },
-        frequency: 90 * 1000,
-        update: this.update
-      });
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: 'componentDidMount',
-
-    /* jshint ignore:end */
-
-    value: function componentDidMount() {
-      _pageTitle2.default.set({
-        title: this.props.route.rank.name,
-        page: this.props.params.page || null,
-        parent: gettext("Users")
-      });
-    }
-  }, {
-    key: 'componentWillUnmount',
-    value: function componentWillUnmount() {
-      _polls2.default.stop('rank-users');
-    }
-  }, {
-    key: 'componentWillReceiveProps',
-    value: function componentWillReceiveProps(nextProps) {
-      if (this.props.params.page !== nextProps.params.page) {
-        _pageTitle2.default.set({
-          title: this.props.route.rank.name,
-          page: nextProps.params.page || null,
-          parent: gettext("Users")
-        });
-
-        this.setState({
-          isLoaded: false
-        });
-
-        _polls2.default.stop('rank-users');
-        this.startPolling(nextProps.params.page);
-      }
-    }
-  }, {
-    key: 'getClassName',
-    value: function getClassName() {
-      if (this.props.route.rank.css_class) {
-        return 'rank-users-list rank-users-' + this.props.route.rank.css_class;
-      } else {
-        return 'rank-users-list';
-      }
-    }
-  }, {
-    key: 'getRankDescription',
-    value: function getRankDescription() {
-      if (this.props.route.rank.description) {
-        /* jshint ignore:start */
-        return _react2.default.createElement(
-          'div',
-          { className: 'rank-description' },
-          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {
-              __html: this.props.route.rank.description.html
-            } })
-        );
-        /* jshint ignore:end */
-      } else {
-          return null;
-        }
-    }
-  }, {
-    key: 'getComponent',
-    value: function getComponent() {
-      if (this.state.isLoaded) {
-        if (this.state.count > 0) {
-          /* jshint ignore:start */
-          var baseUrl = _index2.default.get('USERS_LIST_URL') + this.props.route.rank.slug + '/';
-          return _react2.default.createElement(_list2.default, _extends({ baseUrl: baseUrl,
-            users: this.props.users
-          }, this.state));
-          /* jshint ignore:end */
-        } else {
-            /* jshint ignore:start */
-            return _react2.default.createElement(
-              'p',
-              { className: 'lead' },
-              gettext("There are no users with this rank at the moment.")
-            );
-            /* jshint ignore:end */
-          }
-      } else {
-          /* jshint ignore:start */
-          return _react2.default.createElement(_listLoading2.default, null);
-          /* jshint ignore:end */
-        }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: this.getClassName() },
-        _react2.default.createElement(
-          'div',
-          { className: 'container' },
-          this.getRankDescription(),
-          this.getComponent()
-        )
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"../../../index":128,"../../../reducers/users":134,"../../../services/page-title":142,"../../../services/polls":143,"../../../services/store":145,"./list":123,"./list-loading":122,"react":"react"}],126:[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;
-exports.paths = paths;
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactRedux = require('react-redux');
-
-var _navs = require('./navs');
-
-var _root = require('./active-posters/root');
-
-var _root2 = _interopRequireDefault(_root);
-
-var _root3 = require('./rank/root');
-
-var _root4 = _interopRequireDefault(_root3);
-
-var _index = require('../../index');
-
-var _index2 = _interopRequireDefault(_index);
-
-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 (_React$Component) {
-  _inherits(_class, _React$Component);
-
-  function _class(props) {
-    _classCallCheck(this, _class);
-
-    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));
-
-    _this.toggleNav = function () {
-      if (_this.state.dropdown) {
-        _this.setState({
-          dropdown: false
-        });
-      } else {
-        _this.setState({
-          dropdown: true
-        });
-      }
-    };
-
-    _this.hideNav = function () {
-      _this.setState({
-        dropdown: false
-      });
-    };
-
-    _this.state = {
-      dropdown: false
-    };
-    return _this;
-  }
-
-  /* jshint ignore:start */
-
-  _createClass(_class, [{
-    key: 'getToggleNavClassName',
-
-    /* jshint ignore:end */
-
-    value: function getToggleNavClassName() {
-      if (this.state.dropdown) {
-        return 'btn btn-default btn-icon open';
-      } else {
-        return 'btn btn-default btn-icon';
-      }
-    }
-  }, {
-    key: 'getCompactNavClassName',
-    value: function getCompactNavClassName() {
-      if (this.state.dropdown) {
-        return 'compact-nav open';
-      } else {
-        return 'compact-nav';
-      }
-    }
-  }, {
-    key: 'render',
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        'div',
-        { className: 'page page-users-lists' },
-        _react2.default.createElement(
-          'div',
-          { className: 'page-header tabbed' },
-          _react2.default.createElement(
-            'div',
-            { className: 'container' },
-            _react2.default.createElement(
-              'h1',
-              { className: 'pull-left' },
-              gettext("Users")
-            ),
-            _react2.default.createElement(
-              'button',
-              { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',
-                type: 'button',
-                onClick: this.toggleNav,
-                'aria-haspopup': 'true',
-                'aria-expanded': this.state.dropdown ? 'true' : 'false' },
-              _react2.default.createElement(
-                'i',
-                { className: 'material-icon' },
-                'menu'
-              )
-            )
-          ),
-          _react2.default.createElement(
-            'div',
-            { className: 'page-tabs hidden-xs hidden-sm' },
-            _react2.default.createElement(
-              'div',
-              { className: 'container' },
-              _react2.default.createElement(_navs.TabsNav, { lists: _index2.default.get('USERS_LISTS'),
-                baseUrl: _index2.default.get('USERS_LIST_URL') })
-            )
-          )
-        ),
-        _react2.default.createElement(
-          'div',
-          { className: this.getCompactNavClassName() },
-          _react2.default.createElement(_navs.CompactNav, { lists: _index2.default.get('USERS_LISTS'),
-            baseUrl: _index2.default.get('USERS_LIST_URL'),
-            hideNav: this.hideNav })
-        ),
-        this.props.children
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-function select(store) {
-  return {
-    'tick': store.tick.tick,
-    'user': store.auth.user,
-    'users': store.users
-  };
-}
-
-function paths() {
-  var paths = [];
-
-  _index2.default.get('USERS_LISTS').forEach(function (item) {
-    if (item.component === 'rank') {
-      paths.push({
-        path: _index2.default.get('USERS_LIST_URL') + item.slug + '/:page/',
-        component: (0, _reactRedux.connect)(select)(_root4.default),
-        rank: item
-      });
-      paths.push({
-        path: _index2.default.get('USERS_LIST_URL') + item.slug + '/',
-        component: (0, _reactRedux.connect)(select)(_root4.default),
-        rank: item
-      });
-    } else if (item.component === 'active-posters') {
-      paths.push({
-        path: _index2.default.get('USERS_LIST_URL') + item.component + '/',
-        component: (0, _reactRedux.connect)(select)(_root2.default),
-        extra: {
-          name: item.name
-        }
-      });
-    }
-  });
-
-  return paths;
-}
-
-},{"../../index":128,"./active-posters/root":120,"./navs":121,"./rank/root":125,"react":"react","react-redux":"react-redux"}],127:[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() {
-    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.toggle = function () {
-      _this.props.onChange({
-        target: {
-          value: !_this.props.value
-        }
-      });
-    }, _temp), _possibleConstructorReturn(_this, _ret);
-  }
-
-  _createClass(_class, [{
-    key: "getClassName",
-    value: function getClassName() {
-      if (this.props.value) {
-        return "btn btn-yes-no btn-yes-no-on";
-      } else {
-        return "btn btn-yes-no btn-yes-no-off";
-      }
-    }
-  }, {
-    key: "getIcon",
-    value: function getIcon() {
-      if (this.props.value) {
-        return this.props.iconOn || 'check_box';
-      } else {
-        return this.props.iconOff || 'check_box_outline_blank';
-      }
-    }
-  }, {
-    key: "getLabel",
-    value: function getLabel() {
-      if (this.props.value) {
-        return this.props.labelOn || gettext("yes");
-      } else {
-        return this.props.labelOff || gettext("no");
-      }
-    }
-
-    /* jshint ignore:start */
-
-  }, {
-    key: "render",
-
-    /* jshint ignore:end */
-
-    value: function render() {
-      /* jshint ignore:start */
-      return _react2.default.createElement(
-        "button",
-        { type: "button",
-          onClick: this.toggle,
-          className: this.getClassName(),
-          id: this.props.id || null,
-          "aria-describedby": this.props['aria-describedby'] || null,
-          disabled: this.props.disabled || false },
-        _react2.default.createElement(
-          "span",
-          { className: "material-icon" },
-          this.getIcon()
-        ),
-        this.getLabel()
-      );
-      /* jshint ignore:end */
-    }
-  }]);
-
-  return _class;
-}(_react2.default.Component);
-
-exports.default = _class;
-
-},{"react":"react"}],128:[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[key];
-    }
-  }, {
-    key: 'get',
-    value: function get(key, fallback) {
-      if (this.has(key)) {
-        return this._context[key];
-      } else {
-        return fallback || undefined;
-      }
-    }
-  }, {
-    key: 'pop',
-    value: function pop(key) {
-      if (this.has(key)) {
-        var value = this._context[key];
-        this._context[key] = null;
-        return value;
-      } else {
-        return 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":151}],129:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.SIGN_OUT = exports.SIGN_IN = exports.PATCH_USER = exports.initialState = undefined;
-exports.patchUser = patchUser;
-exports.signIn = signIn;
-exports.signOut = signOut;
-exports.default = auth;
-
-var _users = require('./users');
-
-var initialState = exports.initialState = {
-  signedIn: false,
-  signedOut: false
-};
-
-var PATCH_USER = exports.PATCH_USER = 'PATCH_USER';
-var SIGN_IN = exports.SIGN_IN = 'SIGN_IN';
-var SIGN_OUT = exports.SIGN_OUT = 'SIGN_OUT';
-
-function patchUser(patch) {
-  return {
-    type: PATCH_USER,
-    patch: patch
-  };
-}
-
-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 PATCH_USER:
-      var newState = Object.assign({}, state);
-      newState.user = Object.assign({}, state.user, action.patch);
-      return newState;
-
-    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;
-
-    case _users.UPDATE_USERNAME:
-      if (state.isAuthenticated && state.user.id === action.userId) {
-        var _newState2 = Object.assign({}, state);
-        _newState2.user = Object.assign({}, state.user, {
-          username: action.username,
-          slug: action.slug
-        });
-        return _newState2;
-      }
-      return state;
-
-    default:
-      return state;
-  }
-}
-
-},{"./users":134}],130:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.PATCH_PROFILE = exports.DEHYDRATE_PROFILE = undefined;
-exports.dehydrate = dehydrate;
-exports.patchProfile = patchProfile;
-exports.default = auth;
-
-var _moment = require('moment');
-
-var _moment2 = _interopRequireDefault(_moment);
-
-var _users = require('./users');
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var DEHYDRATE_PROFILE = exports.DEHYDRATE_PROFILE = 'DEHYDRATE_PROFILE';
-var PATCH_PROFILE = exports.PATCH_PROFILE = 'PATCH_PROFILE';
-
-function dehydrate(profile) {
-  return {
-    type: DEHYDRATE_PROFILE,
-    profile: profile
-  };
-}
-
-function patchProfile(patch) {
-  return {
-    type: PATCH_PROFILE,
-    patch: patch
-  };
-}
-
-function auth() {
-  var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
-  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
-  switch (action.type) {
-    case DEHYDRATE_PROFILE:
-      return Object.assign({}, action.profile, {
-        joined_on: (0, _moment2.default)(action.profile.joined_on),
-        status: (0, _users.dehydrateStatus)(action.profile.status)
-      });
-
-    case PATCH_PROFILE:
-      return Object.assign({}, state, action.patch);
-
-    case _users.UPDATE_AVATAR:
-      if (state.id === action.userId) {
-        return Object.assign({}, state, {
-          avatar_hash: action.avatarHash
-        });
-      }
-      return state;
-
-    case _users.UPDATE_USERNAME:
-      if (state.id === action.userId) {
-        return Object.assign({}, state, {
-          username: action.username,
-          slug: action.slug
-        });
-      }
-      return state;
-
-    default:
-      return state;
-  }
-}
-
-},{"./users":134,"moment":"moment"}],131:[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;
-  }
-}
-
-},{}],132:[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;
-  }
-}
-
-},{}],133:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.DEHYDRATE_HISTORY = exports.APPEND_HISTORY = exports.ADD_NAME_CHANGE = undefined;
-exports.addNameChange = addNameChange;
-exports.append = append;
-exports.dehydrate = dehydrate;
-exports.default = username;
-
-var _users = require('./users');
-
-var _moment = require('moment');
-
-var _moment2 = _interopRequireDefault(_moment);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var ADD_NAME_CHANGE = exports.ADD_NAME_CHANGE = 'ADD_NAME_CHANGE';
-var APPEND_HISTORY = exports.APPEND_HISTORY = 'APPEND_HISTORY';
-var DEHYDRATE_HISTORY = exports.DEHYDRATE_HISTORY = 'DEHYDRATE_HISTORY';
-
-function addNameChange(change, user, changedBy) {
-  return {
-    type: ADD_NAME_CHANGE,
-    change: change,
-    user: user,
-    changedBy: changedBy
-  };
-}
-
-function append(items) {
-  return {
-    type: APPEND_HISTORY,
-    items: items
-  };
-}
-
-function dehydrate(items) {
-  return {
-    type: DEHYDRATE_HISTORY,
-    items: items
-  };
-}
-
-function username() {
-  var state = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
-  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
-  switch (action.type) {
-    case ADD_NAME_CHANGE:
-      var newState = state.slice();
-      newState.unshift({
-        id: Math.floor(Date.now() / 1000), // just small hax for getting id
-        changed_by: action.changedBy,
-        changed_by_username: action.changedBy.username,
-        changed_on: (0, _moment2.default)(),
-        new_username: action.change.username,
-        old_username: action.user.username
-      });
-      return newState;
-
-    case APPEND_HISTORY:
-      return state.concat(action.items.map(function (item) {
-        return Object.assign({}, item, {
-          changed_on: (0, _moment2.default)(item.changed_on)
-        });
-      }));
-
-    case DEHYDRATE_HISTORY:
-      return action.items.map(function (item) {
-        return Object.assign({}, item, {
-          changed_on: (0, _moment2.default)(item.changed_on)
-        });
-      });
-
-    case _users.UPDATE_AVATAR:
-      return state.map(function (item) {
-        item = Object.assign({}, item);
-        if (item.changed_by && item.changed_by.id === action.userId) {
-          item.changed_by = Object.assign({}, item.changed_by, {
-            'avatar_hash': action.avatarHash
-          });
-        }
-
-        return item;
-      });
-
-    case _users.UPDATE_USERNAME:
-      return state.map(function (item) {
-        item = Object.assign({}, item);
-        if (item.changed_by && item.changed_by.id === action.userId) {
-          item.changed_by = Object.assign({}, item.changed_by, {
-            'username': action.username,
-            'slug': action.slug
-          });
-        }
-
-        return Object.assign({}, item);
-      });
-
-    default:
-      return state;
-  }
-}
-
-},{"./users":134,"moment":"moment"}],134:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.UPDATE_USERNAME = exports.UPDATE_AVATAR = exports.DEHYDRATE_USERS = exports.APPEND_USERS = undefined;
-exports.append = append;
-exports.dehydrate = dehydrate;
-exports.dehydrateStatus = dehydrateStatus;
-exports.updateAvatar = updateAvatar;
-exports.updateUsername = updateUsername;
-exports.default = user;
-
-var _moment = require('moment');
-
-var _moment2 = _interopRequireDefault(_moment);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var APPEND_USERS = exports.APPEND_USERS = 'APPEND_USERS';
-var DEHYDRATE_USERS = exports.DEHYDRATE_USERS = 'DEHYDRATE_USERS';
-var UPDATE_AVATAR = exports.UPDATE_AVATAR = 'UPDATE_AVATAR';
-var UPDATE_USERNAME = exports.UPDATE_USERNAME = 'UPDATE_USERNAME';
-
-function append(items) {
-  return {
-    type: APPEND_USERS,
-    items: items
-  };
-}
-
-function dehydrate(items) {
-  return {
-    type: DEHYDRATE_USERS,
-    items: items
-  };
-}
-
-function dehydrateStatus(status) {
-  if (status) {
-    return Object.assign({}, status, {
-      last_click: status.last_click ? (0, _moment2.default)(status.last_click) : null,
-      banned_until: status.banned_until ? (0, _moment2.default)(status.banned_until) : null
-    });
-  } else {
-    return null;
-  }
-}
-
-function updateAvatar(user, avatarHash) {
-  return {
-    type: UPDATE_AVATAR,
-    userId: user.id,
-    avatarHash: avatarHash
-  };
-}
-
-function updateUsername(user, username, slug) {
-  return {
-    type: UPDATE_USERNAME,
-    userId: user.id,
-    username: username,
-    slug: slug
-  };
-}
-
-function user() {
-  var state = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
-  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
-
-  switch (action.type) {
-    case APPEND_USERS:
-      return state.concat(action.items.map(function (item) {
-        return Object.assign({}, item, {
-          joined_on: (0, _moment2.default)(item.joined_on),
-          status: dehydrateStatus(item.status)
-        });
-      }));
-
-    case DEHYDRATE_USERS:
-      return action.items.map(function (item) {
-        return Object.assign({}, item, {
-          joined_on: (0, _moment2.default)(item.joined_on),
-          status: dehydrateStatus(item.status)
-        });
-      });
-
-    case UPDATE_AVATAR:
-      return state.map(function (item) {
-        item = Object.assign({}, item);
-        if (item.id === action.userId) {
-          item.avatar_hash = action.avatarHash;
-        }
-
-        return item;
-      });
-
-    default:
-      return state;
-  }
-}
-
-},{"moment":"moment"}],135:[function(require,module,exports){
-'use strict';
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
-
-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;
-    this._locks = {};
-  }
-
-  _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 ? JSON.stringify(data) : null,
-          contentType: "application/json; charset=utf-8",
-          dataType: 'json',
-
-          success: function success(data) {
-            resolve(data);
-          },
-
-          error: function error(jqXHR) {
-            var rejection = jqXHR.responseJSON || {};
-
-            rejection.status = jqXHR.status;
-
-            if (rejection.status === 0) {
-              rejection.detail = gettext("Lost connection with application.");
-            }
-
-            if (rejection.status === 404) {
-              if (!rejection.detail || rejection.detail === 'NOT FOUND') {
-                rejection.detail = gettext("Action link is invalid.");
-              }
-            }
-
-            if (rejection.status === 500 && !rejection.detail) {
-              rejection.detail = gettext("Unknown error has occured.");
-            }
-
-            rejection.statusText = jqXHR.statusText;
-
-            reject(rejection);
-          }
-        };
-
-        $.ajax(xhr);
-      });
-    }
-  }, {
-    key: 'get',
-    value: function get(url, params, lock) {
-      var _this = this;
-
-      if (params) {
-        url += '?' + $.param(params);
-      }
-
-      if (lock) {
-        var _ret = function () {
-          var self = _this;
-
-          // update url in existing lock?
-          if (_this._locks[lock]) {
-            _this._locks[lock].url = url;
-          }
-
-          // immediately dereference promise handlers without doing anything
-          // we are already waiting for existing response to resolve
-          if (_this._locks[lock] && _this._locks[lock].waiter) {
-            return {
-              v: {
-                then: function then() {
-                  return;
-                }
-              }
-            };
-
-            // return promise that will begin when original one resolves
-          } else if (_this._locks[lock] && _this._locks[lock].wait) {
-              _this._locks[lock].waiter = true;
-
-              return {
-                v: new Promise(function (resolve, reject) {
-                  var wait = function wait(url) {
-                    // keep waiting on promise
-                    if (self._locks[lock].wait) {
-                      window.setTimeout(function () {
-                        wait(url);
-                      }, 300);
-
-                      // poll for new url
-                    } else if (self._locks[lock].url !== url) {
-                        wait(self._locks[lock].url);
-
-                        // ajax backend for response
-                      } else {
-                          self._locks[lock].waiter = false;
-                          self.request('GET', self._locks[lock].url).then(function (data) {
-                            if (self._locks[lock].url === url) {
-                              resolve(data);
-                            } else {
-                              self._locks[lock].waiter = true;
-                              wait(self._locks[lock].url);
-                            }
-                          }, function (rejection) {
-                            if (self._locks[lock].url === url) {
-                              reject(rejection);
-                            } else {
-                              self._locks[lock].waiter = true;
-                              wait(self._locks[lock].url);
-                            }
-                          });
-                        }
-                  };
-
-                  window.setTimeout(function () {
-                    wait(url);
-                  }, 300);
-                })
-              };
-
-              // setup new lock without waiter
-            } else {
-                _this._locks[lock] = {
-                  url: url,
-                  wait: true,
-                  waiter: false
-                };
-
-                return {
-                  v: new Promise(function (resolve, reject) {
-                    self.request('GET', url).then(function (data) {
-                      self._locks[lock].wait = false;
-                      if (self._locks[lock].url === url) {
-                        resolve(data);
-                      }
-                    }, function (rejection) {
-                      self._locks[lock].wait = false;
-                      if (self._locks[lock].url === url) {
-                        reject(rejection);
-                      }
-                    });
-                  })
-                };
-              }
-        }();
-
-        if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
-      } else {
-        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);
-    }
-  }, {
-    key: 'upload',
-    value: function upload(url, data, progress) {
-      var self = this;
-      return new Promise(function (resolve, reject) {
-        var xhr = {
-          url: url,
-          method: 'POST',
-          headers: {
-            'X-CSRFToken': self._csrfToken
-          },
-
-          data: data,
-          contentType: false,
-          processData: false,
-
-          xhr: function xhr() {
-            var xhr = new window.XMLHttpRequest();
-            xhr.upload.addEventListener("progress", function (evt) {
-              if (evt.lengthComputable) {
-                progress(Math.round(evt.loaded / evt.total * 100));
-              }
-            }, false);
-            return xhr;
-          },
-
-          success: function success(response) {
-            resolve(response);
-          },
-
-          error: function error(jqXHR) {
-            var rejection = jqXHR.responseJSON || {};
-
-            rejection.status = jqXHR.status;
-
-            if (rejection.status === 0) {
-              rejection.detail = gettext("Lost connection with application.");
-            }
-
-            if (rejection.status === 404) {
-              if (!rejection.detail || rejection.detail === 'NOT FOUND') {
-                rejection.detail = gettext("Action link is invalid.");
-              }
-            }
-
-            if (rejection.status === 500 && !rejection.detail) {
-              rejection.detail = gettext("Unknown error has occured.");
-            }
-
-            rejection.statusText = jqXHR.statusText;
-
-            reject(rejection);
-          }
-        };
-
-        $.ajax(xhr);
-      });
-    }
-  }]);
-
-  return Ajax;
-}();
-
-exports.default = new Ajax();
-
-},{}],136:[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":129}],137:[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":68,"react":"react"}],138:[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();
-
-},{}],139:[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();
-
-},{}],140:[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":150}],141:[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":150,"react-dom":"react-dom"}],142:[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 PageTitle = exports.PageTitle = function () {
-  function PageTitle() {
-    _classCallCheck(this, PageTitle);
-  }
-
-  _createClass(PageTitle, [{
-    key: 'init',
-    value: function init(forumName) {
-      this._forumName = forumName;
-    }
-  }, {
-    key: 'set',
-    value: function set(title) {
-      if (typeof title === 'string') {
-        title = { title: title };
-      }
-
-      var finalTitle = title.title;
-
-      if (title.page) {
-        var pageLabel = interpolate(gettext('page: %(page)s'), {
-          page: title.page
-        }, true);
-
-        finalTitle += ' (' + pageLabel + ')';
-      }
-
-      if (title.parent) {
-        finalTitle += ' | ' + title.parent;
-      }
-
-      document.title = finalTitle + ' | ' + this._forumName;
-    }
-  }]);
-
-  return PageTitle;
-}();
-
-exports.default = new PageTitle();
-
-},{}],143:[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 Polls = exports.Polls = function () {
-  function Polls() {
-    _classCallCheck(this, Polls);
-  }
-
-  _createClass(Polls, [{
-    key: "init",
-    value: function init(ajax, snackbar) {
-      this._ajax = ajax;
-      this._snackbar = snackbar;
-
-      this._polls = {};
-    }
-  }, {
-    key: "start",
-    value: function start(kwargs) {
-      var _this = this;
-
-      var poolServer = function poolServer() {
-        _this._polls[kwargs.poll] = kwargs;
-
-        _this._ajax.get(kwargs.url, kwargs.data || null).then(function (data) {
-          kwargs.update(data);
-
-          _this._polls[kwargs.poll].timeout = window.setTimeout(poolServer, kwargs.frequency);
-        }, function (rejection) {
-          if (kwargs.error) {
-            kwargs.error(rejection);
-          } else {
-            _this._snackbar.apiError(rejection);
-          }
-        });
-      };
-
-      poolServer();
-    }
-  }, {
-    key: "stop",
-    value: function stop(pollId) {
-      if (this._polls[pollId]) {
-        window.clearTimeout(this._polls[pollId].timeout);
-      }
-    }
-  }]);
-
-  return Polls;
-}();
-
-exports.default = new Polls();
-
-},{}],144:[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 = rejection.detail;
-
-      if (!message) {
-        if (rejection.status === 404) {
-          message = gettext("Action link is invalid.");
-        } else {
-          message = gettext("Unknown error has occured.");
-        }
-      }
-
-      if (rejection.status === 403 && message === "Permission denied") {
-        message = gettext("You don't have permission to perform this action.");
-      }
-
-      this.error(message);
-    }
-  }]);
-
-  return Snackbar;
-}();
-
-exports.default = new Snackbar();
-
-},{"../reducers/snackbar":131}],145:[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"}],146:[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();
-
-},{}],147:[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":55,"../index":128,"../services/store":145,"moment":"moment","react":"react","react-dom":"react-dom","react-redux":"react-redux"}],148:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-exports.default = function (list, rowWidth) {
-  var padding = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];
-
-  var rows = [];
-  var row = [];
-
-  list.forEach(function (element) {
-    row.push(element);
-    if (row.length === rowWidth) {
-      rows.push(row);
-      row = [];
-    }
-  });
-
-  // pad row to required length?
-  if (padding !== false && row.length > 0 && row.length < rowWidth) {
-    for (var i = row.length; i < rowWidth; i++) {
-      row.push(padding);
-    }
-  }
-
-  if (row.length) {
-    rows.push(row);
-  }
-
-  return rows;
-};
-
-},{}],149:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-exports.default = function (bytes) {
-  if (bytes > 1000 * 1000 * 1000) {
-    return Math.round(bytes * 100 / (1000 * 1000 * 1000)) / 100 + ' GB';
-  } else if (bytes > 1000 * 1000) {
-    return Math.round(bytes * 100 / (1000 * 1000)) / 100 + ' MB';
-  } else if (bytes > 1000) {
-    return Math.round(bytes * 100 / 1000) / 100 + ' KB';
-  } else {
-    return Math.round(bytes * 100) / 100 + ' B';
-  }
-};
-
-},{}],150:[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);
-
-  /* jshint ignore:start */
-  var finalComponent = Component.props ? Component : _react2.default.createElement(Component, null);
-  /* jshint ignore:end */
-
-  if (rootElement) {
-    if (connected) {
-      _reactDom2.default.render(
-      /* jshint ignore:start */
-      _react2.default.createElement(
-        _reactRedux.Provider,
-        { store: _store2.default.getStore() },
-        finalComponent
-      ),
-      /* jshint ignore:end */
-      rootElement);
-    } else {
-      /* jshint ignore:start */
-      _reactDom2.default.render(finalComponent, rootElement);
-      /* jshint ignore:end */
-    }
-  }
-};
-
-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":145,"react":"react","react-dom":"react-dom","react-redux":"react-redux"}],151:[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;
-
-},{}],152:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.int = int;
-exports.range = range;
-function int(min, max) {
-  return Math.floor(Math.random() * (max - min + 1)) + min;
-}
-
-function range(min, max) {
-  var array = new Array(int(min, max));
-  for (var i = 0; i < array.length; i++) {
-    array[i] = i;
-  }
-
-  return array;
-}
-
-},{}],153:[function(require,module,exports){
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-exports.default = function () {
-  window.scrollTo(0, 0);
-};
-
-},{}],154:[function(require,module,exports){
-'use strict';
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-
-exports.default = function (options) {
-  var routes = {
-    component: options.component,
-    childRoutes: [{
-      path: options.root,
-      onEnter: function onEnter(nextState, replaceState) {
-        replaceState(null, options.paths[0].path);
-      }
-    }].concat(options.paths.map(function (path) {
-      return path;
-    }))
-  };
-
-  _reactDom2.default.render(_react2.default.createElement(
-    _reactRedux.Provider,
-    { store: _store2.default.getStore() },
-    _react2.default.createElement(_reactRouter.Router, { routes: routes, history: history })
-  ), rootElement);
-};
-
-var _react = require('react');
-
-var _react2 = _interopRequireDefault(_react);
-
-var _reactDom = require('react-dom');
-
-var _reactDom2 = _interopRequireDefault(_reactDom);
-
-var _reactRedux = require('react-redux');
-
-var _reactRouter = require('react-router');
-
-var _createBrowserHistory = require('history/lib/createBrowserHistory');
-
-var _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);
-
-var _store = require('../services/store');
-
-var _store2 = _interopRequireDefault(_store);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// jshint ignore:start
-
-var rootElement = document.getElementById('page-mount');
-var history = new _createBrowserHistory2.default();
-
-},{"../services/store":145,"history/lib/createBrowserHistory":43,"react":"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router"}],155:[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);
-}
-
-},{}]},{},[2,3,4,5,17,18,19,20,21,22,23,31,32,33,34,6,7,8,9,10,11,12,13,14,15,16,24,25,26,27,28,29,30])
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwic3JjL2luZGV4LmpzIiwic3JjL2luaXRpYWxpemVycy9hamF4LmpzIiwic3JjL2luaXRpYWxpemVycy9hdXRoLmpzIiwic3JjL2luaXRpYWxpemVycy9jYXRjaGEuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2NvbXBvbmVudHMvYXV0aC1tZXNzYWdlLmpzIiwic3JjL2luaXRpYWxpemVycy9jb21wb25lbnRzL2Jhbm5lZC1wYWdlLmpzIiwic3JjL2luaXRpYWxpemVycy9jb21wb25lbnRzL2NhdGVnb3JpZXMuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2NvbXBvbmVudHMvb3B0aW9ucy5qcyIsInNyYy9pbml0aWFsaXplcnMvY29tcG9uZW50cy9wcm9maWxlLmpzIiwic3JjL2luaXRpYWxpemVycy9jb21wb25lbnRzL3JlcXVlc3QtYWN0aXZhdGlvbi1saW5rLmpzIiwic3JjL2luaXRpYWxpemVycy9jb21wb25lbnRzL3JlcXVlc3QtcGFzc3dvcmQtcmVzZXQuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2NvbXBvbmVudHMvcmVzZXQtcGFzc3dvcmQtZm9ybS5qcyIsInNyYy9pbml0aWFsaXplcnMvY29tcG9uZW50cy9zbmFja2Jhci5qcyIsInNyYy9pbml0aWFsaXplcnMvY29tcG9uZW50cy91c2VyLW1lbnUuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2NvbXBvbmVudHMvdXNlcnMuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2luY2x1ZGUuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL2xvY2FsLXN0b3JhZ2UuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL21vYmlsZS1uYXZiYXItZHJvcGRvd24uanMiLCJzcmMvaW5pdGlhbGl6ZXJzL21vZGFsLmpzIiwic3JjL2luaXRpYWxpemVycy9tb21lbnQtbG9jYWxlLmpzIiwic3JjL2luaXRpYWxpemVycy9wYWdlLXRpdGxlLmpzIiwic3JjL2luaXRpYWxpemVycy9wb2xscy5qcyIsInNyYy9pbml0aWFsaXplcnMvcmVkdWNlcnMvYXV0aC5qcyIsInNyYy9pbml0aWFsaXplcnMvcmVkdWNlcnMvcHJvZmlsZS1kZWh5ZHJhdGUuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL3JlZHVjZXJzL3Byb2ZpbGUuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL3JlZHVjZXJzL3NuYWNrYmFyLmpzIiwic3JjL2luaXRpYWxpemVycy9yZWR1Y2Vycy90aWNrLmpzIiwic3JjL2luaXRpYWxpemVycy9yZWR1Y2Vycy91c2VybmFtZS1oaXN0b3J5LmpzIiwic3JjL2luaXRpYWxpemVycy9yZWR1Y2Vycy91c2Vycy5qcyIsInNyYy9pbml0aWFsaXplcnMvc25hY2tiYXIuanMiLCJzcmMvaW5pdGlhbGl6ZXJzL3N0b3JlLmpzIiwic3JjL2luaXRpYWxpemVycy90aWNrLXN0YXJ0LmpzIiwic3JjL2luaXRpYWxpemVycy96eGN2Ym4uanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL2RlZXAtZXF1YWwvaW5kZXguanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL2RlZXAtZXF1YWwvbGliL2lzX2FyZ3VtZW50cy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9ub2RlX21vZHVsZXMvZGVlcC1lcXVhbC9saWIva2V5cy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9ub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvQWN0aW9ucy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9ub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvQXN5bmNVdGlscy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9ub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvRE9NU3RhdGVTdG9yYWdlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9ET01VdGlscy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9ub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL2hpc3RvcnkvbGliL2NyZWF0ZUJyb3dzZXJIaXN0b3J5LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9jcmVhdGVET01IaXN0b3J5LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9jcmVhdGVIaXN0b3J5LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9jcmVhdGVMb2NhdGlvbi5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9ub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvZGVwcmVjYXRlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9leHRyYWN0UGF0aC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9ub2RlX21vZHVsZXMvaGlzdG9yeS9saWIvcGFyc2VQYXRoLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9oaXN0b3J5L2xpYi9ydW5UcmFuc2l0aW9uSG9vay5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9ub2RlX21vZHVsZXMvaW52YXJpYW50L2Jyb3dzZXIuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL3dhcm5pbmcvYnJvd3Nlci5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9hdXRoLW1lc3NhZ2UuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvYXZhdGFyLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2Jhbm5lZC1wYWdlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2J1dHRvbi5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9jYXRlZ29yaWVzL2NhdGVnb3J5LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2NhdGVnb3JpZXMvZW1wdHktbWVzc2FnZS5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9jYXRlZ29yaWVzL2xhc3QtYWN0aXZpdHkuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvY2F0ZWdvcmllcy9yZWFkLWljb24uanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvY2F0ZWdvcmllcy9yb290LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2NhdGVnb3JpZXMvc3RhdHMuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvY2hhbmdlLWF2YXRhci9jcm9wLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2NoYW5nZS1hdmF0YXIvZ2FsbGVyeS5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9jaGFuZ2UtYXZhdGFyL2luZGV4LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2NoYW5nZS1hdmF0YXIvcm9vdC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9jaGFuZ2UtYXZhdGFyL3VwbG9hZC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9mb3JtLWdyb3VwLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL2Zvcm0uanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvbGkuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvbG9hZGVyLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL21vZGFsLWxvYWRlci5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9tb2RhbC1tZXNzYWdlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL29wdGlvbnMvY2hhbmdlLXVzZXJuYW1lL2Zvcm0tbG9hZGluZy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9vcHRpb25zL2NoYW5nZS11c2VybmFtZS9mb3JtLWxvY2tlZC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9vcHRpb25zL2NoYW5nZS11c2VybmFtZS9mb3JtLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL29wdGlvbnMvY2hhbmdlLXVzZXJuYW1lL3Jvb3QuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvb3B0aW9ucy9mb3J1bS1vcHRpb25zLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL29wdGlvbnMvbmF2cy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9vcHRpb25zL3Jvb3QuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvb3B0aW9ucy9zaWduLWluLWNyZWRlbnRpYWxzL2NoYW5nZS1lbWFpbC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9vcHRpb25zL3NpZ24taW4tY3JlZGVudGlhbHMvY2hhbmdlLXBhc3N3b3JkLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL29wdGlvbnMvc2lnbi1pbi1jcmVkZW50aWFscy9yb290LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3BhbmVsLWxvYWRlci5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9wYW5lbC1tZXNzYWdlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3Byb2ZpbGUvSGVhZGVyLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3Byb2ZpbGUvYmFuLWRldGFpbHMuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvcHJvZmlsZS9mb2xsb3ctYnV0dG9uLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3Byb2ZpbGUvZm9sbG93ZXJzLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3Byb2ZpbGUvZm9sbG93cy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9wcm9maWxlL21vZGVyYXRpb24vYXZhdGFyLWNvbnRyb2xzLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3Byb2ZpbGUvbW9kZXJhdGlvbi9jaGFuZ2UtdXNlcm5hbWUuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvcHJvZmlsZS9tb2RlcmF0aW9uL2RlbGV0ZS1hY2NvdW50LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3Byb2ZpbGUvbW9kZXJhdGlvbi9uYXYuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvcHJvZmlsZS9uYXZzLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3Byb2ZpbGUvcm9vdC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9wcm9maWxlL3VzZXJuYW1lLWhpc3RvcnkuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvcmVnaXN0ZXItYnV0dG9uLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3JlZ2lzdGVyLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3JlcXVlc3QtYWN0aXZhdGlvbi1saW5rLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3JlcXVlc3QtcGFzc3dvcmQtcmVzZXQuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvcmVzZXQtcGFzc3dvcmQtZm9ybS5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy9zZWFyY2guanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvc2VsZWN0LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3NpZ24taW4uanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvc25hY2tiYXIuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlci1tZW51L2d1ZXN0LW5hdi5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy91c2VyLW1lbnUvcm9vdC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy91c2VyLW1lbnUvdXNlci1uYXYuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlci1zdGF0dXMuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlcm5hbWUtaGlzdG9yeS5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy91c2Vycy1saXN0L3Jvb3QuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlcnMtbGlzdC91c2VyLWNhcmQuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlcnMtbGlzdC91c2VyLXByZXZpZXcuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlcnMvYWN0aXZlLXBvc3RlcnMvbGlzdC1lbXB0eS5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy91c2Vycy9hY3RpdmUtcG9zdGVycy9saXN0LWl0ZW0uanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlcnMvYWN0aXZlLXBvc3RlcnMvbGlzdC1sb2FkaW5nLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3VzZXJzL2FjdGl2ZS1wb3N0ZXJzL2xpc3QuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvdXNlcnMvYWN0aXZlLXBvc3RlcnMvcm9vdC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy91c2Vycy9uYXZzLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3VzZXJzL3JhbmsvbGlzdC1sb2FkaW5nLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3VzZXJzL3JhbmsvbGlzdC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy91c2Vycy9yYW5rL3BhZ2VyLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3VzZXJzL3Jhbmsvcm9vdC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvY29tcG9uZW50cy91c2Vycy9yb290LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9jb21wb25lbnRzL3llcy1uby1zd2l0Y2guanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL2luZGV4LmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9yZWR1Y2Vycy9hdXRoLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9yZWR1Y2Vycy9wcm9maWxlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9yZWR1Y2Vycy9zbmFja2Jhci5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvcmVkdWNlcnMvdGljay5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvcmVkdWNlcnMvdXNlcm5hbWUtaGlzdG9yeS5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvcmVkdWNlcnMvdXNlcnMuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL2FqYXguanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL2F1dGguanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL2NhcHRjaGEuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL2luY2x1ZGUuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2UuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL21vYmlsZS1uYXZiYXItZHJvcGRvd24uanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL21vZGFsLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9zZXJ2aWNlcy9wYWdlLXRpdGxlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9zZXJ2aWNlcy9wb2xscy5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvc2VydmljZXMvc25hY2tiYXIuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3NlcnZpY2VzL3N0b3JlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy9zZXJ2aWNlcy96eGN2Ym4uanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3V0aWxzL2Jhbm5lZC1wYWdlLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy91dGlscy9iYXRjaC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvdXRpbHMvZmlsZS1zaXplLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy91dGlscy9tb3VudC1jb21wb25lbnQuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3V0aWxzL29yZGVyZWQtbGlzdC5qcyIsIi4uLy4uL21pc2Fnby9mcm9udGVuZC9zcmMvdXRpbHMvcmFuZG9tLmpzIiwiLi4vLi4vbWlzYWdvL2Zyb250ZW5kL3NyYy91dGlscy9yZXNldC1zY3JvbGwuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3V0aWxzL3JvdXRlZC1jb21wb25lbnQuanMiLCIuLi8uLi9taXNhZ28vZnJvbnRlbmQvc3JjL3V0aWxzL3ZhbGlkYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3pGYSxNQUFNLFdBQU4sTUFBTTtBQUNqQixXQURXLE1BQU0sR0FDSDswQkFESCxNQUFNOztBQUVmLFFBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLFFBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0dBQ3BCOztlQUpVLE1BQU07O21DQU1GLFdBQVcsRUFBRTtBQUMxQixVQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztBQUN0QixXQUFHLEVBQUUsV0FBVyxDQUFDLElBQUk7O0FBRXJCLFlBQUksRUFBRSxXQUFXLENBQUMsV0FBVzs7QUFFN0IsYUFBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO0FBQ3hCLGNBQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtPQUMzQixDQUFDLENBQUM7S0FDSjs7O3lCQUVJLE9BQU8sRUFBRTs7O0FBQ1osVUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7O0FBRXhCLFVBQUksU0FBUyxHQUFHLDBCQUFnQixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDcEUsZUFBUyxDQUFDLE9BQU8sQ0FBQyxVQUFBLFdBQVcsRUFBSTtBQUMvQixtQkFBVyxPQUFNLENBQUM7T0FDbkIsQ0FBQyxDQUFDO0tBQ0o7Ozs7Ozt3QkFHRyxHQUFHLEVBQUU7QUFDUCxhQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzdCOzs7d0JBRUcsR0FBRyxFQUFFLFFBQVEsRUFBRTtBQUNqQixVQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDakIsZUFBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQzNCLE1BQU07QUFDTCxlQUFPLFFBQVEsSUFBSSxTQUFTLENBQUM7T0FDOUI7S0FDRjs7O3dCQUVHLEdBQUcsRUFBRTtBQUNQLFVBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNqQixZQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLFlBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzFCLGVBQU8sS0FBSyxDQUFDO09BQ2QsTUFBTTtBQUNMLGVBQU8sU0FBUyxDQUFDO09BQ2xCO0tBQ0Y7OztTQS9DVSxNQUFNOzs7OztBQW1EbkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7OztBQUFDLEFBRzFCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTTs7O0FBQUMsa0JBR1IsTUFBTTs7Ozs7Ozs7OztrQkN4REcsV0FBVzs7Ozs7Ozs7Ozs7O0FBQXBCLFNBQVMsV0FBVyxHQUFHO0FBQ3BDLGlCQUFLLElBQUksQ0FBQyxnQkFBTyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0NBQzNDOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsTUFBTTtBQUNaLGFBQVcsRUFBRSxXQUFXO0NBQ3pCLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDSnFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFwQixTQUFTLFdBQVcsR0FBRztBQUNwQyxpQkFBSyxJQUFJLDBEQUF1QixDQUFDO0NBQ2xDOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsTUFBTTtBQUNaLGFBQVcsRUFBRSxXQUFXO0FBQ3hCLE9BQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQyxDQUFDOzs7Ozs7OztrQkNScUIsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXBCLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUMzQyxvQkFBUSxJQUFJLENBQUMsT0FBTyx3REFBMEIsQ0FBQztDQUNoRDs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLFNBQVM7QUFDZixhQUFXLEVBQUUsV0FBVztDQUN6QixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1JxQixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsZ0NBQU0sZ0JBTkMsT0FBTyxlQUVNLE1BQU0sQ0FJTCx1QkFBYSxFQUFFLG9CQUFvQixDQUFDLENBQUM7Q0FDM0Q7O0FBRUQsZ0JBQU8sY0FBYyxDQUFDO0FBQ3BCLE1BQUksRUFBRSx3QkFBd0I7QUFDOUIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsT0FBSyxFQUFFLE9BQU87Q0FDZixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1ZxQixXQUFXOzs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQzNDLE1BQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtBQUM5Qiw4QkFBZSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQ25EO0NBQ0Y7O0FBRUQsZ0JBQU8sY0FBYyxDQUFDO0FBQ3BCLE1BQUksRUFBRSxzQkFBc0I7QUFDNUIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsT0FBSyxFQUFFLE9BQU87Q0FDZixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1JxQixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQzNDLE1BQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtBQUM3QixrQ0FBTSxnQkFQRCxPQUFPLFFBQ0ssTUFBTSxDQU1GLGdCQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDbEQ7Q0FDRjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLCtCQUErQjtBQUNyQyxhQUFXLEVBQUUsV0FBVztBQUN4QixPQUFLLEVBQUUsT0FBTztDQUNmLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDWHFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQzNDLE1BQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRTtBQUMvQixtQ0FBTTtBQUNKLFVBQUksRUFBRSxnQkFBTyxHQUFHLENBQUMsWUFBWSxDQUFDO0FBQzlCLGVBQVMsZ0JBQVM7QUFDbEIsV0FBSyxFQUFFLFVBVEssS0FBSyxHQVNIO0tBQ2YsQ0FBQyxDQUFDO0dBQ0o7Q0FDRjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLG1CQUFtQjtBQUN6QixhQUFXLEVBQUUsV0FBVztBQUN4QixPQUFLLEVBQUUsT0FBTztDQUNmLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDYnFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFwQixTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDM0MsTUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUU7QUFDMUQsbUNBQU07QUFDSixVQUFJLEVBQUUsZ0JBQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVk7QUFDeEMsZUFBUyxFQUFFLGdCQVRSLE9BQU8sUUFDUyxNQUFNLENBUUMsZ0JBQVM7QUFDbkMsV0FBSyxFQUFFLFVBVEssS0FBSyxHQVNIO0tBQ2YsQ0FBQyxDQUFDO0dBQ0o7Q0FDRjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLG1CQUFtQjtBQUN6QixhQUFXLEVBQUUsV0FBVztBQUN4QixPQUFLLEVBQUUsMkJBQTJCO0NBQ25DLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDZnFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsTUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLCtCQUErQixDQUFDLEVBQUU7QUFDNUQsbUVBQTZCLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQ3RFO0NBQ0Y7O0FBRUQsZ0JBQU8sY0FBYyxDQUFDO0FBQ3BCLE1BQUksRUFBRSxtQ0FBbUM7QUFDekMsYUFBVyxFQUFFLFdBQVc7QUFDeEIsT0FBSyxFQUFFLE9BQU87Q0FDZixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1ZxQixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXBCLFNBQVMsV0FBVyxHQUFHO0FBQ3BDLE1BQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFO0FBQzNELGtFQUE0Qiw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztHQUNwRTtDQUNGOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsa0NBQWtDO0FBQ3hDLGFBQVcsRUFBRSxXQUFXO0FBQ3hCLE9BQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQyxDQUFDOzs7Ozs7OztrQkNWcUIsV0FBVzs7Ozs7Ozs7Ozs7Ozs7OztBQUFwQixTQUFTLFdBQVcsR0FBRztBQUNwQyxNQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsRUFBRTtBQUN4RCwrREFBeUIsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7R0FDOUQ7Q0FDRjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLCtCQUErQjtBQUNyQyxhQUFXLEVBQUUsV0FBVztBQUN4QixPQUFLLEVBQUUsT0FBTztDQUNmLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDVHFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsZ0NBQU0sZ0JBTkMsT0FBTyxZQUVHLE1BQU0sQ0FJRixXQUpkLFFBQVEsQ0FJZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0NBQ3BEOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsb0JBQW9CO0FBQzFCLGFBQVcsRUFBRSxXQUFXO0FBQ3hCLE9BQUssRUFBRSxVQUFVO0NBQ2xCLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDUnFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsZ0NBQU0sZ0JBTkMsT0FBTyxRQUVvQixNQUFNLENBSW5CLE9BSmQsUUFBUSxDQUlnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDcEQsZ0NBQU0sZ0JBUEMsT0FBTyxRQUVvQixNQUFNLENBS25CLE9BTEosZUFBZSxDQUtNLEVBQUUseUJBQXlCLENBQUMsQ0FBQztDQUNwRTs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLHFCQUFxQjtBQUMzQixhQUFXLEVBQUUsV0FBVztBQUN4QixPQUFLLEVBQUUsT0FBTztDQUNmLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDVnFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQzNDLE1BQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtBQUM5QixtQ0FBTTtBQUNKLFVBQUksRUFBRSxnQkFBTyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7QUFDbEMsZUFBUyxnQkFBTztBQUNoQixXQUFLLEVBQUUsVUFURyxLQUFLLEdBU0Q7S0FDZixDQUFDLENBQUM7R0FDSjtDQUNGOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsaUJBQWlCO0FBQ3ZCLGFBQVcsRUFBRSxXQUFXO0FBQ3hCLE9BQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQyxDQUFDOzs7Ozs7OztrQkNmcUIsV0FBVzs7Ozs7Ozs7Ozs7O0FBQXBCLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUMzQyxvQkFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0NBQ3pDOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsU0FBUztBQUNmLGFBQVcsRUFBRSxXQUFXO0NBQ3pCLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDUHFCLFdBQVc7Ozs7Ozs7Ozs7OztBQUFwQixTQUFTLFdBQVcsR0FBRztBQUNwQyx5QkFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Q0FDekI7O0FBRUQsZ0JBQU8sY0FBYyxDQUFDO0FBQ3BCLE1BQUksRUFBRSxlQUFlO0FBQ3JCLGFBQVcsRUFBRSxXQUFXO0NBQ3pCLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDUHFCLFdBQVc7Ozs7Ozs7Ozs7OztBQUFwQixTQUFTLFdBQVcsR0FBRztBQUNwQyxNQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLDhCQUE4QixDQUFDLENBQUM7QUFDdEUsTUFBSSxPQUFPLEVBQUU7QUFDWCxtQ0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7R0FDeEI7Q0FDRjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLFVBQVU7QUFDaEIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsUUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQyxDQUFDOzs7Ozs7OztrQkNYcUIsV0FBVzs7Ozs7Ozs7Ozs7O0FBQXBCLFNBQVMsV0FBVyxHQUFHO0FBQ3BDLE1BQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDckQsTUFBSSxPQUFPLEVBQUU7QUFDWCxvQkFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7R0FDckI7Q0FDRjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLE9BQU87QUFDYixhQUFXLEVBQUUsV0FBVztBQUN4QixRQUFNLEVBQUUsT0FBTztDQUNoQixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1hxQixXQUFXOzs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsbUJBQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztDQUN2Qzs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLFFBQVE7QUFDZCxhQUFXLEVBQUUsV0FBVztDQUN6QixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1BxQixXQUFXOzs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQzNDLHNCQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0NBQ2hEOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsWUFBWTtBQUNsQixhQUFXLEVBQUUsV0FBVztDQUN6QixDQUFDLENBQUM7Ozs7Ozs7O2tCQ0xxQixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFwQixTQUFTLFdBQVcsR0FBRztBQUNwQyxrQkFBTSxJQUFJLG9DQUFnQixDQUFDO0NBQzVCOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsT0FBTztBQUNiLGFBQVcsRUFBRSxXQUFXO0NBQ3pCLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDUnFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQzNDLGtCQUFNLFVBQVUsQ0FBQyxNQUFNLGtCQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDOUMscUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztBQUNqRCxpQkFBYSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQzs7QUFFOUMsVUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0dBQzVCLFFBVGUsWUFBWSxDQVNaLENBQUMsQ0FBQztDQUNuQjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLGNBQWM7QUFDcEIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsUUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQyxDQUFDOzs7Ozs7OztrQkNicUIsV0FBVzs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsTUFBSSxnQkFBTyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDekIsb0JBQU0sUUFBUSxDQUFDLGFBTFYsU0FBUyxFQUtXLGdCQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7R0FDbEQ7Q0FDRjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLDJCQUEyQjtBQUNqQyxhQUFXLEVBQUUsV0FBVztBQUN4QixPQUFLLEVBQUUsT0FBTztDQUNmLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDVnFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsa0JBQU0sVUFBVSxDQUFDLFNBQVMscUJBQVcsRUFBRSxDQUFDLENBQUM7Q0FDMUM7O0FBRUQsZ0JBQU8sY0FBYyxDQUFDO0FBQ3BCLE1BQUksRUFBRSxpQkFBaUI7QUFDdkIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsUUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQyxDQUFDOzs7Ozs7OztrQkNScUIsV0FBVzs7Ozs7Ozs7Ozs7Ozs7OztBQUFwQixTQUFTLFdBQVcsR0FBRztBQUNwQyxrQkFBTSxVQUFVLENBQUMsVUFBVSxnQ0FKWCxZQUFZLENBSXVCLENBQUM7Q0FDckQ7O0FBRUQsZ0JBQU8sY0FBYyxDQUFDO0FBQ3BCLE1BQUksRUFBRSxrQkFBa0I7QUFDeEIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsUUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQyxDQUFDOzs7Ozs7OztrQkNScUIsV0FBVzs7Ozs7Ozs7Ozs7Ozs7OztBQUFwQixTQUFTLFdBQVcsR0FBRztBQUNwQyxrQkFBTSxVQUFVLENBQUMsTUFBTSx3QkFKUCxZQUFZLENBSW1CLENBQUM7Q0FDakQ7O0FBRUQsZ0JBQU8sY0FBYyxDQUFDO0FBQ3BCLE1BQUksRUFBRSxjQUFjO0FBQ3BCLGFBQVcsRUFBRSxXQUFXO0FBQ3hCLFFBQU0sRUFBRSxPQUFPO0NBQ2hCLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDUnFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsa0JBQU0sVUFBVSxDQUFDLGtCQUFrQiw2QkFBVyxFQUFFLENBQUMsQ0FBQztDQUNuRDs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLDBCQUEwQjtBQUNoQyxhQUFXLEVBQUUsV0FBVztBQUN4QixRQUFNLEVBQUUsT0FBTztDQUNoQixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1JxQixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXBCLFNBQVMsV0FBVyxHQUFHO0FBQ3BDLGtCQUFNLFVBQVUsQ0FBQyxPQUFPLG1CQUFXLEVBQUUsQ0FBQyxDQUFDO0NBQ3hDOztBQUVELGdCQUFPLGNBQWMsQ0FBQztBQUNwQixNQUFJLEVBQUUsZUFBZTtBQUNyQixhQUFXLEVBQUUsV0FBVztBQUN4QixRQUFNLEVBQUUsT0FBTztDQUNoQixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1JxQixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXBCLFNBQVMsV0FBVyxHQUFHO0FBQ3BDLHFCQUFTLElBQUksaUJBQU8sQ0FBQztDQUN0Qjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLFVBQVU7QUFDaEIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsT0FBSyxFQUFFLE9BQU87Q0FDZixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1RxQixXQUFXOzs7Ozs7Ozs7Ozs7QUFBcEIsU0FBUyxXQUFXLEdBQUc7QUFDcEMsa0JBQU0sSUFBSSxFQUFFLENBQUM7Q0FDZDs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLE9BQU87QUFDYixhQUFXLEVBQUUsV0FBVztBQUN4QixRQUFNLEVBQUUsTUFBTTtDQUNmLENBQUMsQ0FBQzs7Ozs7Ozs7a0JDTHFCLFdBQVc7Ozs7Ozs7Ozs7Ozs7O0FBRm5DLElBQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxJQUFJOztBQUFDLEFBRWYsU0FBUyxXQUFXLEdBQUc7QUFDcEMsUUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFXO0FBQzVCLG9CQUFNLFFBQVEsQ0FBQyxVQVBWLE1BQU0sR0FPWSxDQUFDLENBQUM7R0FDMUIsRUFBRSxXQUFXLENBQUMsQ0FBQztDQUNqQjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLFlBQVk7QUFDbEIsYUFBVyxFQUFFLFdBQVc7QUFDeEIsT0FBSyxFQUFFLE9BQU87Q0FDZixDQUFDLENBQUM7Ozs7Ozs7O2tCQ1pxQixXQUFXOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXBCLFNBQVMsV0FBVyxHQUFHO0FBQ3BDLG1CQUFPLElBQUksbUJBQVMsQ0FBQztDQUN0Qjs7QUFFRCxnQkFBTyxjQUFjLENBQUM7QUFDcEIsTUFBSSxFQUFFLFFBQVE7QUFDZCxhQUFXLEVBQUUsV0FBVztDQUN6QixDQUFDLENBQUM7OztBQ1hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2pMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3ZDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbFNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ25EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QVEsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztDQUM5RCIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcblxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgc2V0VGltZW91dChkcmFpblF1ZXVlLCAwKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsImltcG9ydCBPcmRlcmVkTGlzdCBmcm9tICdtaXNhZ28vdXRpbHMvb3JkZXJlZC1saXN0JztcblxuZXhwb3J0IGNsYXNzIE1pc2FnbyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2luaXRpYWxpemVycyA9IFtdO1xuICAgIHRoaXMuX2NvbnRleHQgPSB7fTtcbiAgfVxuXG4gIGFkZEluaXRpYWxpemVyKGluaXRpYWxpemVyKSB7XG4gICAgdGhpcy5faW5pdGlhbGl6ZXJzLnB1c2goe1xuICAgICAga2V5OiBpbml0aWFsaXplci5uYW1lLFxuXG4gICAgICBpdGVtOiBpbml0aWFsaXplci5pbml0aWFsaXplcixcblxuICAgICAgYWZ0ZXI6IGluaXRpYWxpemVyLmFmdGVyLFxuICAgICAgYmVmb3JlOiBpbml0aWFsaXplci5iZWZvcmVcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQoY29udGV4dCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuXG4gICAgdmFyIGluaXRPcmRlciA9IG5ldyBPcmRlcmVkTGlzdCh0aGlzLl9pbml0aWFsaXplcnMpLm9yZGVyZWRWYWx1ZXMoKTtcbiAgICBpbml0T3JkZXIuZm9yRWFjaChpbml0aWFsaXplciA9PiB7XG4gICAgICBpbml0aWFsaXplcih0aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGNvbnRleHQgYWNjZXNzb3JzXG4gIGhhcyhrZXkpIHtcbiAgICByZXR1cm4gISF0aGlzLl9jb250ZXh0W2tleV07XG4gIH1cblxuICBnZXQoa2V5LCBmYWxsYmFjaykge1xuICAgIGlmICh0aGlzLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29udGV4dFtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2sgfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHBvcChrZXkpIHtcbiAgICBpZiAodGhpcy5oYXMoa2V5KSkge1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy5fY29udGV4dFtrZXldO1xuICAgICAgdGhpcy5fY29udGV4dFtrZXldID0gbnVsbDtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLy8gY3JlYXRlICBzaW5nbGV0b25cbnZhciBtaXNhZ28gPSBuZXcgTWlzYWdvKCk7XG5cbi8vIGV4cG9zZSBpdCBnbG9iYWxseVxuZ2xvYmFsLm1pc2FnbyA9IG1pc2FnbztcblxuLy8gYW5kIGV4cG9ydCBpdCBmb3IgdGVzdHMgYW5kIHN0dWZmXG5leHBvcnQgZGVmYXVsdCBtaXNhZ287XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuICBhamF4LmluaXQobWlzYWdvLmdldCgnQ1NSRl9DT09LSUVfTkFNRScpKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2FqYXgnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXJcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IGF1dGggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IG1vZGFsIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2RhbCc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcbmltcG9ydCBzdG9yYWdlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIGF1dGguaW5pdChzdG9yZSwgc3RvcmFnZSwgbW9kYWwpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnYXV0aCcsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplcixcbiAgYWZ0ZXI6ICdzdG9yZSdcbn0pOyIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBjYXB0Y2hhIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9jYXB0Y2hhJztcbmltcG9ydCBpbmNsdWRlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9pbmNsdWRlJztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcihjb250ZXh0KSB7XG4gIGNhcHRjaGEuaW5pdChjb250ZXh0LCBhamF4LCBpbmNsdWRlLCBzbmFja2Jhcik7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjYXB0Y2hhJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyXG59KTtcbiIsImltcG9ydCB7IGNvbm5lY3QgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgQXV0aE1lc3NhZ2UsIHsgc2VsZWN0IH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYXV0aC1tZXNzYWdlJztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIG1vdW50KGNvbm5lY3Qoc2VsZWN0KShBdXRoTWVzc2FnZSksICdhdXRoLW1lc3NhZ2UtbW91bnQnKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2NvbXBvbmVudDphdXRoLW1lc3NhZ2UnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBzaG93QmFubmVkUGFnZSBmcm9tICdtaXNhZ28vdXRpbHMvYmFubmVkLXBhZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcihjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0LmhhcygnQkFOX01FU1NBR0UnKSkge1xuICAgIHNob3dCYW5uZWRQYWdlKGNvbnRleHQuZ2V0KCdCQU5fTUVTU0FHRScpLCBmYWxzZSk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2NvbXBvbmVudDpiYW5lZC1wYWdlJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IENhdGVnb3JpZXMsIHsgc2VsZWN0IH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvY2F0ZWdvcmllcy9yb290JztcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoY29udGV4dCkge1xuICBpZiAoY29udGV4dC5oYXMoJ0NBVEVHT1JJRVMnKSkge1xuICAgIG1vdW50KGNvbm5lY3Qoc2VsZWN0KShDYXRlZ29yaWVzKSwgJ3BhZ2UtbW91bnQnKTtcbiAgfVxufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnY29tcG9uZW50OnJlc2V0LXBhc3N3b3JkLWZvcm0nLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBPcHRpb25zLCB7IHBhdGhzIH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvb3B0aW9ucy9yb290JztcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvcm91dGVkLWNvbXBvbmVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKGNvbnRleHQpIHtcbiAgaWYgKGNvbnRleHQuaGFzKCdVU0VSX09QVElPTlMnKSkge1xuICAgIG1vdW50KHtcbiAgICAgIHJvb3Q6IG1pc2Fnby5nZXQoJ1VTRVJDUF9VUkwnKSxcbiAgICAgIGNvbXBvbmVudDogT3B0aW9ucyxcbiAgICAgIHBhdGhzOiBwYXRocygpXG4gICAgfSk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2NvbXBvbmVudDpvcHRpb25zJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IFByb2ZpbGUsIHsgcGF0aHMsIHNlbGVjdCB9IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3Byb2ZpbGUvcm9vdCc7XG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgbW91bnQgZnJvbSAnbWlzYWdvL3V0aWxzL3JvdXRlZC1jb21wb25lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcihjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0LmhhcygnUFJPRklMRScpICYmIGNvbnRleHQuaGFzKCdQUk9GSUxFX1BBR0VTJykpIHtcbiAgICBtb3VudCh7XG4gICAgICByb290OiBtaXNhZ28uZ2V0KCdQUk9GSUxFJykuYWJzb2x1dGVfdXJsLFxuICAgICAgY29tcG9uZW50OiBjb25uZWN0KHNlbGVjdCkoUHJvZmlsZSksXG4gICAgICBwYXRoczogcGF0aHMoKVxuICAgIH0pO1xuICB9XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjb21wb25lbnQ6cHJvZmlsZScsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplcixcbiAgYWZ0ZXI6ICdyZWR1Y2VyOnByb2ZpbGUtZGVoeWRyYXRlJ1xufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgUmVxdWVzdEFjdGl2YXRpb25MaW5rIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3JlcXVlc3QtYWN0aXZhdGlvbi1saW5rJztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVxdWVzdC1hY3RpdmF0aW9uLWxpbmstbW91bnQnKSkge1xuICAgIG1vdW50KFJlcXVlc3RBY3RpdmF0aW9uTGluaywgJ3JlcXVlc3QtYWN0aXZhdGlvbi1saW5rLW1vdW50JywgZmFsc2UpO1xuICB9XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjb21wb25lbnQ6cmVxdWVzdC1hY3RpdmF0aW9uLWxpbmsnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBSZXF1ZXN0UGFzc3dvcmRSZXNldCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9yZXF1ZXN0LXBhc3N3b3JkLXJlc2V0JztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVxdWVzdC1wYXNzd29yZC1yZXNldC1tb3VudCcpKSB7XG4gICAgbW91bnQoUmVxdWVzdFBhc3N3b3JkUmVzZXQsICdyZXF1ZXN0LXBhc3N3b3JkLXJlc2V0LW1vdW50JywgZmFsc2UpO1xuICB9XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjb21wb25lbnQ6cmVxdWVzdC1wYXNzd29yZC1yZXNldCcsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplcixcbiAgYWZ0ZXI6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IFJlc2V0UGFzc3dvcmRGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3Jlc2V0LXBhc3N3b3JkLWZvcm0nO1xuaW1wb3J0IG1vdW50IGZyb20gJ21pc2Fnby91dGlscy9tb3VudC1jb21wb25lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldC1wYXNzd29yZC1mb3JtLW1vdW50JykpIHtcbiAgICBtb3VudChSZXNldFBhc3N3b3JkRm9ybSwgJ3Jlc2V0LXBhc3N3b3JkLWZvcm0tbW91bnQnLCBmYWxzZSk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2NvbXBvbmVudDpyZXNldC1wYXNzd29yZC1mb3JtJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHsgU25hY2tiYXIsIHNlbGVjdCB9IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3NuYWNrYmFyJztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvbW91bnQtY29tcG9uZW50JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIG1vdW50KGNvbm5lY3Qoc2VsZWN0KShTbmFja2JhciksICdzbmFja2Jhci1tb3VudCcpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnY29tcG9uZW50OnNuYWNrYmFyJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3NuYWNrYmFyJ1xufSk7XG4iLCJpbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHsgVXNlck1lbnUsIENvbXBhY3RVc2VyTWVudSwgc2VsZWN0IH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlci1tZW51L3Jvb3QnO1xuaW1wb3J0IG1vdW50IGZyb20gJ21pc2Fnby91dGlscy9tb3VudC1jb21wb25lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgbW91bnQoY29ubmVjdChzZWxlY3QpKFVzZXJNZW51KSwgJ3VzZXItbWVudS1tb3VudCcpO1xuICBtb3VudChjb25uZWN0KHNlbGVjdCkoQ29tcGFjdFVzZXJNZW51KSwgJ3VzZXItbWVudS1jb21wYWN0LW1vdW50Jyk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjb21wb25lbnQ6dXNlci1tZW51JyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBhZnRlcjogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgVXNlcnMsIHsgcGF0aHMgfSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy91c2Vycy9yb290JztcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBtb3VudCBmcm9tICdtaXNhZ28vdXRpbHMvcm91dGVkLWNvbXBvbmVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKGNvbnRleHQpIHtcbiAgaWYgKGNvbnRleHQuaGFzKCdVU0VSU19MSVNUUycpKSB7XG4gICAgbW91bnQoe1xuICAgICAgcm9vdDogbWlzYWdvLmdldCgnVVNFUlNfTElTVF9VUkwnKSxcbiAgICAgIGNvbXBvbmVudDogVXNlcnMsXG4gICAgICBwYXRoczogcGF0aHMoKVxuICAgIH0pO1xuICB9XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdjb21wb25lbnQ6dXNlcnMnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBpbmNsdWRlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9pbmNsdWRlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoY29udGV4dCkge1xuICBpbmNsdWRlLmluaXQoY29udGV4dC5nZXQoJ1NUQVRJQ19VUkwnKSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdpbmNsdWRlJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBzdG9yYWdlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIHN0b3JhZ2UuaW5pdCgnbWlzYWdvXycpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnbG9jYWwtc3RvcmFnZScsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplclxufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgZHJvcGRvd24gZnJvbSAnbWlzYWdvL3NlcnZpY2VzL21vYmlsZS1uYXZiYXItZHJvcGRvd24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9iaWxlLW5hdmJhci1kcm9wZG93bi1tb3VudCcpO1xuICBpZiAoZWxlbWVudCkge1xuICAgIGRyb3Bkb3duLmluaXQoZWxlbWVudCk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ2Ryb3Bkb3duJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBiZWZvcmU6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IG1vZGFsIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2RhbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1tb3VudCcpO1xuICBpZiAoZWxlbWVudCkge1xuICAgIG1vZGFsLmluaXQoZWxlbWVudCk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ21vZGFsJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBiZWZvcmU6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgbW9tZW50LmxvY2FsZSgkKCdodG1sJykuYXR0cignbGFuZycpKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ21vbWVudCcsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplclxufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgdGl0bGUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3BhZ2UtdGl0bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcihjb250ZXh0KSB7XG4gIHRpdGxlLmluaXQoY29udGV4dC5nZXQoJ1NFVFRJTkdTJykuZm9ydW1fbmFtZSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdwYWdlLXRpdGxlJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInO1xuaW1wb3J0IHBvbGxzIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9wb2xscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuICBwb2xscy5pbml0KGFqYXgsIHNuYWNrYmFyKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ3BvbGxzJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCByZWR1Y2VyLCB7IGluaXRpYWxTdGF0ZSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy9hdXRoJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcihjb250ZXh0KSB7XG4gIHN0b3JlLmFkZFJlZHVjZXIoJ2F1dGgnLCByZWR1Y2VyLCBPYmplY3QuYXNzaWduKHtcbiAgICAnaXNBdXRoZW50aWNhdGVkJzogY29udGV4dC5nZXQoJ2lzQXV0aGVudGljYXRlZCcpLFxuICAgICdpc0Fub255bW91cyc6ICFjb250ZXh0LmdldCgnaXNBdXRoZW50aWNhdGVkJyksXG5cbiAgICAndXNlcic6IGNvbnRleHQuZ2V0KCd1c2VyJylcbiAgfSwgaW5pdGlhbFN0YXRlKSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdyZWR1Y2VyOmF1dGgnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGJlZm9yZTogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgeyBkZWh5ZHJhdGUgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvcHJvZmlsZSc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIGlmIChtaXNhZ28uaGFzKCdQUk9GSUxFJykpIHtcbiAgICBzdG9yZS5kaXNwYXRjaChkZWh5ZHJhdGUobWlzYWdvLmdldCgnUFJPRklMRScpKSk7XG4gIH1cbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ3JlZHVjZXI6cHJvZmlsZS1kZWh5ZHJhdGUnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCByZWR1Y2VyIGZyb20gJ21pc2Fnby9yZWR1Y2Vycy9wcm9maWxlJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgc3RvcmUuYWRkUmVkdWNlcigncHJvZmlsZScsIHJlZHVjZXIsIHt9KTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ3JlZHVjZXI6cHJvZmlsZScsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplcixcbiAgYmVmb3JlOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCByZWR1Y2VyLCB7IGluaXRpYWxTdGF0ZSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy9zbmFja2Jhcic7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIHN0b3JlLmFkZFJlZHVjZXIoJ3NuYWNrYmFyJywgcmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ3JlZHVjZXI6c25hY2tiYXInLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGJlZm9yZTogJ3N0b3JlJ1xufSk7XG4iLCJpbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgcmVkdWNlciwgeyBpbml0aWFsU3RhdGUgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvdGljayc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIHN0b3JlLmFkZFJlZHVjZXIoJ3RpY2snLCByZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAncmVkdWNlcjp0aWNrJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBiZWZvcmU6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHJlZHVjZXIgZnJvbSAnbWlzYWdvL3JlZHVjZXJzL3VzZXJuYW1lLWhpc3RvcnknO1xuaW1wb3J0IHN0b3JlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zdG9yZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuICBzdG9yZS5hZGRSZWR1Y2VyKCd1c2VybmFtZS1oaXN0b3J5JywgcmVkdWNlciwgW10pO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAncmVkdWNlcjp1c2VybmFtZS1oaXN0b3J5JyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBiZWZvcmU6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHJlZHVjZXIgZnJvbSAnbWlzYWdvL3JlZHVjZXJzL3VzZXJzJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgc3RvcmUuYWRkUmVkdWNlcigndXNlcnMnLCByZWR1Y2VyLCBbXSk7XG59XG5cbm1pc2Fnby5hZGRJbml0aWFsaXplcih7XG4gIG5hbWU6ICdyZWR1Y2VyOnVzZXJzJyxcbiAgaW5pdGlhbGl6ZXI6IGluaXRpYWxpemVyLFxuICBiZWZvcmU6ICdzdG9yZSdcbn0pO1xuIiwiaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIHNuYWNrYmFyLmluaXQoc3RvcmUpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnc25hY2tiYXInLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbml0aWFsaXplcigpIHtcbiAgc3RvcmUuaW5pdCgpO1xufVxuXG5taXNhZ28uYWRkSW5pdGlhbGl6ZXIoe1xuICBuYW1lOiAnc3RvcmUnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGJlZm9yZTogJ19lbmQnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCB7IGRvVGljayB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy90aWNrJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5jb25zdCBUSUNLX1BFUklPRCA9IDUwICogMTAwMDsgLy9kbyB0aGUgdGljayBldmVyeSA1MHNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5pdGlhbGl6ZXIoKSB7XG4gIHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpIHtcbiAgICBzdG9yZS5kaXNwYXRjaChkb1RpY2soKSk7XG4gIH0sIFRJQ0tfUEVSSU9EKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ3RpY2stc3RhcnQnLFxuICBpbml0aWFsaXplcjogaW5pdGlhbGl6ZXIsXG4gIGFmdGVyOiAnc3RvcmUnXG59KTtcbiIsImltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBpbmNsdWRlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9pbmNsdWRlJztcbmltcG9ydCB6eGN2Ym4gZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3p4Y3Zibic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGluaXRpYWxpemVyKCkge1xuICB6eGN2Ym4uaW5pdChpbmNsdWRlKTtcbn1cblxubWlzYWdvLmFkZEluaXRpYWxpemVyKHtcbiAgbmFtZTogJ3p4Y3ZibicsXG4gIGluaXRpYWxpemVyOiBpbml0aWFsaXplclxufSk7XG4iLCJ2YXIgcFNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuL2xpYi9rZXlzLmpzJyk7XG52YXIgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2xpYi9pc19hcmd1bWVudHMuanMnKTtcblxudmFyIGRlZXBFcXVhbCA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG9wdHMpIHtcbiAgaWYgKCFvcHRzKSBvcHRzID0ge307XG4gIC8vIDcuMS4gQWxsIGlkZW50aWNhbCB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGFzIGRldGVybWluZWQgYnkgPT09LlxuICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkge1xuICAgIHJldHVybiB0cnVlO1xuXG4gIH0gZWxzZSBpZiAoYWN0dWFsIGluc3RhbmNlb2YgRGF0ZSAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gYWN0dWFsLmdldFRpbWUoKSA9PT0gZXhwZWN0ZWQuZ2V0VGltZSgpO1xuXG4gIC8vIDcuMy4gT3RoZXIgcGFpcnMgdGhhdCBkbyBub3QgYm90aCBwYXNzIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JyxcbiAgLy8gZXF1aXZhbGVuY2UgaXMgZGV0ZXJtaW5lZCBieSA9PS5cbiAgfSBlbHNlIGlmICghYWN0dWFsIHx8ICFleHBlY3RlZCB8fCB0eXBlb2YgYWN0dWFsICE9ICdvYmplY3QnICYmIHR5cGVvZiBleHBlY3RlZCAhPSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvcHRzLnN0cmljdCA/IGFjdHVhbCA9PT0gZXhwZWN0ZWQgOiBhY3R1YWwgPT0gZXhwZWN0ZWQ7XG5cbiAgLy8gNy40LiBGb3IgYWxsIG90aGVyIE9iamVjdCBwYWlycywgaW5jbHVkaW5nIEFycmF5IG9iamVjdHMsIGVxdWl2YWxlbmNlIGlzXG4gIC8vIGRldGVybWluZWQgYnkgaGF2aW5nIHRoZSBzYW1lIG51bWJlciBvZiBvd25lZCBwcm9wZXJ0aWVzIChhcyB2ZXJpZmllZFxuICAvLyB3aXRoIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCksIHRoZSBzYW1lIHNldCBvZiBrZXlzXG4gIC8vIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLCBlcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnlcbiAgLy8gY29ycmVzcG9uZGluZyBrZXksIGFuZCBhbiBpZGVudGljYWwgJ3Byb3RvdHlwZScgcHJvcGVydHkuIE5vdGU6IHRoaXNcbiAgLy8gYWNjb3VudHMgZm9yIGJvdGggbmFtZWQgYW5kIGluZGV4ZWQgcHJvcGVydGllcyBvbiBBcnJheXMuXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG9iakVxdWl2KGFjdHVhbCwgZXhwZWN0ZWQsIG9wdHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc0J1ZmZlciAoeCkge1xuICBpZiAoIXggfHwgdHlwZW9mIHggIT09ICdvYmplY3QnIHx8IHR5cGVvZiB4Lmxlbmd0aCAhPT0gJ251bWJlcicpIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB4LmNvcHkgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHguc2xpY2UgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHgubGVuZ3RoID4gMCAmJiB0eXBlb2YgeFswXSAhPT0gJ251bWJlcicpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG9iakVxdWl2KGEsIGIsIG9wdHMpIHtcbiAgdmFyIGksIGtleTtcbiAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGEpIHx8IGlzVW5kZWZpbmVkT3JOdWxsKGIpKVxuICAgIHJldHVybiBmYWxzZTtcbiAgLy8gYW4gaWRlbnRpY2FsICdwcm90b3R5cGUnIHByb3BlcnR5LlxuICBpZiAoYS5wcm90b3R5cGUgIT09IGIucHJvdG90eXBlKSByZXR1cm4gZmFsc2U7XG4gIC8vfn5+SSd2ZSBtYW5hZ2VkIHRvIGJyZWFrIE9iamVjdC5rZXlzIHRocm91Z2ggc2NyZXd5IGFyZ3VtZW50cyBwYXNzaW5nLlxuICAvLyAgIENvbnZlcnRpbmcgdG8gYXJyYXkgc29sdmVzIHRoZSBwcm9ibGVtLlxuICBpZiAoaXNBcmd1bWVudHMoYSkpIHtcbiAgICBpZiAoIWlzQXJndW1lbnRzKGIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGEgPSBwU2xpY2UuY2FsbChhKTtcbiAgICBiID0gcFNsaWNlLmNhbGwoYik7XG4gICAgcmV0dXJuIGRlZXBFcXVhbChhLCBiLCBvcHRzKTtcbiAgfVxuICBpZiAoaXNCdWZmZXIoYSkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKGIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIga2EgPSBvYmplY3RLZXlzKGEpLFxuICAgICAgICBrYiA9IG9iamVjdEtleXMoYik7XG4gIH0gY2F0Y2ggKGUpIHsvL2hhcHBlbnMgd2hlbiBvbmUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgdGhlIG90aGVyIGlzbid0XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoa2V5cyBpbmNvcnBvcmF0ZXNcbiAgLy8gaGFzT3duUHJvcGVydHkpXG4gIGlmIChrYS5sZW5ndGggIT0ga2IubGVuZ3RoKVxuICAgIHJldHVybiBmYWxzZTtcbiAgLy90aGUgc2FtZSBzZXQgb2Yga2V5cyAoYWx0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIG9yZGVyKSxcbiAga2Euc29ydCgpO1xuICBrYi5zb3J0KCk7XG4gIC8vfn5+Y2hlYXAga2V5IHRlc3RcbiAgZm9yIChpID0ga2EubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoa2FbaV0gIT0ga2JbaV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy9lcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkgY29ycmVzcG9uZGluZyBrZXksIGFuZFxuICAvL35+fnBvc3NpYmx5IGV4cGVuc2l2ZSBkZWVwIHRlc3RcbiAgZm9yIChpID0ga2EubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBrZXkgPSBrYVtpXTtcbiAgICBpZiAoIWRlZXBFcXVhbChhW2tleV0sIGJba2V5XSwgb3B0cykpIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHlwZW9mIGEgPT09IHR5cGVvZiBiO1xufVxuIiwidmFyIHN1cHBvcnRzQXJndW1lbnRzQ2xhc3MgPSAoZnVuY3Rpb24oKXtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudHMpXG59KSgpID09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBzdXBwb3J0c0FyZ3VtZW50c0NsYXNzID8gc3VwcG9ydGVkIDogdW5zdXBwb3J0ZWQ7XG5cbmV4cG9ydHMuc3VwcG9ydGVkID0gc3VwcG9ydGVkO1xuZnVuY3Rpb24gc3VwcG9ydGVkKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG59O1xuXG5leHBvcnRzLnVuc3VwcG9ydGVkID0gdW5zdXBwb3J0ZWQ7XG5mdW5jdGlvbiB1bnN1cHBvcnRlZChvYmplY3Qpe1xuICByZXR1cm4gb2JqZWN0ICYmXG4gICAgdHlwZW9mIG9iamVjdCA9PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiBvYmplY3QubGVuZ3RoID09ICdudW1iZXInICYmXG4gICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ2NhbGxlZScpICYmXG4gICAgIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsICdjYWxsZWUnKSB8fFxuICAgIGZhbHNlO1xufTtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBPYmplY3Qua2V5cyA9PT0gJ2Z1bmN0aW9uJ1xuICA/IE9iamVjdC5rZXlzIDogc2hpbTtcblxuZXhwb3J0cy5zaGltID0gc2hpbTtcbmZ1bmN0aW9uIHNoaW0gKG9iaikge1xuICB2YXIga2V5cyA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gb2JqKSBrZXlzLnB1c2goa2V5KTtcbiAgcmV0dXJuIGtleXM7XG59XG4iLCIvKipcbiAqIEluZGljYXRlcyB0aGF0IG5hdmlnYXRpb24gd2FzIGNhdXNlZCBieSBhIGNhbGwgdG8gaGlzdG9yeS5wdXNoLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG52YXIgUFVTSCA9ICdQVVNIJztcblxuZXhwb3J0cy5QVVNIID0gUFVTSDtcbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgbmF2aWdhdGlvbiB3YXMgY2F1c2VkIGJ5IGEgY2FsbCB0byBoaXN0b3J5LnJlcGxhY2UuXG4gKi9cbnZhciBSRVBMQUNFID0gJ1JFUExBQ0UnO1xuXG5leHBvcnRzLlJFUExBQ0UgPSBSRVBMQUNFO1xuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCBuYXZpZ2F0aW9uIHdhcyBjYXVzZWQgYnkgc29tZSBvdGhlciBhY3Rpb24gc3VjaFxuICogYXMgdXNpbmcgYSBicm93c2VyJ3MgYmFjay9mb3J3YXJkIGJ1dHRvbnMgYW5kL29yIG1hbnVhbGx5IG1hbmlwdWxhdGluZ1xuICogdGhlIFVSTCBpbiBhIGJyb3dzZXIncyBsb2NhdGlvbiBiYXIuIFRoaXMgaXMgdGhlIGRlZmF1bHQuXG4gKlxuICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3dFdmVudEhhbmRsZXJzL29ucG9wc3RhdGVcbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICovXG52YXIgUE9QID0gJ1BPUCc7XG5cbmV4cG9ydHMuUE9QID0gUE9QO1xuZXhwb3J0c1snZGVmYXVsdCddID0ge1xuICBQVVNIOiBQVVNILFxuICBSRVBMQUNFOiBSRVBMQUNFLFxuICBQT1A6IFBPUFxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMubG9vcEFzeW5jID0gbG9vcEFzeW5jO1xuXG5mdW5jdGlvbiBsb29wQXN5bmModHVybnMsIHdvcmssIGNhbGxiYWNrKSB7XG4gIHZhciBjdXJyZW50VHVybiA9IDA7XG4gIHZhciBpc0RvbmUgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBkb25lKCkge1xuICAgIGlzRG9uZSA9IHRydWU7XG4gICAgY2FsbGJhY2suYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgaWYgKGlzRG9uZSkgcmV0dXJuO1xuXG4gICAgaWYgKGN1cnJlbnRUdXJuIDwgdHVybnMpIHtcbiAgICAgIHdvcmsuY2FsbCh0aGlzLCBjdXJyZW50VHVybisrLCBuZXh0LCBkb25lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9uZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfVxuXG4gIG5leHQoKTtcbn0iLCIvKmVzbGludC1kaXNhYmxlIG5vLWVtcHR5ICovXG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLnNhdmVTdGF0ZSA9IHNhdmVTdGF0ZTtcbmV4cG9ydHMucmVhZFN0YXRlID0gcmVhZFN0YXRlO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfd2FybmluZyA9IHJlcXVpcmUoJ3dhcm5pbmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG52YXIgS2V5UHJlZml4ID0gJ0BASGlzdG9yeS8nO1xudmFyIFF1b3RhRXhjZWVkZWRFcnJvciA9ICdRdW90YUV4Y2VlZGVkRXJyb3InO1xudmFyIFNlY3VyaXR5RXJyb3IgPSAnU2VjdXJpdHlFcnJvcic7XG5cbmZ1bmN0aW9uIGNyZWF0ZUtleShrZXkpIHtcbiAgcmV0dXJuIEtleVByZWZpeCArIGtleTtcbn1cblxuZnVuY3Rpb24gc2F2ZVN0YXRlKGtleSwgc3RhdGUpIHtcbiAgdHJ5IHtcbiAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShjcmVhdGVLZXkoa2V5KSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IubmFtZSA9PT0gU2VjdXJpdHlFcnJvcikge1xuICAgICAgLy8gQmxvY2tpbmcgY29va2llcyBpbiBDaHJvbWUvRmlyZWZveC9TYWZhcmkgdGhyb3dzIFNlY3VyaXR5RXJyb3Igb24gYW55XG4gICAgICAvLyBhdHRlbXB0IHRvIGFjY2VzcyB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gX3dhcm5pbmcyWydkZWZhdWx0J10oZmFsc2UsICdbaGlzdG9yeV0gVW5hYmxlIHRvIHNhdmUgc3RhdGU7IHNlc3Npb25TdG9yYWdlIGlzIG5vdCBhdmFpbGFibGUgZHVlIHRvIHNlY3VyaXR5IHNldHRpbmdzJykgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IubmFtZSA9PT0gUXVvdGFFeGNlZWRlZEVycm9yICYmIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIFNhZmFyaSBcInByaXZhdGUgbW9kZVwiIHRocm93cyBRdW90YUV4Y2VlZGVkRXJyb3IuXG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gX3dhcm5pbmcyWydkZWZhdWx0J10oZmFsc2UsICdbaGlzdG9yeV0gVW5hYmxlIHRvIHNhdmUgc3RhdGU7IHNlc3Npb25TdG9yYWdlIGlzIG5vdCBhdmFpbGFibGUgaW4gU2FmYXJpIHByaXZhdGUgbW9kZScpIDogdW5kZWZpbmVkO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZFN0YXRlKGtleSkge1xuICB2YXIganNvbiA9IHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICBqc29uID0gd2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oY3JlYXRlS2V5KGtleSkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvci5uYW1lID09PSBTZWN1cml0eUVycm9yKSB7XG4gICAgICAvLyBCbG9ja2luZyBjb29raWVzIGluIENocm9tZS9GaXJlZm94L1NhZmFyaSB0aHJvd3MgU2VjdXJpdHlFcnJvciBvbiBhbnlcbiAgICAgIC8vIGF0dGVtcHQgdG8gYWNjZXNzIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBfd2FybmluZzJbJ2RlZmF1bHQnXShmYWxzZSwgJ1toaXN0b3J5XSBVbmFibGUgdG8gcmVhZCBzdGF0ZTsgc2Vzc2lvblN0b3JhZ2UgaXMgbm90IGF2YWlsYWJsZSBkdWUgdG8gc2VjdXJpdHkgc2V0dGluZ3MnKSA6IHVuZGVmaW5lZDtcblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgaWYgKGpzb24pIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvbik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIElnbm9yZSBpbnZhbGlkIEpTT04uXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5hZGRFdmVudExpc3RlbmVyID0gYWRkRXZlbnRMaXN0ZW5lcjtcbmV4cG9ydHMucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXI7XG5leHBvcnRzLmdldEhhc2hQYXRoID0gZ2V0SGFzaFBhdGg7XG5leHBvcnRzLnJlcGxhY2VIYXNoUGF0aCA9IHJlcGxhY2VIYXNoUGF0aDtcbmV4cG9ydHMuZ2V0V2luZG93UGF0aCA9IGdldFdpbmRvd1BhdGg7XG5leHBvcnRzLmdvID0gZ287XG5leHBvcnRzLmdldFVzZXJDb25maXJtYXRpb24gPSBnZXRVc2VyQ29uZmlybWF0aW9uO1xuZXhwb3J0cy5zdXBwb3J0c0hpc3RvcnkgPSBzdXBwb3J0c0hpc3Rvcnk7XG5leHBvcnRzLnN1cHBvcnRzR29XaXRob3V0UmVsb2FkVXNpbmdIYXNoID0gc3VwcG9ydHNHb1dpdGhvdXRSZWxvYWRVc2luZ0hhc2g7XG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnQsIGxpc3RlbmVyKSB7XG4gIGlmIChub2RlLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5hdHRhY2hFdmVudCgnb24nICsgZXZlbnQsIGxpc3RlbmVyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50LCBsaXN0ZW5lcikge1xuICBpZiAobm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKSB7XG4gICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lciwgZmFsc2UpO1xuICB9IGVsc2Uge1xuICAgIG5vZGUuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50LCBsaXN0ZW5lcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SGFzaFBhdGgoKSB7XG4gIC8vIFdlIGNhbid0IHVzZSB3aW5kb3cubG9jYXRpb24uaGFzaCBoZXJlIGJlY2F1c2UgaXQncyBub3RcbiAgLy8gY29uc2lzdGVudCBhY3Jvc3MgYnJvd3NlcnMgLSBGaXJlZm94IHdpbGwgcHJlLWRlY29kZSBpdCFcbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcjJylbMV0gfHwgJyc7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VIYXNoUGF0aChwYXRoKSB7XG4gIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKyAnIycgKyBwYXRoKTtcbn1cblxuZnVuY3Rpb24gZ2V0V2luZG93UGF0aCgpIHtcbiAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKyB3aW5kb3cubG9jYXRpb24uaGFzaDtcbn1cblxuZnVuY3Rpb24gZ28obikge1xuICBpZiAobikgd2luZG93Lmhpc3RvcnkuZ28obik7XG59XG5cbmZ1bmN0aW9uIGdldFVzZXJDb25maXJtYXRpb24obWVzc2FnZSwgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sod2luZG93LmNvbmZpcm0obWVzc2FnZSkpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgSFRNTDUgaGlzdG9yeSBBUEkgaXMgc3VwcG9ydGVkLiBUYWtlbiBmcm9tIE1vZGVybml6ci5cbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vTW9kZXJuaXpyL01vZGVybml6ci9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKiBodHRwczovL2dpdGh1Yi5jb20vTW9kZXJuaXpyL01vZGVybml6ci9ibG9iL21hc3Rlci9mZWF0dXJlLWRldGVjdHMvaGlzdG9yeS5qc1xuICogY2hhbmdlZCB0byBhdm9pZCBmYWxzZSBuZWdhdGl2ZXMgZm9yIFdpbmRvd3MgUGhvbmVzOiBodHRwczovL2dpdGh1Yi5jb20vcmFja3QvcmVhY3Qtcm91dGVyL2lzc3Vlcy81ODZcbiAqL1xuXG5mdW5jdGlvbiBzdXBwb3J0c0hpc3RvcnkoKSB7XG4gIHZhciB1YSA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG4gIGlmICgodWEuaW5kZXhPZignQW5kcm9pZCAyLicpICE9PSAtMSB8fCB1YS5pbmRleE9mKCdBbmRyb2lkIDQuMCcpICE9PSAtMSkgJiYgdWEuaW5kZXhPZignTW9iaWxlIFNhZmFyaScpICE9PSAtMSAmJiB1YS5pbmRleE9mKCdDaHJvbWUnKSA9PT0gLTEgJiYgdWEuaW5kZXhPZignV2luZG93cyBQaG9uZScpID09PSAtMSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBGSVhNRTogV29yayBhcm91bmQgb3VyIGJyb3dzZXIgaGlzdG9yeSBub3Qgd29ya2luZyBjb3JyZWN0bHkgb24gQ2hyb21lXG4gIC8vIGlPUzogaHR0cHM6Ly9naXRodWIuY29tL3JhY2t0L3JlYWN0LXJvdXRlci9pc3N1ZXMvMjU2NVxuICBpZiAodWEuaW5kZXhPZignQ3JpT1MnKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHdpbmRvdy5oaXN0b3J5ICYmICdwdXNoU3RhdGUnIGluIHdpbmRvdy5oaXN0b3J5O1xufVxuXG4vKipcbiAqIFJldHVybnMgZmFsc2UgaWYgdXNpbmcgZ28obikgd2l0aCBoYXNoIGhpc3RvcnkgY2F1c2VzIGEgZnVsbCBwYWdlIHJlbG9hZC5cbiAqL1xuXG5mdW5jdGlvbiBzdXBwb3J0c0dvV2l0aG91dFJlbG9hZFVzaW5nSGFzaCgpIHtcbiAgdmFyIHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgcmV0dXJuIHVhLmluZGV4T2YoJ0ZpcmVmb3gnKSA9PT0gLTE7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xudmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5leHBvcnRzLmNhblVzZURPTSA9IGNhblVzZURPTTsiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJlKCdpbnZhcmlhbnQnKTtcblxudmFyIF9pbnZhcmlhbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW52YXJpYW50KTtcblxudmFyIF9BY3Rpb25zID0gcmVxdWlyZSgnLi9BY3Rpb25zJyk7XG5cbnZhciBfRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBfRE9NVXRpbHMgPSByZXF1aXJlKCcuL0RPTVV0aWxzJyk7XG5cbnZhciBfRE9NU3RhdGVTdG9yYWdlID0gcmVxdWlyZSgnLi9ET01TdGF0ZVN0b3JhZ2UnKTtcblxudmFyIF9jcmVhdGVET01IaXN0b3J5ID0gcmVxdWlyZSgnLi9jcmVhdGVET01IaXN0b3J5Jyk7XG5cbnZhciBfY3JlYXRlRE9NSGlzdG9yeTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVET01IaXN0b3J5KTtcblxudmFyIF9wYXJzZVBhdGggPSByZXF1aXJlKCcuL3BhcnNlUGF0aCcpO1xuXG52YXIgX3BhcnNlUGF0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXJzZVBhdGgpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBoaXN0b3J5IG9iamVjdCB0aGF0IHVzZXMgSFRNTDUncyBoaXN0b3J5IEFQSVxuICogKHB1c2hTdGF0ZSwgcmVwbGFjZVN0YXRlLCBhbmQgdGhlIHBvcHN0YXRlIGV2ZW50KSB0byBtYW5hZ2UgaGlzdG9yeS5cbiAqIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIG1ldGhvZCBvZiBtYW5hZ2luZyBoaXN0b3J5IGluIGJyb3dzZXJzIGJlY2F1c2VcbiAqIGl0IHByb3ZpZGVzIHRoZSBjbGVhbmVzdCBVUkxzLlxuICpcbiAqIE5vdGU6IEluIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgdGhlIEhUTUw1IGhpc3RvcnkgQVBJIGZ1bGxcbiAqIHBhZ2UgcmVsb2FkcyB3aWxsIGJlIHVzZWQgdG8gcHJlc2VydmUgVVJMcy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQnJvd3Nlckhpc3RvcnkoKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgIV9FeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gX2ludmFyaWFudDJbJ2RlZmF1bHQnXShmYWxzZSwgJ0Jyb3dzZXIgaGlzdG9yeSBuZWVkcyBhIERPTScpIDogX2ludmFyaWFudDJbJ2RlZmF1bHQnXShmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGZvcmNlUmVmcmVzaCA9IG9wdGlvbnMuZm9yY2VSZWZyZXNoO1xuXG4gIHZhciBpc1N1cHBvcnRlZCA9IF9ET01VdGlscy5zdXBwb3J0c0hpc3RvcnkoKTtcbiAgdmFyIHVzZVJlZnJlc2ggPSAhaXNTdXBwb3J0ZWQgfHwgZm9yY2VSZWZyZXNoO1xuXG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhdGlvbihoaXN0b3J5U3RhdGUpIHtcbiAgICBoaXN0b3J5U3RhdGUgPSBoaXN0b3J5U3RhdGUgfHwgd2luZG93Lmhpc3Rvcnkuc3RhdGUgfHwge307XG5cbiAgICB2YXIgcGF0aCA9IF9ET01VdGlscy5nZXRXaW5kb3dQYXRoKCk7XG4gICAgdmFyIF9oaXN0b3J5U3RhdGUgPSBoaXN0b3J5U3RhdGU7XG4gICAgdmFyIGtleSA9IF9oaXN0b3J5U3RhdGUua2V5O1xuXG4gICAgdmFyIHN0YXRlID0gdW5kZWZpbmVkO1xuICAgIGlmIChrZXkpIHtcbiAgICAgIHN0YXRlID0gX0RPTVN0YXRlU3RvcmFnZS5yZWFkU3RhdGUoa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUgPSBudWxsO1xuICAgICAga2V5ID0gaGlzdG9yeS5jcmVhdGVLZXkoKTtcblxuICAgICAgaWYgKGlzU3VwcG9ydGVkKSB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoX2V4dGVuZHMoe30sIGhpc3RvcnlTdGF0ZSwgeyBrZXk6IGtleSB9KSwgbnVsbCwgcGF0aCk7XG4gICAgfVxuXG4gICAgdmFyIGxvY2F0aW9uID0gX3BhcnNlUGF0aDJbJ2RlZmF1bHQnXShwYXRoKTtcblxuICAgIHJldHVybiBoaXN0b3J5LmNyZWF0ZUxvY2F0aW9uKF9leHRlbmRzKHt9LCBsb2NhdGlvbiwgeyBzdGF0ZTogc3RhdGUgfSksIHVuZGVmaW5lZCwga2V5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0UG9wU3RhdGVMaXN0ZW5lcihfcmVmKSB7XG4gICAgdmFyIHRyYW5zaXRpb25UbyA9IF9yZWYudHJhbnNpdGlvblRvO1xuXG4gICAgZnVuY3Rpb24gcG9wU3RhdGVMaXN0ZW5lcihldmVudCkge1xuICAgICAgaWYgKGV2ZW50LnN0YXRlID09PSB1bmRlZmluZWQpIHJldHVybjsgLy8gSWdub3JlIGV4dHJhbmVvdXMgcG9wc3RhdGUgZXZlbnRzIGluIFdlYktpdC5cblxuICAgICAgdHJhbnNpdGlvblRvKGdldEN1cnJlbnRMb2NhdGlvbihldmVudC5zdGF0ZSkpO1xuICAgIH1cblxuICAgIF9ET01VdGlscy5hZGRFdmVudExpc3RlbmVyKHdpbmRvdywgJ3BvcHN0YXRlJywgcG9wU3RhdGVMaXN0ZW5lcik7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgX0RPTVV0aWxzLnJlbW92ZUV2ZW50TGlzdGVuZXIod2luZG93LCAncG9wc3RhdGUnLCBwb3BTdGF0ZUxpc3RlbmVyKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gZmluaXNoVHJhbnNpdGlvbihsb2NhdGlvbikge1xuICAgIHZhciBiYXNlbmFtZSA9IGxvY2F0aW9uLmJhc2VuYW1lO1xuICAgIHZhciBwYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lO1xuICAgIHZhciBzZWFyY2ggPSBsb2NhdGlvbi5zZWFyY2g7XG4gICAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoO1xuICAgIHZhciBzdGF0ZSA9IGxvY2F0aW9uLnN0YXRlO1xuICAgIHZhciBhY3Rpb24gPSBsb2NhdGlvbi5hY3Rpb247XG4gICAgdmFyIGtleSA9IGxvY2F0aW9uLmtleTtcblxuICAgIGlmIChhY3Rpb24gPT09IF9BY3Rpb25zLlBPUCkgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvLlxuXG4gICAgX0RPTVN0YXRlU3RvcmFnZS5zYXZlU3RhdGUoa2V5LCBzdGF0ZSk7XG5cbiAgICB2YXIgcGF0aCA9IChiYXNlbmFtZSB8fCAnJykgKyBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG4gICAgdmFyIGhpc3RvcnlTdGF0ZSA9IHtcbiAgICAgIGtleToga2V5XG4gICAgfTtcblxuICAgIGlmIChhY3Rpb24gPT09IF9BY3Rpb25zLlBVU0gpIHtcbiAgICAgIGlmICh1c2VSZWZyZXNoKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGF0aDtcbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBQcmV2ZW50IGxvY2F0aW9uIHVwZGF0ZS5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKGhpc3RvcnlTdGF0ZSwgbnVsbCwgcGF0aCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUkVQTEFDRVxuICAgICAgaWYgKHVzZVJlZnJlc2gpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UocGF0aCk7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gUHJldmVudCBsb2NhdGlvbiB1cGRhdGUuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShoaXN0b3J5U3RhdGUsIG51bGwsIHBhdGgpO1xuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGhpc3RvcnkgPSBfY3JlYXRlRE9NSGlzdG9yeTJbJ2RlZmF1bHQnXShfZXh0ZW5kcyh7fSwgb3B0aW9ucywge1xuICAgIGdldEN1cnJlbnRMb2NhdGlvbjogZ2V0Q3VycmVudExvY2F0aW9uLFxuICAgIGZpbmlzaFRyYW5zaXRpb246IGZpbmlzaFRyYW5zaXRpb24sXG4gICAgc2F2ZVN0YXRlOiBfRE9NU3RhdGVTdG9yYWdlLnNhdmVTdGF0ZVxuICB9KSk7XG5cbiAgdmFyIGxpc3RlbmVyQ291bnQgPSAwLFxuICAgICAgc3RvcFBvcFN0YXRlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG5cbiAgZnVuY3Rpb24gbGlzdGVuQmVmb3JlKGxpc3RlbmVyKSB7XG4gICAgaWYgKCsrbGlzdGVuZXJDb3VudCA9PT0gMSkgc3RvcFBvcFN0YXRlTGlzdGVuZXIgPSBzdGFydFBvcFN0YXRlTGlzdGVuZXIoaGlzdG9yeSk7XG5cbiAgICB2YXIgdW5saXN0ZW4gPSBoaXN0b3J5Lmxpc3RlbkJlZm9yZShsaXN0ZW5lcik7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgdW5saXN0ZW4oKTtcblxuICAgICAgaWYgKC0tbGlzdGVuZXJDb3VudCA9PT0gMCkgc3RvcFBvcFN0YXRlTGlzdGVuZXIoKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgaWYgKCsrbGlzdGVuZXJDb3VudCA9PT0gMSkgc3RvcFBvcFN0YXRlTGlzdGVuZXIgPSBzdGFydFBvcFN0YXRlTGlzdGVuZXIoaGlzdG9yeSk7XG5cbiAgICB2YXIgdW5saXN0ZW4gPSBoaXN0b3J5Lmxpc3RlbihsaXN0ZW5lcik7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgdW5saXN0ZW4oKTtcblxuICAgICAgaWYgKC0tbGlzdGVuZXJDb3VudCA9PT0gMCkgc3RvcFBvcFN0YXRlTGlzdGVuZXIoKTtcbiAgICB9O1xuICB9XG5cbiAgLy8gZGVwcmVjYXRlZFxuICBmdW5jdGlvbiByZWdpc3RlclRyYW5zaXRpb25Ib29rKGhvb2spIHtcbiAgICBpZiAoKytsaXN0ZW5lckNvdW50ID09PSAxKSBzdG9wUG9wU3RhdGVMaXN0ZW5lciA9IHN0YXJ0UG9wU3RhdGVMaXN0ZW5lcihoaXN0b3J5KTtcblxuICAgIGhpc3RvcnkucmVnaXN0ZXJUcmFuc2l0aW9uSG9vayhob29rKTtcbiAgfVxuXG4gIC8vIGRlcHJlY2F0ZWRcbiAgZnVuY3Rpb24gdW5yZWdpc3RlclRyYW5zaXRpb25Ib29rKGhvb2spIHtcbiAgICBoaXN0b3J5LnVucmVnaXN0ZXJUcmFuc2l0aW9uSG9vayhob29rKTtcblxuICAgIGlmICgtLWxpc3RlbmVyQ291bnQgPT09IDApIHN0b3BQb3BTdGF0ZUxpc3RlbmVyKCk7XG4gIH1cblxuICByZXR1cm4gX2V4dGVuZHMoe30sIGhpc3RvcnksIHtcbiAgICBsaXN0ZW5CZWZvcmU6IGxpc3RlbkJlZm9yZSxcbiAgICBsaXN0ZW46IGxpc3RlbixcbiAgICByZWdpc3RlclRyYW5zaXRpb25Ib29rOiByZWdpc3RlclRyYW5zaXRpb25Ib29rLFxuICAgIHVucmVnaXN0ZXJUcmFuc2l0aW9uSG9vazogdW5yZWdpc3RlclRyYW5zaXRpb25Ib29rXG4gIH0pO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBjcmVhdGVCcm93c2VySGlzdG9yeTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2ludmFyaWFudCA9IHJlcXVpcmUoJ2ludmFyaWFudCcpO1xuXG52YXIgX2ludmFyaWFudDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbnZhcmlhbnQpO1xuXG52YXIgX0V4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgX0RPTVV0aWxzID0gcmVxdWlyZSgnLi9ET01VdGlscycpO1xuXG52YXIgX2NyZWF0ZUhpc3RvcnkgPSByZXF1aXJlKCcuL2NyZWF0ZUhpc3RvcnknKTtcblxudmFyIF9jcmVhdGVIaXN0b3J5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZUhpc3RvcnkpO1xuXG5mdW5jdGlvbiBjcmVhdGVET01IaXN0b3J5KG9wdGlvbnMpIHtcbiAgdmFyIGhpc3RvcnkgPSBfY3JlYXRlSGlzdG9yeTJbJ2RlZmF1bHQnXShfZXh0ZW5kcyh7XG4gICAgZ2V0VXNlckNvbmZpcm1hdGlvbjogX0RPTVV0aWxzLmdldFVzZXJDb25maXJtYXRpb25cbiAgfSwgb3B0aW9ucywge1xuICAgIGdvOiBfRE9NVXRpbHMuZ29cbiAgfSkpO1xuXG4gIGZ1bmN0aW9uIGxpc3RlbihsaXN0ZW5lcikge1xuICAgICFfRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IF9pbnZhcmlhbnQyWydkZWZhdWx0J10oZmFsc2UsICdET00gaGlzdG9yeSBuZWVkcyBhIERPTScpIDogX2ludmFyaWFudDJbJ2RlZmF1bHQnXShmYWxzZSkgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gaGlzdG9yeS5saXN0ZW4obGlzdGVuZXIpO1xuICB9XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBoaXN0b3J5LCB7XG4gICAgbGlzdGVuOiBsaXN0ZW5cbiAgfSk7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNyZWF0ZURPTUhpc3Rvcnk7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIvL2ltcG9ydCB3YXJuaW5nIGZyb20gJ3dhcm5pbmcnXG4ndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9kZWVwRXF1YWwgPSByZXF1aXJlKCdkZWVwLWVxdWFsJyk7XG5cbnZhciBfZGVlcEVxdWFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZXBFcXVhbCk7XG5cbnZhciBfQXN5bmNVdGlscyA9IHJlcXVpcmUoJy4vQXN5bmNVdGlscycpO1xuXG52YXIgX0FjdGlvbnMgPSByZXF1aXJlKCcuL0FjdGlvbnMnKTtcblxudmFyIF9jcmVhdGVMb2NhdGlvbjIgPSByZXF1aXJlKCcuL2NyZWF0ZUxvY2F0aW9uJyk7XG5cbnZhciBfY3JlYXRlTG9jYXRpb24zID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlTG9jYXRpb24yKTtcblxudmFyIF9ydW5UcmFuc2l0aW9uSG9vayA9IHJlcXVpcmUoJy4vcnVuVHJhbnNpdGlvbkhvb2snKTtcblxudmFyIF9ydW5UcmFuc2l0aW9uSG9vazIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9ydW5UcmFuc2l0aW9uSG9vayk7XG5cbnZhciBfcGFyc2VQYXRoID0gcmVxdWlyZSgnLi9wYXJzZVBhdGgnKTtcblxudmFyIF9wYXJzZVBhdGgyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcGFyc2VQYXRoKTtcblxudmFyIF9kZXByZWNhdGUgPSByZXF1aXJlKCcuL2RlcHJlY2F0ZScpO1xuXG52YXIgX2RlcHJlY2F0ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZXByZWNhdGUpO1xuXG5mdW5jdGlvbiBjcmVhdGVSYW5kb21LZXkobGVuZ3RoKSB7XG4gIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgbGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gbG9jYXRpb25zQXJlRXF1YWwoYSwgYikge1xuICByZXR1cm4gYS5wYXRobmFtZSA9PT0gYi5wYXRobmFtZSAmJiBhLnNlYXJjaCA9PT0gYi5zZWFyY2ggJiZcbiAgLy9hLmFjdGlvbiA9PT0gYi5hY3Rpb24gJiYgLy8gRGlmZmVyZW50IGFjdGlvbiAhPT0gbG9jYXRpb24gY2hhbmdlLlxuICBhLmtleSA9PT0gYi5rZXkgJiYgX2RlZXBFcXVhbDJbJ2RlZmF1bHQnXShhLnN0YXRlLCBiLnN0YXRlKTtcbn1cblxudmFyIERlZmF1bHRLZXlMZW5ndGggPSA2O1xuXG5mdW5jdGlvbiBjcmVhdGVIaXN0b3J5KCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuICB2YXIgZ2V0Q3VycmVudExvY2F0aW9uID0gb3B0aW9ucy5nZXRDdXJyZW50TG9jYXRpb247XG4gIHZhciBmaW5pc2hUcmFuc2l0aW9uID0gb3B0aW9ucy5maW5pc2hUcmFuc2l0aW9uO1xuICB2YXIgc2F2ZVN0YXRlID0gb3B0aW9ucy5zYXZlU3RhdGU7XG4gIHZhciBnbyA9IG9wdGlvbnMuZ287XG4gIHZhciBrZXlMZW5ndGggPSBvcHRpb25zLmtleUxlbmd0aDtcbiAgdmFyIGdldFVzZXJDb25maXJtYXRpb24gPSBvcHRpb25zLmdldFVzZXJDb25maXJtYXRpb247XG5cbiAgaWYgKHR5cGVvZiBrZXlMZW5ndGggIT09ICdudW1iZXInKSBrZXlMZW5ndGggPSBEZWZhdWx0S2V5TGVuZ3RoO1xuXG4gIHZhciB0cmFuc2l0aW9uSG9va3MgPSBbXTtcblxuICBmdW5jdGlvbiBsaXN0ZW5CZWZvcmUoaG9vaykge1xuICAgIHRyYW5zaXRpb25Ib29rcy5wdXNoKGhvb2spO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyYW5zaXRpb25Ib29rcyA9IHRyYW5zaXRpb25Ib29rcy5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gIT09IGhvb2s7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIGFsbEtleXMgPSBbXTtcbiAgdmFyIGNoYW5nZUxpc3RlbmVycyA9IFtdO1xuICB2YXIgbG9jYXRpb24gPSB1bmRlZmluZWQ7XG5cbiAgZnVuY3Rpb24gZ2V0Q3VycmVudCgpIHtcbiAgICBpZiAocGVuZGluZ0xvY2F0aW9uICYmIHBlbmRpbmdMb2NhdGlvbi5hY3Rpb24gPT09IF9BY3Rpb25zLlBPUCkge1xuICAgICAgcmV0dXJuIGFsbEtleXMuaW5kZXhPZihwZW5kaW5nTG9jYXRpb24ua2V5KTtcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uKSB7XG4gICAgICByZXR1cm4gYWxsS2V5cy5pbmRleE9mKGxvY2F0aW9uLmtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVMb2NhdGlvbihuZXdMb2NhdGlvbikge1xuICAgIHZhciBjdXJyZW50ID0gZ2V0Q3VycmVudCgpO1xuXG4gICAgbG9jYXRpb24gPSBuZXdMb2NhdGlvbjtcblxuICAgIGlmIChsb2NhdGlvbi5hY3Rpb24gPT09IF9BY3Rpb25zLlBVU0gpIHtcbiAgICAgIGFsbEtleXMgPSBbXS5jb25jYXQoYWxsS2V5cy5zbGljZSgwLCBjdXJyZW50ICsgMSksIFtsb2NhdGlvbi5rZXldKTtcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLmFjdGlvbiA9PT0gX0FjdGlvbnMuUkVQTEFDRSkge1xuICAgICAgYWxsS2V5c1tjdXJyZW50XSA9IGxvY2F0aW9uLmtleTtcbiAgICB9XG5cbiAgICBjaGFuZ2VMaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgIGxpc3RlbmVyKGxvY2F0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbihsaXN0ZW5lcikge1xuICAgIGNoYW5nZUxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgbGlzdGVuZXIobG9jYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgX2xvY2F0aW9uID0gZ2V0Q3VycmVudExvY2F0aW9uKCk7XG4gICAgICBhbGxLZXlzID0gW19sb2NhdGlvbi5rZXldO1xuICAgICAgdXBkYXRlTG9jYXRpb24oX2xvY2F0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgY2hhbmdlTGlzdGVuZXJzID0gY2hhbmdlTGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbSAhPT0gbGlzdGVuZXI7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gY29uZmlybVRyYW5zaXRpb25Ubyhsb2NhdGlvbiwgY2FsbGJhY2spIHtcbiAgICBfQXN5bmNVdGlscy5sb29wQXN5bmModHJhbnNpdGlvbkhvb2tzLmxlbmd0aCwgZnVuY3Rpb24gKGluZGV4LCBuZXh0LCBkb25lKSB7XG4gICAgICBfcnVuVHJhbnNpdGlvbkhvb2syWydkZWZhdWx0J10odHJhbnNpdGlvbkhvb2tzW2luZGV4XSwgbG9jYXRpb24sIGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgZG9uZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIGlmIChnZXRVc2VyQ29uZmlybWF0aW9uICYmIHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgICBnZXRVc2VyQ29uZmlybWF0aW9uKG1lc3NhZ2UsIGZ1bmN0aW9uIChvaykge1xuICAgICAgICAgIGNhbGxiYWNrKG9rICE9PSBmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2sobWVzc2FnZSAhPT0gZmFsc2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdmFyIHBlbmRpbmdMb2NhdGlvbiA9IHVuZGVmaW5lZDtcblxuICBmdW5jdGlvbiB0cmFuc2l0aW9uVG8obmV4dExvY2F0aW9uKSB7XG4gICAgaWYgKGxvY2F0aW9uICYmIGxvY2F0aW9uc0FyZUVxdWFsKGxvY2F0aW9uLCBuZXh0TG9jYXRpb24pKSByZXR1cm47IC8vIE5vdGhpbmcgdG8gZG8uXG5cbiAgICBwZW5kaW5nTG9jYXRpb24gPSBuZXh0TG9jYXRpb247XG5cbiAgICBjb25maXJtVHJhbnNpdGlvblRvKG5leHRMb2NhdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAocGVuZGluZ0xvY2F0aW9uICE9PSBuZXh0TG9jYXRpb24pIHJldHVybjsgLy8gVHJhbnNpdGlvbiB3YXMgaW50ZXJydXB0ZWQuXG5cbiAgICAgIGlmIChvaykge1xuICAgICAgICAvLyB0cmVhdCBQVVNIIHRvIGN1cnJlbnQgcGF0aCBsaWtlIFJFUExBQ0UgdG8gYmUgY29uc2lzdGVudCB3aXRoIGJyb3dzZXJzXG4gICAgICAgIGlmIChuZXh0TG9jYXRpb24uYWN0aW9uID09PSBfQWN0aW9ucy5QVVNIKSB7XG4gICAgICAgICAgdmFyIHByZXZQYXRoID0gY3JlYXRlUGF0aChsb2NhdGlvbik7XG4gICAgICAgICAgdmFyIG5leHRQYXRoID0gY3JlYXRlUGF0aChuZXh0TG9jYXRpb24pO1xuXG4gICAgICAgICAgaWYgKG5leHRQYXRoID09PSBwcmV2UGF0aCkgbmV4dExvY2F0aW9uLmFjdGlvbiA9IF9BY3Rpb25zLlJFUExBQ0U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmluaXNoVHJhbnNpdGlvbihuZXh0TG9jYXRpb24pICE9PSBmYWxzZSkgdXBkYXRlTG9jYXRpb24obmV4dExvY2F0aW9uKTtcbiAgICAgIH0gZWxzZSBpZiAobG9jYXRpb24gJiYgbmV4dExvY2F0aW9uLmFjdGlvbiA9PT0gX0FjdGlvbnMuUE9QKSB7XG4gICAgICAgIHZhciBwcmV2SW5kZXggPSBhbGxLZXlzLmluZGV4T2YobG9jYXRpb24ua2V5KTtcbiAgICAgICAgdmFyIG5leHRJbmRleCA9IGFsbEtleXMuaW5kZXhPZihuZXh0TG9jYXRpb24ua2V5KTtcblxuICAgICAgICBpZiAocHJldkluZGV4ICE9PSAtMSAmJiBuZXh0SW5kZXggIT09IC0xKSBnbyhwcmV2SW5kZXggLSBuZXh0SW5kZXgpOyAvLyBSZXN0b3JlIHRoZSBVUkwuXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoKGxvY2F0aW9uKSB7XG4gICAgdHJhbnNpdGlvblRvKGNyZWF0ZUxvY2F0aW9uKGxvY2F0aW9uLCBfQWN0aW9ucy5QVVNILCBjcmVhdGVLZXkoKSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZShsb2NhdGlvbikge1xuICAgIHRyYW5zaXRpb25UbyhjcmVhdGVMb2NhdGlvbihsb2NhdGlvbiwgX0FjdGlvbnMuUkVQTEFDRSwgY3JlYXRlS2V5KCkpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvQmFjaygpIHtcbiAgICBnbygtMSk7XG4gIH1cblxuICBmdW5jdGlvbiBnb0ZvcndhcmQoKSB7XG4gICAgZ28oMSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVLZXkoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVJhbmRvbUtleShrZXlMZW5ndGgpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUGF0aChsb2NhdGlvbikge1xuICAgIGlmIChsb2NhdGlvbiA9PSBudWxsIHx8IHR5cGVvZiBsb2NhdGlvbiA9PT0gJ3N0cmluZycpIHJldHVybiBsb2NhdGlvbjtcblxuICAgIHZhciBwYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lO1xuICAgIHZhciBzZWFyY2ggPSBsb2NhdGlvbi5zZWFyY2g7XG4gICAgdmFyIGhhc2ggPSBsb2NhdGlvbi5oYXNoO1xuXG4gICAgdmFyIHJlc3VsdCA9IHBhdGhuYW1lO1xuXG4gICAgaWYgKHNlYXJjaCkgcmVzdWx0ICs9IHNlYXJjaDtcblxuICAgIGlmIChoYXNoKSByZXN1bHQgKz0gaGFzaDtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVIcmVmKGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVBhdGgobG9jYXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlTG9jYXRpb24obG9jYXRpb24sIGFjdGlvbikge1xuICAgIHZhciBrZXkgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDIgfHwgYXJndW1lbnRzWzJdID09PSB1bmRlZmluZWQgPyBjcmVhdGVLZXkoKSA6IGFyZ3VtZW50c1syXTtcblxuICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSAnb2JqZWN0Jykge1xuICAgICAgLy93YXJuaW5nKFxuICAgICAgLy8gIGZhbHNlLFxuICAgICAgLy8gICdUaGUgc3RhdGUgKDJuZCkgYXJndW1lbnQgdG8gaGlzdG9yeS5jcmVhdGVMb2NhdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgYSAnICtcbiAgICAgIC8vICAnbG9jYXRpb24gZGVzY3JpcHRvciBpbnN0ZWFkJ1xuICAgICAgLy8pXG5cbiAgICAgIGlmICh0eXBlb2YgbG9jYXRpb24gPT09ICdzdHJpbmcnKSBsb2NhdGlvbiA9IF9wYXJzZVBhdGgyWydkZWZhdWx0J10obG9jYXRpb24pO1xuXG4gICAgICBsb2NhdGlvbiA9IF9leHRlbmRzKHt9LCBsb2NhdGlvbiwgeyBzdGF0ZTogYWN0aW9uIH0pO1xuXG4gICAgICBhY3Rpb24gPSBrZXk7XG4gICAgICBrZXkgPSBhcmd1bWVudHNbM10gfHwgY3JlYXRlS2V5KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9jcmVhdGVMb2NhdGlvbjNbJ2RlZmF1bHQnXShsb2NhdGlvbiwgYWN0aW9uLCBrZXkpO1xuICB9XG5cbiAgLy8gZGVwcmVjYXRlZFxuICBmdW5jdGlvbiBzZXRTdGF0ZShzdGF0ZSkge1xuICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgdXBkYXRlTG9jYXRpb25TdGF0ZShsb2NhdGlvbiwgc3RhdGUpO1xuICAgICAgdXBkYXRlTG9jYXRpb24obG9jYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cGRhdGVMb2NhdGlvblN0YXRlKGdldEN1cnJlbnRMb2NhdGlvbigpLCBzdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlTG9jYXRpb25TdGF0ZShsb2NhdGlvbiwgc3RhdGUpIHtcbiAgICBsb2NhdGlvbi5zdGF0ZSA9IF9leHRlbmRzKHt9LCBsb2NhdGlvbi5zdGF0ZSwgc3RhdGUpO1xuICAgIHNhdmVTdGF0ZShsb2NhdGlvbi5rZXksIGxvY2F0aW9uLnN0YXRlKTtcbiAgfVxuXG4gIC8vIGRlcHJlY2F0ZWRcbiAgZnVuY3Rpb24gcmVnaXN0ZXJUcmFuc2l0aW9uSG9vayhob29rKSB7XG4gICAgaWYgKHRyYW5zaXRpb25Ib29rcy5pbmRleE9mKGhvb2spID09PSAtMSkgdHJhbnNpdGlvbkhvb2tzLnB1c2goaG9vayk7XG4gIH1cblxuICAvLyBkZXByZWNhdGVkXG4gIGZ1bmN0aW9uIHVucmVnaXN0ZXJUcmFuc2l0aW9uSG9vayhob29rKSB7XG4gICAgdHJhbnNpdGlvbkhvb2tzID0gdHJhbnNpdGlvbkhvb2tzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0gIT09IGhvb2s7XG4gICAgfSk7XG4gIH1cblxuICAvLyBkZXByZWNhdGVkXG4gIGZ1bmN0aW9uIHB1c2hTdGF0ZShzdGF0ZSwgcGF0aCkge1xuICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHBhdGggPSBfcGFyc2VQYXRoMlsnZGVmYXVsdCddKHBhdGgpO1xuXG4gICAgcHVzaChfZXh0ZW5kcyh7IHN0YXRlOiBzdGF0ZSB9LCBwYXRoKSk7XG4gIH1cblxuICAvLyBkZXByZWNhdGVkXG4gIGZ1bmN0aW9uIHJlcGxhY2VTdGF0ZShzdGF0ZSwgcGF0aCkge1xuICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHBhdGggPSBfcGFyc2VQYXRoMlsnZGVmYXVsdCddKHBhdGgpO1xuXG4gICAgcmVwbGFjZShfZXh0ZW5kcyh7IHN0YXRlOiBzdGF0ZSB9LCBwYXRoKSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxpc3RlbkJlZm9yZTogbGlzdGVuQmVmb3JlLFxuICAgIGxpc3RlbjogbGlzdGVuLFxuICAgIHRyYW5zaXRpb25UbzogdHJhbnNpdGlvblRvLFxuICAgIHB1c2g6IHB1c2gsXG4gICAgcmVwbGFjZTogcmVwbGFjZSxcbiAgICBnbzogZ28sXG4gICAgZ29CYWNrOiBnb0JhY2ssXG4gICAgZ29Gb3J3YXJkOiBnb0ZvcndhcmQsXG4gICAgY3JlYXRlS2V5OiBjcmVhdGVLZXksXG4gICAgY3JlYXRlUGF0aDogY3JlYXRlUGF0aCxcbiAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmLFxuICAgIGNyZWF0ZUxvY2F0aW9uOiBjcmVhdGVMb2NhdGlvbixcblxuICAgIHNldFN0YXRlOiBfZGVwcmVjYXRlMlsnZGVmYXVsdCddKHNldFN0YXRlLCAnc2V0U3RhdGUgaXMgZGVwcmVjYXRlZDsgdXNlIGxvY2F0aW9uLmtleSB0byBzYXZlIHN0YXRlIGluc3RlYWQnKSxcbiAgICByZWdpc3RlclRyYW5zaXRpb25Ib29rOiBfZGVwcmVjYXRlMlsnZGVmYXVsdCddKHJlZ2lzdGVyVHJhbnNpdGlvbkhvb2ssICdyZWdpc3RlclRyYW5zaXRpb25Ib29rIGlzIGRlcHJlY2F0ZWQ7IHVzZSBsaXN0ZW5CZWZvcmUgaW5zdGVhZCcpLFxuICAgIHVucmVnaXN0ZXJUcmFuc2l0aW9uSG9vazogX2RlcHJlY2F0ZTJbJ2RlZmF1bHQnXSh1bnJlZ2lzdGVyVHJhbnNpdGlvbkhvb2ssICd1bnJlZ2lzdGVyVHJhbnNpdGlvbkhvb2sgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSBjYWxsYmFjayByZXR1cm5lZCBmcm9tIGxpc3RlbkJlZm9yZSBpbnN0ZWFkJyksXG4gICAgcHVzaFN0YXRlOiBfZGVwcmVjYXRlMlsnZGVmYXVsdCddKHB1c2hTdGF0ZSwgJ3B1c2hTdGF0ZSBpcyBkZXByZWNhdGVkOyB1c2UgcHVzaCBpbnN0ZWFkJyksXG4gICAgcmVwbGFjZVN0YXRlOiBfZGVwcmVjYXRlMlsnZGVmYXVsdCddKHJlcGxhY2VTdGF0ZSwgJ3JlcGxhY2VTdGF0ZSBpcyBkZXByZWNhdGVkOyB1c2UgcmVwbGFjZSBpbnN0ZWFkJylcbiAgfTtcbn1cblxuZXhwb3J0c1snZGVmYXVsdCddID0gY3JlYXRlSGlzdG9yeTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8vaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZydcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX0FjdGlvbnMgPSByZXF1aXJlKCcuL0FjdGlvbnMnKTtcblxudmFyIF9wYXJzZVBhdGggPSByZXF1aXJlKCcuL3BhcnNlUGF0aCcpO1xuXG52YXIgX3BhcnNlUGF0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXJzZVBhdGgpO1xuXG5mdW5jdGlvbiBjcmVhdGVMb2NhdGlvbigpIHtcbiAgdmFyIGxvY2F0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gJy8nIDogYXJndW1lbnRzWzBdO1xuICB2YXIgYWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAxIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gX0FjdGlvbnMuUE9QIDogYXJndW1lbnRzWzFdO1xuICB2YXIga2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAyIHx8IGFyZ3VtZW50c1syXSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGFyZ3VtZW50c1syXTtcblxuICB2YXIgX2ZvdXJ0aEFyZyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMyB8fCBhcmd1bWVudHNbM10gPT09IHVuZGVmaW5lZCA/IG51bGwgOiBhcmd1bWVudHNbM107XG5cbiAgaWYgKHR5cGVvZiBsb2NhdGlvbiA9PT0gJ3N0cmluZycpIGxvY2F0aW9uID0gX3BhcnNlUGF0aDJbJ2RlZmF1bHQnXShsb2NhdGlvbik7XG5cbiAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICdvYmplY3QnKSB7XG4gICAgLy93YXJuaW5nKFxuICAgIC8vICBmYWxzZSxcbiAgICAvLyAgJ1RoZSBzdGF0ZSAoMm5kKSBhcmd1bWVudCB0byBjcmVhdGVMb2NhdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgYSAnICtcbiAgICAvLyAgJ2xvY2F0aW9uIGRlc2NyaXB0b3IgaW5zdGVhZCdcbiAgICAvLylcblxuICAgIGxvY2F0aW9uID0gX2V4dGVuZHMoe30sIGxvY2F0aW9uLCB7IHN0YXRlOiBhY3Rpb24gfSk7XG5cbiAgICBhY3Rpb24gPSBrZXkgfHwgX0FjdGlvbnMuUE9QO1xuICAgIGtleSA9IF9mb3VydGhBcmc7XG4gIH1cblxuICB2YXIgcGF0aG5hbWUgPSBsb2NhdGlvbi5wYXRobmFtZSB8fCAnLyc7XG4gIHZhciBzZWFyY2ggPSBsb2NhdGlvbi5zZWFyY2ggfHwgJyc7XG4gIHZhciBoYXNoID0gbG9jYXRpb24uaGFzaCB8fCAnJztcbiAgdmFyIHN0YXRlID0gbG9jYXRpb24uc3RhdGUgfHwgbnVsbDtcblxuICByZXR1cm4ge1xuICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICBzZWFyY2g6IHNlYXJjaCxcbiAgICBoYXNoOiBoYXNoLFxuICAgIHN0YXRlOiBzdGF0ZSxcbiAgICBhY3Rpb246IGFjdGlvbixcbiAgICBrZXk6IGtleVxuICB9O1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBjcmVhdGVMb2NhdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8vaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZydcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5mdW5jdGlvbiBkZXByZWNhdGUoZm4pIHtcbiAgcmV0dXJuIGZuO1xuICAvL3JldHVybiBmdW5jdGlvbiAoKSB7XG4gIC8vICB3YXJuaW5nKGZhbHNlLCAnW2hpc3RvcnldICcgKyBtZXNzYWdlKVxuICAvLyAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgLy99XG59XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZGVwcmVjYXRlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzW1wiZGVmYXVsdFwiXTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmZ1bmN0aW9uIGV4dHJhY3RQYXRoKHN0cmluZykge1xuICB2YXIgbWF0Y2ggPSBzdHJpbmcubWF0Y2goL15odHRwcz86XFwvXFwvW15cXC9dKi8pO1xuXG4gIGlmIChtYXRjaCA9PSBudWxsKSByZXR1cm4gc3RyaW5nO1xuXG4gIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKG1hdGNoWzBdLmxlbmd0aCk7XG59XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gZXh0cmFjdFBhdGg7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdOyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCd3YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblxudmFyIF9leHRyYWN0UGF0aCA9IHJlcXVpcmUoJy4vZXh0cmFjdFBhdGgnKTtcblxudmFyIF9leHRyYWN0UGF0aDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leHRyYWN0UGF0aCk7XG5cbmZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoKSB7XG4gIHZhciBwYXRobmFtZSA9IF9leHRyYWN0UGF0aDJbJ2RlZmF1bHQnXShwYXRoKTtcbiAgdmFyIHNlYXJjaCA9ICcnO1xuICB2YXIgaGFzaCA9ICcnO1xuXG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBfd2FybmluZzJbJ2RlZmF1bHQnXShwYXRoID09PSBwYXRobmFtZSwgJ0EgcGF0aCBtdXN0IGJlIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaCBvbmx5LCBub3QgYSBmdWxseSBxdWFsaWZpZWQgVVJMIGxpa2UgXCIlc1wiJywgcGF0aCkgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGhhc2hJbmRleCA9IHBhdGhuYW1lLmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2hJbmRleCAhPT0gLTEpIHtcbiAgICBoYXNoID0gcGF0aG5hbWUuc3Vic3RyaW5nKGhhc2hJbmRleCk7XG4gICAgcGF0aG5hbWUgPSBwYXRobmFtZS5zdWJzdHJpbmcoMCwgaGFzaEluZGV4KTtcbiAgfVxuXG4gIHZhciBzZWFyY2hJbmRleCA9IHBhdGhuYW1lLmluZGV4T2YoJz8nKTtcbiAgaWYgKHNlYXJjaEluZGV4ICE9PSAtMSkge1xuICAgIHNlYXJjaCA9IHBhdGhuYW1lLnN1YnN0cmluZyhzZWFyY2hJbmRleCk7XG4gICAgcGF0aG5hbWUgPSBwYXRobmFtZS5zdWJzdHJpbmcoMCwgc2VhcmNoSW5kZXgpO1xuICB9XG5cbiAgaWYgKHBhdGhuYW1lID09PSAnJykgcGF0aG5hbWUgPSAnLyc7XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRobmFtZTogcGF0aG5hbWUsXG4gICAgc2VhcmNoOiBzZWFyY2gsXG4gICAgaGFzaDogaGFzaFxuICB9O1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBwYXJzZVBhdGg7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF93YXJuaW5nID0gcmVxdWlyZSgnd2FybmluZycpO1xuXG52YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cbmZ1bmN0aW9uIHJ1blRyYW5zaXRpb25Ib29rKGhvb2ssIGxvY2F0aW9uLCBjYWxsYmFjaykge1xuICB2YXIgcmVzdWx0ID0gaG9vayhsb2NhdGlvbiwgY2FsbGJhY2spO1xuXG4gIGlmIChob29rLmxlbmd0aCA8IDIpIHtcbiAgICAvLyBBc3N1bWUgdGhlIGhvb2sgcnVucyBzeW5jaHJvbm91c2x5IGFuZCBhdXRvbWF0aWNhbGx5XG4gICAgLy8gY2FsbCB0aGUgY2FsbGJhY2sgd2l0aCB0aGUgcmV0dXJuIHZhbHVlLlxuICAgIGNhbGxiYWNrKHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IF93YXJuaW5nMlsnZGVmYXVsdCddKHJlc3VsdCA9PT0gdW5kZWZpbmVkLCAnWW91IHNob3VsZCBub3QgXCJyZXR1cm5cIiBpbiBhIHRyYW5zaXRpb24gaG9vayB3aXRoIGEgY2FsbGJhY2sgYXJndW1lbnQ7IGNhbGwgdGhlIGNhbGxiYWNrIGluc3RlYWQnKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBydW5UcmFuc2l0aW9uSG9vaztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpcbiAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIGludmFyaWFudCA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb25kaXRpb24pIHtcbiAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgK1xuICAgICAgICAnZm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBmXTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJnc1thcmdJbmRleCsrXTsgfSlcbiAgICAgICk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciB3YXJuaW5nID0gZnVuY3Rpb24oKSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgd2FybmluZyA9IGZ1bmN0aW9uKGNvbmRpdGlvbiwgZm9ybWF0LCBhcmdzKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgYXJncyA9IG5ldyBBcnJheShsZW4gPiAyID8gbGVuIC0gMiA6IDApO1xuICAgIGZvciAodmFyIGtleSA9IDI7IGtleSA8IGxlbjsga2V5KyspIHtcbiAgICAgIGFyZ3Nba2V5IC0gMl0gPSBhcmd1bWVudHNba2V5XTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICtcbiAgICAgICAgJ21lc3NhZ2UgYXJndW1lbnQnXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQubGVuZ3RoIDwgMTAgfHwgKC9eW3NcXFddKiQvKS50ZXN0KGZvcm1hdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZSB3YXJuaW5nIGZvcm1hdCBzaG91bGQgYmUgYWJsZSB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzICcgK1xuICAgICAgICAnd2FybmluZy4gUGxlYXNlLCB1c2UgYSBtb3JlIGRlc2NyaXB0aXZlIGZvcm1hdCB0aGFuOiAnICsgZm9ybWF0XG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArXG4gICAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAgICAgICAgfSk7XG4gICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH0gY2F0Y2goeCkge31cbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2FybmluZztcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVmcmVzaCgpIHtcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gIH1cblxuICBnZXRNZXNzYWdlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNpZ25lZEluKSB7XG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUoXG4gICAgICAgIGdldHRleHQoXCJZb3UgaGF2ZSBzaWduZWQgaW4gYXMgJSh1c2VybmFtZSlzLiBQbGVhc2UgcmVmcmVzaCB0aGUgcGFnZSBiZWZvcmUgY29udGludWluZy5cIiksXG4gICAgICAgIHt1c2VybmFtZTogdGhpcy5wcm9wcy5zaWduZWRJbi51c2VybmFtZX0sIHRydWUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zaWduZWRPdXQpIHtcbiAgICAgIHJldHVybiBpbnRlcnBvbGF0ZShcbiAgICAgICAgZ2V0dGV4dChcIiUodXNlcm5hbWUpcywgeW91IGhhdmUgYmVlbiBzaWduZWQgb3V0LiBQbGVhc2UgcmVmcmVzaCB0aGUgcGFnZSBiZWZvcmUgY29udGludWluZy5cIiksXG4gICAgICAgIHt1c2VybmFtZTogdGhpcy5wcm9wcy51c2VyLnVzZXJuYW1lfSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNpZ25lZEluIHx8IHRoaXMucHJvcHMuc2lnbmVkT3V0KSB7XG4gICAgICByZXR1cm4gXCJhdXRoLW1lc3NhZ2Ugc2hvd1wiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJhdXRoLW1lc3NhZ2VcIjtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRDbGFzc05hbWUoKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJsZWFkXCI+e3RoaXMuZ2V0TWVzc2FnZSgpfTwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucmVmcmVzaH0+XG4gICAgICAgICAgICB7Z2V0dGV4dChcIlJlbG9hZCBwYWdlXCIpfVxuICAgICAgICAgIDwvYnV0dG9uPiA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4teHMgaGlkZGVuLXNtIHRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgIHtnZXR0ZXh0KFwib3IgcHJlc3MgRjUga2V5LlwiKX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3Qoc3RhdGUpIHtcbiAgcmV0dXJuIHtcbiAgICB1c2VyOiBzdGF0ZS5hdXRoLnVzZXIsXG4gICAgc2lnbmVkSW46IHN0YXRlLmF1dGguc2lnbmVkSW4sXG4gICAgc2lnbmVkT3V0OiBzdGF0ZS5hdXRoLnNpZ25lZE91dFxuICB9O1xufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IEJBU0VfVVJMID0gJCgnYmFzZScpLmF0dHIoJ2hyZWYnKSArICd1c2VyLWF2YXRhci8nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldFNyYygpIHtcbiAgICBsZXQgc2l6ZSA9IHRoaXMucHJvcHMuc2l6ZSB8fCAxMDA7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuICAgIGxldCB1cmwgPSBCQVNFX1VSTDtcblxuICAgIGlmICh0aGlzLnByb3BzLnVzZXIgJiYgdGhpcy5wcm9wcy51c2VyLmlkKSB7XG4gICAgICAvLyBqdXN0IGF2YXRhciBoYXNoLCBzaXplIGFuZCB1c2VyIGlkXG4gICAgICB1cmwgKz0gdGhpcy5wcm9wcy51c2VyLmF2YXRhcl9oYXNoICsgJy8nICsgc2l6ZSArICcvJyArIHRoaXMucHJvcHMudXNlci5pZCArICcucG5nJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8ganVzdCBhcHBlbmQgYXZhdGFyIHNpemUgdG8gZmlsZSB0byBwcm9kdWNlIG5vLWF2YXRhciBwbGFjZWhvbGRlclxuICAgICAgdXJsICs9IHNpemUgKyAnLnBuZyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxpbWcgc3JjPXt0aGlzLmdldFNyYygpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgJ3VzZXItYXZhdGFyJ31cbiAgICAgICAgICAgICAgICB0aXRsZT17Z2V0dGV4dChcIlVzZXIgYXZhdGFyXCIpfS8+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cbiIsImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0UmVhc29uTWVzc2FnZSgpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgaWYgKHRoaXMucHJvcHMubWVzc2FnZS5odG1sKSB7XG4gICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJsZWFkXCIgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICBfX2h0bWw6IHRoaXMucHJvcHMubWVzc2FnZS5odG1sXG4gICAgICAgIH19IC8+O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gPHAgY2xhc3NOYW1lPVwibGVhZFwiPnt0aGlzLnByb3BzLm1lc3NhZ2UucGxhaW59PC9wPjtcbiAgICB9XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxuXG4gIGdldEV4cGlyYXRpb25NZXNzYWdlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmV4cGlyZXMpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmV4cGlyZXMuaXNBZnRlcihtb21lbnQoKSkpIHtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICBsZXQgdGl0bGUgPSBpbnRlcnBvbGF0ZShcbiAgICAgICAgICBnZXR0ZXh0KFwiVGhpcyBiYW4gZXhwaXJlcyBvbiAlKGV4cGlyZXNfb24pcy5cIiksIHtcbiAgICAgICAgICAgICdleHBpcmVzX29uJzogdGhpcy5wcm9wcy5leHBpcmVzLmZvcm1hdCgnTEwsIExUJylcbiAgICAgICAgICB9LCB0cnVlKTtcblxuICAgICAgICBsZXQgbWVzc2FnZSA9IGludGVycG9sYXRlKFxuICAgICAgICAgIGdldHRleHQoXCJUaGlzIGJhbiBleHBpcmVzICUoZXhwaXJlc19vbilzLlwiKSwge1xuICAgICAgICAgICAgJ2V4cGlyZXNfb24nOiB0aGlzLnByb3BzLmV4cGlyZXMuZnJvbU5vdygpXG4gICAgICAgICAgfSwgdHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIDxhYmJyIHRpdGxlPXt0aXRsZX0+XG4gICAgICAgICAge21lc3NhZ2V9XG4gICAgICAgIDwvYWJicj47XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZ2V0dGV4dChcIlRoaXMgYmFuIGhhcyBleHBpcmVkLlwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCJUaGlzIGJhbiBpcyBwZXJtYW5lbnQuXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicGFnZSBwYWdlLWVycm9yIHBhZ2UtZXJyb3ItYmFubmVkXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtcGFuZWxcIj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1pY29uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+aGlnaGxpZ2h0X29mZjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtYm9keVwiPlxuICAgICAgICAgICAge3RoaXMuZ2V0UmVhc29uTWVzc2FnZSgpfVxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibWVzc2FnZS1mb290bm90ZVwiPlxuICAgICAgICAgICAgICB7dGhpcy5nZXRFeHBpcmF0aW9uTWVzc2FnZSgpfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IExvYWRlciBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9sb2FkZXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnV0dG9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIGxldCBjbGFzc05hbWUgPSAnYnRuICcgKyB0aGlzLnByb3BzLmNsYXNzTmFtZTtcbiAgICBsZXQgZGlzYWJsZWQgPSB0aGlzLnByb3BzLmRpc2FibGVkO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubG9hZGluZykge1xuICAgICAgY2xhc3NOYW1lICs9ICcgYnRuLWxvYWRpbmcnO1xuICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGJ1dHRvbiB0eXBlPXt0aGlzLnByb3BzLm9uQ2xpY2sgPyAnYnV0dG9uJyA6ICdzdWJtaXQnfVxuICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2t9PlxuICAgICAge3RoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICB7dGhpcy5wcm9wcy5sb2FkaW5nID8gPExvYWRlciAvPiA6IG51bGx9XG4gICAgPC9idXR0b24+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuXG5CdXR0b24uZGVmYXVsdFByb3BzID0ge1xuICBjbGFzc05hbWU6IFwiYnRuLWRlZmF1bHRcIixcblxuICB0eXBlOiBcInN1Ym1pdFwiLFxuXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBkaXNhYmxlZDogZmFsc2UsXG5cbiAgb25DbGljazogbnVsbFxufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTGFzdEFjdGl2aXR5IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2NhdGVnb3JpZXMvbGFzdC1hY3Rpdml0eSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFJlYWRJY29uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2NhdGVnb3JpZXMvcmVhZC1pY29uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgU3RhdHMgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvY2F0ZWdvcmllcy9zdGF0cyc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jYXRlZ29yeS5jc3NfY2xhc3MpIHtcbiAgICAgIHJldHVybiAncGFuZWwgcGFuZWwtZGVmYXVsdCBwYW5lbC1jYXRlZ29yeSBwYW5lbC1jYXRlZ29yeS0nICsgdGhpcy5wcm9wcy5jYXRlZ29yeS5jc3NfY2xhc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAncGFuZWwgcGFuZWwtZGVmYXVsdCBwYW5lbC1jYXRlZ29yeSc7XG4gICAgfVxuICB9XG5cbiAgZ2V0SGVhZGluZ0NsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jYXRlZ29yeS5zdWJjYXRlZ29yaWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICdwYW5lbC1oZWFkaW5nJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdwYW5lbC1oZWFkaW5nIGhlYWRpbmctYWxvbmUnO1xuICAgIH1cbiAgfVxuXG4gIGdldENhdGVnb3J5RGVzY3JpcHRpb24oKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuY2F0ZWdvcnkuZGVzY3JpcHRpb24pIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsLWJvZHkgY2F0ZWdvcnktZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgICAgICAgICAgX19odG1sOiB0aGlzLnByb3BzLmNhdGVnb3J5LmRlc2NyaXB0aW9uLmh0bWxcbiAgICAgICAgICAgICAgICAgIH19IC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3ViY2F0ZWdvcnlDbGFzcyhjYXRlZ29yeSkge1xuICAgIGlmIChjYXRlZ29yeS5jc3NfY2xhc3MpIHtcbiAgICAgIHJldHVybiAnbGlzdC1ncm91cC1pdGVtIGNhdGVnb3J5LXN1YmNhdGVnb3J5IHN1YmNhdGVnb3J5LScgKyBjYXRlZ29yeS5jc3NfY2xhc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnbGlzdC1ncm91cC1pdGVtIGNhdGVnb3J5LXN1YmNhdGVnb3J5JztcbiAgICB9XG4gIH1cblxuICBnZXRTdWJjYXRlZ29yeURlc2NyaXB0aW9uKGNhdGVnb3J5KSB7XG4gICAgaWYgKGNhdGVnb3J5LmRlc2NyaXB0aW9uKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJzdWJjYXRlZ29yeS1kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgICAgICAgICBfX2h0bWw6IGNhdGVnb3J5LmRlc2NyaXB0aW9uLmh0bWxcbiAgICAgICAgICAgICAgICAgIH19IC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3ViY2F0ZWdvcnlTdWJjYXRlZ29yeUNsYXNzKGNhdGVnb3J5KSB7XG4gICAgaWYgKGNhdGVnb3J5LmNzc19jbGFzcykge1xuICAgICAgcmV0dXJuICdzdWJjYXRlZ29yeSBzdWJjYXRlZ29yeS0nICsgY2F0ZWdvcnkuY3NzX2NsYXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ3N1YmNhdGVnb3J5JztcbiAgICB9XG4gIH1cblxuICBnZXRTdWJjYXRlZ29yeVN1YmNhdGVnb3JpZXMoY2F0ZWdvcnkpIHtcbiAgICBpZiAoY2F0ZWdvcnkuc3ViY2F0ZWdvcmllcykge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDx1bCBjbGFzc05hbWU9XCJsaXN0LWlubGluZSBzdWJjYXRlZ29yeS1zdWJjYXRlZ29yaWVzXCI+XG4gICAgICAgIHtjYXRlZ29yeS5zdWJjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gPGxpIGtleT17Y2F0ZWdvcnkuaWR9PlxuICAgICAgICAgICAgPGEgaHJlZj17Y2F0ZWdvcnkuYWJzb2x1dGVfdXJsfVxuICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGlzLmdldFN1YmNhdGVnb3J5U3ViY2F0ZWdvcnlDbGFzcyhjYXRlZ29yeSl9PlxuICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPjtcbiAgICAgICAgfSl9XG4gICAgICA8L3VsPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldFN1YmNhdGVnb3JpZXMoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuY2F0ZWdvcnkuc3ViY2F0ZWdvcmllcykge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDx1bCBjbGFzc05hbWU9XCJsaXN0LWdyb3VwIGNhdGVnb3J5LXN1YmNhdGVnb3JpZXNcIj5cbiAgICAgICAge3RoaXMucHJvcHMuY2F0ZWdvcnkuc3ViY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIDxsaSBjbGFzc05hbWU9XCJsaXN0LWdyb3VwLWl0ZW0gY2F0ZWdvcnktc3ViY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAga2V5PXtjYXRlZ29yeS5pZH0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRpdGxlLXJvd1wiPlxuICAgICAgICAgICAgICA8aDQ+XG4gICAgICAgICAgICAgICAgPFJlYWRJY29uIGNhdGVnb3J5PXtjYXRlZ29yeX0gLz5cbiAgICAgICAgICAgICAgICA8YSBocmVmPXtjYXRlZ29yeS5hYnNvbHV0ZV91cmx9IGNsYXNzTmFtZT1cIml0ZW0tdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIHtjYXRlZ29yeS5uYW1lfVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgPFN0YXRzIGNhdGVnb3J5PXtjYXRlZ29yeX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8TGFzdEFjdGl2aXR5IGNhdGVnb3J5PXtjYXRlZ29yeX0gLz5cblxuICAgICAgICAgICAge3RoaXMuZ2V0U3ViY2F0ZWdvcnlEZXNjcmlwdGlvbihjYXRlZ29yeSl9XG4gICAgICAgICAgICB7dGhpcy5nZXRTdWJjYXRlZ29yeVN1YmNhdGVnb3JpZXMoY2F0ZWdvcnkpfVxuXG4gICAgICAgICAgPC9saT47XG4gICAgICAgIH0pfVxuICAgICAgPC91bD47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGlkPXsncGFuZWwtY2F0ZWdvcnktJyArIHRoaXMucHJvcHMuY2F0ZWdvcnkuaWR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldEhlYWRpbmdDbGFzc05hbWUoKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGluZy1pbmJsb2NrXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1oZWFkaW5nLXRvcC1yb3dcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgICAgICAgICA8UmVhZEljb24gY2F0ZWdvcnk9e3RoaXMucHJvcHMuY2F0ZWdvcnl9IC8+XG4gICAgICAgICAgICAgIDxhIGhyZWY9e3RoaXMucHJvcHMuY2F0ZWdvcnkuYWJzb2x1dGVfdXJsfSBjbGFzc05hbWU9XCJpdGVtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3RoaXMucHJvcHMuY2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDxTdGF0cyBjYXRlZ29yeT17dGhpcy5wcm9wcy5jYXRlZ29yeX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8TGFzdEFjdGl2aXR5IGNhdGVnb3J5PXt0aGlzLnByb3BzLmNhdGVnb3J5fSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7dGhpcy5nZXRDYXRlZ29yeURlc2NyaXB0aW9uKCl9XG5cbiAgICAgIHt0aGlzLmdldFN1YmNhdGVnb3JpZXMoKX1cblxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtcGFuZWxcIj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWljb25cIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPmluZm9fb3V0bGluZTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtYm9keVwiPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJsZWFkXCI+e2dldHRleHQoXCJObyBjYXRlZ29yaWVzIGFyZSBhdmFpbGFibGUuXCIpfTwvcD5cbiAgICAgICAgPHA+e2dldHRleHQoXCJObyBjYXRlZ29yaWVzIGFyZSBjdXJyZW50bHkgZGVmaW5lZCBvciB5b3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHNlZSB0aGVtLlwiKX08L3A+XG4gICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRMYXN0UG9zdGVyKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmNhdGVnb3J5Lmxhc3RfcG9zdGVyX3VybCkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxhIGhyZWY9e3RoaXMucHJvcHMuY2F0ZWdvcnkubGFzdF9wb3N0ZXJfdXJsfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIml0ZW0tdGl0bGVcIj5cbiAgICAgICAge3RoaXMucHJvcHMuY2F0ZWdvcnkubGFzdF9wb3N0ZXJfbmFtZX1cbiAgICAgIDwvYT47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPVwiaXRlbS10aXRsZVwiPlxuICAgICAgICB7dGhpcy5wcm9wcy5jYXRlZ29yeS5sYXN0X3Bvc3Rlcl9uYW1lfVxuICAgICAgPC9zcGFuPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfVxuICB9XG5cbiAgZ2V0VGhyZWFkRGV0YWlscygpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIFtcbiAgICAgIDxsaSBjbGFzc05hbWU9XCJ0aHJlYWQtdGl0bGVcIiBrZXk9XCJ0aXRsZVwiPlxuICAgICAgICA8YSBocmVmPXt0aGlzLnByb3BzLmNhdGVnb3J5Lmxhc3RfdGhyZWFkX3VybH0gY2xhc3NOYW1lPVwiaXRlbS10aXRsZVwiPlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNhdGVnb3J5Lmxhc3RfdGhyZWFkX3RpdGxlfVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPixcbiAgICAgIDxsaSBjbGFzc05hbWU9XCJwb3N0ZXItbmFtZVwiIGtleT1cInBvc3RlclwiPlxuICAgICAgICB7dGhpcy5nZXRMYXN0UG9zdGVyKCl9XG4gICAgICA8L2xpPixcbiAgICAgIDxsaSBjbGFzc05hbWU9XCJ0aHJlYWQtZGF0ZVwiIGtleT1cImRhdGVcIj5cbiAgICAgICAgPGFiYnIgdGl0bGU9e3RoaXMucHJvcHMuY2F0ZWdvcnkubGFzdF9wb3N0X29uLmZvcm1hdCgnTEwsIExUJyl9PlxuICAgICAgICAgIHt0aGlzLnByb3BzLmNhdGVnb3J5Lmxhc3RfcG9zdF9vbi5mcm9tTm93KCl9XG4gICAgICAgIDwvYWJicj5cbiAgICAgIDwvbGk+XG4gICAgXTtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG5cbiAgZ2V0TGFzdEFjdGl2aXR5KCkge1xuICAgIGlmICh0aGlzLnByb3BzLmNhdGVnb3J5LmFjbC5jYW5fYnJvd3NlKSB7XG4gICAgICBpZiAoIXRoaXMucHJvcHMuY2F0ZWdvcnkuYWNsLmNhbl9zZWVfYWxsX3RocmVhZHMpIHtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICByZXR1cm4gPGxpIGNsYXNzTmFtZT1cInRocmVhZC1tZXNzYWdlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgaW5mb19vdXRsaW5lXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtnZXR0ZXh0KFwiVGhpcyBjYXRlZ29yeSBpcyBwcml2YXRlLiBZb3UgY2FuIHNlZSBvbmx5IHlvdXIgb3duIHRocmVhZHMgd2l0aGluIGl0LlwiKX1cbiAgICAgICAgPC9saT47XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuY2F0ZWdvcnkubGFzdF90aHJlYWRfdGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGhyZWFkRGV0YWlscygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICByZXR1cm4gPGxpIGNsYXNzTmFtZT1cInRocmVhZC1tZXNzYWdlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgZXJyb3Jfb3V0bGluZVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB7Z2V0dGV4dChcIlRoaXMgY2F0ZWdvcnkgaXMgZW1wdHkuXCIpfVxuICAgICAgICA8L2xpPjtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxsaSBjbGFzc05hbWU9XCJ0aHJlYWQtbWVzc2FnZVwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgaGlnaGxpZ2h0X29mZlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtnZXR0ZXh0KFwiVGhpcyBjYXRlZ29yeSBpcyBwcm90ZWN0ZWQuIFlvdSBjYW4ndCBicm93c2UgaXQncyBjb250ZW50cy5cIil9XG4gICAgICA8L2xpPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPHVsIGNsYXNzTmFtZT1cImxpc3QtaW5saW5lIGNhdGVnb3J5LWxhc3QtYWN0aXZpdHlcIj5cbiAgICAgIHt0aGlzLmdldExhc3RBY3Rpdml0eSgpfVxuICAgIDwvdWw+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jYXRlZ29yeS5pc19yZWFkKSB7XG4gICAgICByZXR1cm4gJ21hdGVyaWFsLWljb24gcmVhZC1zdGF0dXMgaXRlbS1yZWFkJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdtYXRlcmlhbC1pY29uIHJlYWQtc3RhdHVzIGl0ZW0tbmV3JztcbiAgICB9XG4gIH1cblxuICBnZXRUaXRsZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jYXRlZ29yeS5pc19jbG9zZWQpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNhdGVnb3J5LmlzX3JlYWQpIHtcbiAgICAgICAgcmV0dXJuIGdldHRleHQoXCJUaGlzIGNhdGVnb3J5IGhhcyBubyBuZXcgcG9zdHMuIChjbG9zZWQpXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGdldHRleHQoXCJUaGlzIGNhdGVnb3J5IGhhcyBuZXcgcG9zdHMuIChjbG9zZWQpXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5jYXRlZ29yeS5pc19yZWFkKSB7XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KFwiVGhpcyBjYXRlZ29yeSBoYXMgbm8gbmV3IHBvc3RzLlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBnZXR0ZXh0KFwiVGhpcyBjYXRlZ29yeSBoYXMgbmV3IHBvc3RzLlwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRJY29uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmNhdGVnb3J5LmlzX2Nsb3NlZCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuY2F0ZWdvcnkuaXNfcmVhZCkge1xuICAgICAgICByZXR1cm4gJ2xvY2tfb3V0bGluZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2xvY2snO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5jYXRlZ29yeS5pc19yZWFkKSB7XG4gICAgICAgIHJldHVybiAnY2hhdF9idWJibGVfb3V0bGluZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2NoYXRfYnViYmxlJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e3RoaXMuZ2V0Q2xhc3NOYW1lKCl9IHRpdGxlPXt0aGlzLmdldFRpdGxlKCl9PlxuICAgICAge3RoaXMuZ2V0SWNvbigpfVxuICAgIDwvc3Bhbj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ2F0ZWdvcnkgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvY2F0ZWdvcmllcy9jYXRlZ29yeSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEVtcHR5TWVzc2FnZSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9jYXRlZ29yaWVzL2VtcHR5LW1lc3NhZ2UnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBwb2xscyBmcm9tICdtaXNhZ28vc2VydmljZXMvcG9sbHMnO1xuXG5sZXQgZGVoeWRyYXRlID0gZnVuY3Rpb24oY2F0ZWdvcnkpIHtcbiAgY2F0ZWdvcnkuc3ViY2F0ZWdvcmllcyA9IGNhdGVnb3J5LnN1YmNhdGVnb3JpZXMubWFwKGRlaHlkcmF0ZSk7XG5cbiAgaWYgKGNhdGVnb3J5Lmxhc3RfcG9zdF9vbikge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGNhdGVnb3J5LCB7XG4gICAgICBsYXN0X3Bvc3Rfb246IG1vbWVudChjYXRlZ29yeS5sYXN0X3Bvc3Rfb24pXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNhdGVnb3JpZXM6IG1pc2Fnby5nZXQoJ0NBVEVHT1JJRVMnKS5tYXAoZGVoeWRyYXRlKVxuICAgIH07XG5cbiAgICB0aGlzLnN0YXJ0UG9sbGluZyhtaXNhZ28uZ2V0KCdDQVRFR09SSUVTX0FQSScpKTtcbiAgfVxuXG4gIHN0YXJ0UG9sbGluZyhhcGkpIHtcbiAgICBwb2xscy5zdGFydCh7XG4gICAgICBwb2xsOiAnY2F0ZWdvcmllcycsXG4gICAgICB1cmw6IGFwaSxcbiAgICAgIGZyZXF1ZW5jeTogMTgwICogMTAwMCxcbiAgICAgIHVwZGF0ZTogdGhpcy51cGRhdGVcbiAgICB9KTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgdXBkYXRlID0gKGRhdGEpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNhdGVnb3JpZXM6IGRhdGEubWFwKGRlaHlkcmF0ZSlcbiAgICB9KTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBnZXRDbGFzc05hbWUoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuY2F0ZWdvcmllcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAncGFnZSBwYWdlLWNhdGVnb3JpZXMnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ3BhZ2UgcGFnZS1jYXRlZ29yaWVzIHBhZ2UtbWVzc2FnZSc7XG4gICAgfVxuICB9XG5cbiAgZ2V0SGVhZGluZygpIHtcbiAgICBpZiAobWlzYWdvLmdldCgnQ0FURUdPUklFU19PTl9JTkRFWCcpKSB7XG4gICAgICByZXR1cm4gbWlzYWdvLmdldCgnU0VUVElOR1MnKS5mb3J1bV9uYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIkNhdGVnb3JpZXNcIik7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2F0ZWdvcmllc0xpc3QoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuY2F0ZWdvcmllcy5sZW5ndGgpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImNhdGVnb3JpZXMtbGlzdFwiPlxuICAgICAgICB7dGhpcy5zdGF0ZS5jYXRlZ29yaWVzLm1hcChmdW5jdGlvbihjYXRlZ29yeSkge1xuICAgICAgICAgIHJldHVybiA8Q2F0ZWdvcnkgY2F0ZWdvcnk9e2NhdGVnb3J5fSBrZXk9e2NhdGVnb3J5LmlkfSAvPjtcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPEVtcHR5TWVzc2FnZSAvPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfT5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGgxPnt0aGlzLmdldEhlYWRpbmcoKX08L2gxPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICB7dGhpcy5nZXRDYXRlZ29yaWVzTGlzdCgpfVxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0KHN0b3JlKSB7XG4gIHJldHVybiB7XG4gICAgJ3RpY2snOiBzdG9yZS50aWNrLnRpY2ssXG4gIH07XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRUaHJlYWRzQ291bnQoKSB7XG4gICAgbGV0IHN0cmluZyA9IG5nZXR0ZXh0KFxuICAgICAgXCIlKHRocmVhZHMpcyB0aHJlYWRcIixcbiAgICAgIFwiJSh0aHJlYWRzKXMgdGhyZWFkc1wiLFxuICAgICAgdGhpcy5wcm9wcy5jYXRlZ29yeS50aHJlYWRzKTtcblxuICAgIHJldHVybiBpbnRlcnBvbGF0ZShzdHJpbmcsIHtcbiAgICAgICd0aHJlYWRzJzogdGhpcy5wcm9wcy5jYXRlZ29yeS50aHJlYWRzXG4gICAgfSwgdHJ1ZSk7XG4gIH1cblxuICBnZXRQb3N0c0NvdW50KCkge1xuICAgIGxldCBzdHJpbmcgPSBuZ2V0dGV4dChcbiAgICAgIFwiJShwb3N0cylzIHBvc3RcIixcbiAgICAgIFwiJShwb3N0cylzIHBvc3RzXCIsXG4gICAgICB0aGlzLnByb3BzLmNhdGVnb3J5LnBvc3RzKTtcblxuICAgIHJldHVybiBpbnRlcnBvbGF0ZShzdHJpbmcsIHtcbiAgICAgICdwb3N0cyc6IHRoaXMucHJvcHMuY2F0ZWdvcnkucG9zdHNcbiAgICB9LCB0cnVlKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDx1bCBjbGFzc05hbWU9XCJsaXN0LWlubGluZSBjYXRlZ29yeS1zdGF0c1wiPlxuICAgICAgPGxpIGNsYXNzTmFtZT1cImNhdGVnb3J5LXRocmVhZHNcIj5cbiAgICAgICAge3RoaXMuZ2V0VGhyZWFkc0NvdW50KCl9XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzTmFtZT1cImNhdGVnb3J5LXBvc3RzXCI+XG4gICAgICAgIHt0aGlzLmdldFBvc3RzQ291bnQoKX1cbiAgICAgIDwvbGk+XG4gICAgPC91bD47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQXZhdGFyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2F2YXRhcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmNvbnN0IEJBU0VfVVJMID0gJCgnYmFzZScpLmF0dHIoJ2hyZWYnKSArICd1c2VyLWF2YXRhcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGdldEF2YXRhclNpemUoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMudXBsb2FkKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5vcHRpb25zLmNyb3BfdG1wLnNpemU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm9wdGlvbnMuY3JvcF9vcmcuc2l6ZTtcbiAgICB9XG4gIH1cblxuICBnZXRBdmF0YXJTZWNyZXQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMudXBsb2FkKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5vcHRpb25zLmNyb3BfdG1wLnNlY3JldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub3B0aW9ucy5jcm9wX29yZy5zZWNyZXQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXZhdGFySGFzaCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy51cGxvYWQgfHwgdGhpcy5wcm9wcy51c2VyLmF2YXRhcl9oYXNoO1xuICB9XG5cbiAgZ2V0SW1hZ2VQYXRoKCkge1xuICAgIHJldHVybiBbXG4gICAgICBCQVNFX1VSTCxcbiAgICAgIHRoaXMuZ2V0QXZhdGFyU2VjcmV0KCkgKyAnOicgKyB0aGlzLmdldEF2YXRhckhhc2goKSxcbiAgICAgIHRoaXMucHJvcHMudXNlci5pZCArICcucG5nJ1xuICAgIF0uam9pbignLycpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgbGV0IGNyb3BpdCA9ICQoJy5jcm9wLWZvcm0nKTtcbiAgICBjcm9waXQud2lkdGgodGhpcy5nZXRBdmF0YXJTaXplKCkpO1xuXG4gICAgY3JvcGl0LmNyb3BpdCh7XG4gICAgICAnd2lkdGgnOiB0aGlzLmdldEF2YXRhclNpemUoKSxcbiAgICAgICdoZWlnaHQnOiB0aGlzLmdldEF2YXRhclNpemUoKSxcbiAgICAgICdpbWFnZVN0YXRlJzoge1xuICAgICAgICAnc3JjJzogdGhpcy5nZXRJbWFnZVBhdGgoKVxuICAgICAgfSxcbiAgICAgIG9uSW1hZ2VMb2FkZWQ6ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudXBsb2FkKSB7XG4gICAgICAgICAgLy8gY2VudGVyIHVwbG9hZGVkIGltYWdlXG4gICAgICAgICAgbGV0IHpvb21MZXZlbCA9IGNyb3BpdC5jcm9waXQoJ3pvb20nKTtcbiAgICAgICAgICBsZXQgaW1hZ2VTaXplID0gY3JvcGl0LmNyb3BpdCgnaW1hZ2VTaXplJyk7XG5cbiAgICAgICAgICAvLyBpcyBpdCB3aWRlciB0aGFuIHRhbGxlcj9cbiAgICAgICAgICBpZiAoaW1hZ2VTaXplLndpZHRoID4gaW1hZ2VTaXplLmhlaWdodCkge1xuICAgICAgICAgICAgbGV0IGRpc3BsYXllZFdpZHRoID0gKGltYWdlU2l6ZS53aWR0aCAqIHpvb21MZXZlbCk7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0WCA9IChkaXNwbGF5ZWRXaWR0aCAtIHRoaXMuZ2V0QXZhdGFyU2l6ZSgpKSAvIC0yO1xuXG4gICAgICAgICAgICBjcm9waXQuY3JvcGl0KCdvZmZzZXQnLCB7XG4gICAgICAgICAgICAgICd4Jzogb2Zmc2V0WCxcbiAgICAgICAgICAgICAgJ3knOiAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGltYWdlU2l6ZS53aWR0aCA8IGltYWdlU2l6ZS5oZWlnaHQpIHtcbiAgICAgICAgICAgIGxldCBkaXNwbGF5ZWRIZWlnaHQgPSAoaW1hZ2VTaXplLmhlaWdodCAqIHpvb21MZXZlbCk7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0WSA9IChkaXNwbGF5ZWRIZWlnaHQgLSB0aGlzLmdldEF2YXRhclNpemUoKSkgLyAtMjtcblxuICAgICAgICAgICAgY3JvcGl0LmNyb3BpdCgnb2Zmc2V0Jywge1xuICAgICAgICAgICAgICAneCc6IDAsXG4gICAgICAgICAgICAgICd5Jzogb2Zmc2V0WVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVzZSBwcmVzZXJ2ZWQgY3JvcFxuICAgICAgICAgIGxldCBjcm9wID0gdGhpcy5wcm9wcy5vcHRpb25zLmNyb3Bfb3JnLmNyb3A7XG4gICAgICAgICAgaWYgKGNyb3ApIHtcbiAgICAgICAgICAgIGNyb3BpdC5jcm9waXQoJ3pvb20nLCBjcm9wLnpvb20pO1xuICAgICAgICAgICAgY3JvcGl0LmNyb3BpdCgnb2Zmc2V0Jywge1xuICAgICAgICAgICAgICAneCc6IGNyb3AueCxcbiAgICAgICAgICAgICAgJ3knOiBjcm9wLnlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgJCgnLmNyb3AtZm9ybScpLmNyb3BpdCgnZGlzYWJsZScpO1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBjcm9wQXZhdGFyID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlLmlzTG9hZGluZykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgJ2lzTG9hZGluZyc6IHRydWVcbiAgICB9KTtcblxuICAgIGxldCBhdmF0YXJUeXBlID0gdGhpcy5wcm9wcy51cGxvYWQgPyAnY3JvcF90bXAnIDogJ2Nyb3Bfb3JnJztcbiAgICBsZXQgY3JvcGl0ID0gJCgnLmNyb3AtZm9ybScpO1xuXG4gICAgYWpheC5wb3N0KHRoaXMucHJvcHMudXNlci5hcGlfdXJsLmF2YXRhciwge1xuICAgICAgJ2F2YXRhcic6IGF2YXRhclR5cGUsXG4gICAgICAnY3JvcCc6IHtcbiAgICAgICAgJ29mZnNldCc6IGNyb3BpdC5jcm9waXQoJ29mZnNldCcpLFxuICAgICAgICAnem9vbSc6IGNyb3BpdC5jcm9waXQoJ3pvb20nKVxuICAgICAgfVxuICAgIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIHRoaXMucHJvcHMub25Db21wbGV0ZShkYXRhLmF2YXRhcl9oYXNoLCBkYXRhLm9wdGlvbnMpO1xuICAgICAgc25hY2tiYXIuc3VjY2VzcyhkYXRhLmRldGFpbCk7XG4gICAgfSwgKHJlamVjdGlvbikgPT4ge1xuICAgICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICBzbmFja2Jhci5lcnJvcihyZWplY3Rpb24uZGV0YWlsKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zaG93RXJyb3IocmVqZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1ib2R5IG1vZGFsLWF2YXRhci1jcm9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY3JvcC1mb3JtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjcm9waXQtaW1hZ2UtcHJldmlld1wiPjwvZGl2PlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzc05hbWU9XCJjcm9waXQtaW1hZ2Utem9vbS1pbnB1dFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWZvb3RlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC02IGNvbC1tZC1vZmZzZXQtM1wiPlxuXG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXt0aGlzLmNyb3BBdmF0YXJ9XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiPlxuICAgICAgICAgICAge3RoaXMucHJvcHMudXBsb2FkID8gZ2V0dGV4dChcIlNldCBhdmF0YXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldHRleHQoXCJDcm9wIGltYWdlXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXt0aGlzLnByb3BzLnNob3dJbmRleH1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1kZWZhdWx0IGJ0bi1ibG9ja1wiPlxuICAgICAgICAgICAge2dldHRleHQoXCJDYW5jZWxcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgYmF0Y2ggZnJvbSAnbWlzYWdvL3V0aWxzL2JhdGNoJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBHYWxsZXJ5SXRlbSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgc2VsZWN0ID0gKCkgPT4ge1xuICAgIHRoaXMucHJvcHMuc2VsZWN0KHRoaXMucHJvcHMuaW1hZ2UpO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3Rpb24gPT09IHRoaXMucHJvcHMuaW1hZ2UpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiAnYnRuIGJ0bi1hdmF0YXIgYnRuLWRpc2FibGVkIGF2YXRhci1zZWxlY3RlZCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gJ2J0biBidG4tYXZhdGFyIGF2YXRhci1zZWxlY3RlZCc7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gJ2J0biBidG4tYXZhdGFyIGJ0bi1kaXNhYmxlZCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYnRuIGJ0bi1hdmF0YXInO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuc2VsZWN0fT5cbiAgICAgIDxpbWcgc3JjPXttaXNhZ28uZ2V0KCdNRURJQV9VUkwnKSArIHRoaXMucHJvcHMuaW1hZ2V9IC8+XG4gICAgPC9idXR0b24+XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2FsbGVyeSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYXZhdGFycy1nYWxsZXJ5XCI+XG4gICAgICA8aDM+e3RoaXMucHJvcHMubmFtZX08L2gzPlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImF2YXRhcnMtZ2FsbGVyeS1pbWFnZXNcIj5cbiAgICAgICAge2JhdGNoKHRoaXMucHJvcHMuaW1hZ2VzLCA0LCBudWxsKS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiIGtleT17aX0+XG4gICAgICAgICAgICB7cm93Lm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJjb2wteHMtM1wiIGtleT17aX0+XG4gICAgICAgICAgICAgICAge2l0ZW0gPyA8R2FsbGVyeUl0ZW0gaW1hZ2U9e2l0ZW19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMucHJvcHMuZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PXt0aGlzLnByb3BzLnNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb249e3RoaXMucHJvcHMuc2VsZWN0aW9ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDogPGRpdiBjbGFzc05hbWU9XCJibGFuay1hdmF0YXJcIiAvPn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICdzZWxlY3Rpb24nOiBudWxsLFxuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgc2VsZWN0ID0gKGltYWdlKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBzZWxlY3Rpb246IGltYWdlXG4gICAgfSk7XG4gIH07XG5cbiAgc2F2ZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZS5pc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICdpc0xvYWRpbmcnOiB0cnVlXG4gICAgfSk7XG5cbiAgICBhamF4LnBvc3QodGhpcy5wcm9wcy51c2VyLmFwaV91cmwuYXZhdGFyLCB7XG4gICAgICBhdmF0YXI6ICdnYWxsZXJpZXMnLFxuICAgICAgaW1hZ2U6IHRoaXMuc3RhdGUuc2VsZWN0aW9uXG4gICAgfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAnaXNMb2FkaW5nJzogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICBzbmFja2Jhci5zdWNjZXNzKHJlc3BvbnNlLmRldGFpbCk7XG4gICAgICB0aGlzLnByb3BzLm9uQ29tcGxldGUocmVzcG9uc2UuYXZhdGFyX2hhc2gsIHJlc3BvbnNlLm9wdGlvbnMpO1xuICAgIH0sIChyZWplY3Rpb24pID0+IHtcbiAgICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgc25hY2tiYXIuZXJyb3IocmVqZWN0aW9uLmRldGFpbCk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICdpc0xvYWRpbmcnOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2hvd0Vycm9yKHJlamVjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keSBtb2RhbC1hdmF0YXItZ2FsbGVyeVwiPlxuXG4gICAgICAgIHt0aGlzLnByb3BzLm9wdGlvbnMuZ2FsbGVyaWVzLm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgIHJldHVybiA8R2FsbGVyeSBuYW1lPXtpdGVtLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlcz17aXRlbS5pbWFnZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbj17dGhpcy5zdGF0ZS5zZWxlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0PXt0aGlzLnNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpfSAvPjtcbiAgICAgICAgfSl9XG5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC02IGNvbC1tZC1vZmZzZXQtM1wiPlxuXG4gICAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e3RoaXMuc2F2ZX1cbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZz17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshdGhpcy5zdGF0ZS5zZWxlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiPlxuICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5zZWxlY3Rpb24gPyBnZXR0ZXh0KFwiU2F2ZSBjaG9pY2VcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0dGV4dChcIlNlbGVjdCBhdmF0YXJcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXt0aGlzLnByb3BzLnNob3dJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tZGVmYXVsdCBidG4tYmxvY2tcIj5cbiAgICAgICAgICAgICAge2dldHRleHQoXCJDYW5jZWxcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBBdmF0YXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYXZhdGFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IExvYWRlciBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9sb2FkZXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICdpc0xvYWRpbmcnOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBjYWxsQXBpKGF2YXRhclR5cGUpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5pc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICdpc0xvYWRpbmcnOiB0cnVlXG4gICAgfSk7XG5cbiAgICBhamF4LnBvc3QodGhpcy5wcm9wcy51c2VyLmFwaV91cmwuYXZhdGFyLCB7XG4gICAgICBhdmF0YXI6IGF2YXRhclR5cGVcbiAgICB9KS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICdpc0xvYWRpbmcnOiBmYWxzZVxuICAgICAgfSk7XG5cbiAgICAgIHNuYWNrYmFyLnN1Y2Nlc3MocmVzcG9uc2UuZGV0YWlsKTtcbiAgICAgIHRoaXMucHJvcHMub25Db21wbGV0ZShyZXNwb25zZS5hdmF0YXJfaGFzaCwgcmVzcG9uc2Uub3B0aW9ucyk7XG4gICAgfSwgKHJlamVjdGlvbikgPT4ge1xuICAgICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICBzbmFja2Jhci5lcnJvcihyZWplY3Rpb24uZGV0YWlsKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcm9wcy5zaG93RXJyb3IocmVqZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgc2V0R3JhdmF0YXIgPSAoKSA9PiB7XG4gICAgdGhpcy5jYWxsQXBpKCdncmF2YXRhcicpO1xuICB9O1xuXG4gIHNldEdlbmVyYXRlZCA9ICgpID0+IHtcbiAgICB0aGlzLmNhbGxBcGkoJ2dlbmVyYXRlZCcpO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIGdldEdyYXZhdGFyQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLm9wdGlvbnMuZ3JhdmF0YXIpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8QnV0dG9uIG9uQ2xpY2s9e3RoaXMuc2V0R3JhdmF0YXJ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuLWRlZmF1bHQgYnRuLWJsb2NrIGJ0bi1hdmF0YXItZ3JhdmF0YXJcIj5cbiAgICAgICAge2dldHRleHQoXCJEb3dubG9hZCBteSBHcmF2YXRhclwiKX1cbiAgICAgIDwvQnV0dG9uPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldENyb3BCdXR0b24oKSB7XG4gICAgaWYgKHRoaXMucHJvcHMub3B0aW9ucy5jcm9wX29yZykge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxCdXR0b24gb25DbGljaz17dGhpcy5wcm9wcy5zaG93Q3JvcH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4tZGVmYXVsdCBidG4tYmxvY2sgYnRuLWF2YXRhci1jcm9wXCI+XG4gICAgICAgIHtnZXR0ZXh0KFwiUmUtY3JvcCB1cGxvYWRlZCBpbWFnZVwiKX1cbiAgICAgIDwvQnV0dG9uPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldFVwbG9hZEJ1dHRvbigpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zLnVwbG9hZCkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxCdXR0b24gb25DbGljaz17dGhpcy5wcm9wcy5zaG93VXBsb2FkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1kZWZhdWx0IGJ0bi1ibG9jayBidG4tYXZhdGFyLXVwbG9hZFwiPlxuICAgICAgICB7Z2V0dGV4dChcIlVwbG9hZCBuZXcgaW1hZ2VcIil9XG4gICAgICA8L0J1dHRvbj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRHYWxsZXJ5QnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLm9wdGlvbnMuZ2FsbGVyaWVzKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPEJ1dHRvbiBvbkNsaWNrPXt0aGlzLnByb3BzLnNob3dHYWxsZXJ5fVxuICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0bi1kZWZhdWx0IGJ0bi1ibG9jayBidG4tYXZhdGFyLWdhbGxlcnlcIj5cbiAgICAgICAge2dldHRleHQoXCJQaWNrIGF2YXRhciBmcm9tIGdhbGxlcnlcIil9XG4gICAgICA8L0J1dHRvbj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRBdmF0YXJQcmV2aWV3KCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICBsZXQgdXNlclBldmlldyA9IHtcbiAgICAgIGlkOiB0aGlzLnByb3BzLnVzZXIuaWQsXG4gICAgICBhdmF0YXJfaGFzaDogdGhpcy5wcm9wcy5vcHRpb25zLmF2YXRhcl9oYXNoXG4gICAgfVxuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgICBpZiAodGhpcy5zdGF0ZS5pc0xvYWRpbmcpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImF2YXRhci1wcmV2aWV3IHByZXZpZXctbG9hZGluZ1wiPlxuICAgICAgICA8QXZhdGFyIHVzZXI9e3VzZXJQZXZpZXd9IHNpemU9XCIyMDBcIiAvPlxuICAgICAgICA8TG9hZGVyIC8+XG4gICAgICA8L2Rpdj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJhdmF0YXItcHJldmlld1wiPlxuICAgICAgICA8QXZhdGFyIHVzZXI9e3VzZXJQZXZpZXd9IHNpemU9XCIyMDBcIiAvPlxuICAgICAgPC9kaXY+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHkgbW9kYWwtYXZhdGFyLWluZGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC01XCI+XG5cbiAgICAgICAgICB7dGhpcy5nZXRBdmF0YXJQcmV2aWV3KCl9XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW1kLTdcIj5cblxuICAgICAgICAgIHt0aGlzLmdldEdyYXZhdGFyQnV0dG9uKCl9XG5cbiAgICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e3RoaXMuc2V0R2VuZXJhdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuLWRlZmF1bHQgYnRuLWJsb2NrIGJ0bi1hdmF0YXItZ2VuZXJhdGVcIj5cbiAgICAgICAgICAgIHtnZXR0ZXh0KFwiR2VuZXJhdGUgbXkgaW5kaXZpZHVhbCBhdmF0YXJcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICB7dGhpcy5nZXRDcm9wQnV0dG9uKCl9XG4gICAgICAgICAge3RoaXMuZ2V0VXBsb2FkQnV0dG9uKCl9XG4gICAgICAgICAge3RoaXMuZ2V0R2FsbGVyeUJ1dHRvbigpfVxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEF2YXRhckluZGV4IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2NoYW5nZS1hdmF0YXIvaW5kZXgnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBBdmF0YXJDcm9wIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2NoYW5nZS1hdmF0YXIvY3JvcCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEF2YXRhclVwbG9hZCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9jaGFuZ2UtYXZhdGFyL3VwbG9hZCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEF2YXRhckdhbGxlcnkgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvY2hhbmdlLWF2YXRhci9nYWxsZXJ5JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgTG9hZGVyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL21vZGFsLWxvYWRlcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IHsgdXBkYXRlQXZhdGFyIH0gZnJvbSAnbWlzYWdvL3JlZHVjZXJzL3VzZXJzJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBDaGFuZ2VBdmF0YXJFcnJvciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldEVycm9yUmVhc29uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnJlYXNvbikge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxwIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7X19odG1sOiB0aGlzLnByb3BzLnJlYXNvbn19IC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtaWNvblwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgcmVtb3ZlX2NpcmNsZV9vdXRsaW5lXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWJvZHlcIj5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwibGVhZFwiPlxuICAgICAgICAgIHt0aGlzLnByb3BzLm1lc3NhZ2V9XG4gICAgICAgIDwvcD5cbiAgICAgICAge3RoaXMuZ2V0RXJyb3JSZWFzb24oKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgYWpheC5nZXQodGhpcy5wcm9wcy51c2VyLmFwaV91cmwuYXZhdGFyKS50aGVuKChvcHRpb25zKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgJ2NvbXBvbmVudCc6IEF2YXRhckluZGV4LFxuICAgICAgICAnb3B0aW9ucyc6IG9wdGlvbnMsXG4gICAgICAgICdlcnJvcic6IG51bGxcbiAgICAgIH0pO1xuICAgIH0sIChyZWplY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yKHJlamVjdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIHNob3dFcnJvciA9IChlcnJvcikgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZXJyb3JcbiAgICB9KTtcbiAgfTtcblxuICBzaG93SW5kZXggPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAnY29tcG9uZW50JzogQXZhdGFySW5kZXhcbiAgICB9KTtcbiAgfTtcblxuICBzaG93VXBsb2FkID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgJ2NvbXBvbmVudCc6IEF2YXRhclVwbG9hZFxuICAgIH0pO1xuICB9O1xuXG4gIHNob3dDcm9wID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgJ2NvbXBvbmVudCc6IEF2YXRhckNyb3BcbiAgICB9KTtcbiAgfTtcblxuICBzaG93R2FsbGVyeSA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICdjb21wb25lbnQnOiBBdmF0YXJHYWxsZXJ5XG4gICAgfSk7XG4gIH07XG5cbiAgY29tcGxldGVGbG93ID0gKGF2YXRhckhhc2gsIG9wdGlvbnMpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaCh1cGRhdGVBdmF0YXIodGhpcy5wcm9wcy51c2VyLCBhdmF0YXJIYXNoKSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICdjb21wb25lbnQnOiBBdmF0YXJJbmRleCxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBnZXRCb2R5KCkge1xuICAgIGlmICh0aGlzLnN0YXRlKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8Q2hhbmdlQXZhdGFyRXJyb3IgbWVzc2FnZT17dGhpcy5zdGF0ZS5lcnJvci5kZXRhaWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uPXt0aGlzLnN0YXRlLmVycm9yLnJlYXNvbn0gLz47XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8dGhpcy5zdGF0ZS5jb21wb25lbnQgb3B0aW9ucz17dGhpcy5zdGF0ZS5vcHRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3RoaXMucHJvcHMudXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbXBsZXRlPXt0aGlzLmNvbXBsZXRlRmxvd31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93RXJyb3I9e3RoaXMuc2hvd0Vycm9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dJbmRleD17dGhpcy5zaG93SW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Nyb3A9e3RoaXMuc2hvd0Nyb3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZD17dGhpcy5zaG93VXBsb2FkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dHYWxsZXJ5PXt0aGlzLnNob3dHYWxsZXJ5fSAvPjtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxMb2FkZXIgLz47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH1cbiAgfVxuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgIGlmICh0aGlzLnN0YXRlICYmIHRoaXMuc3RhdGUuZXJyb3IpIHtcbiAgICAgIHJldHVybiBcIm1vZGFsLWRpYWxvZyBtb2RhbC1tZXNzYWdlIG1vZGFsLWNoYW5nZS1hdmF0YXJcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwibW9kYWwtZGlhbG9nIG1vZGFsLWNoYW5nZS1hdmF0YXJcIjtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRDbGFzc05hbWUoKX1cbiAgICAgICAgICAgICAgICByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0dGV4dChcIkNsb3NlXCIpfT5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGg0IGNsYXNzTmFtZT1cIm1vZGFsLXRpdGxlXCI+e2dldHRleHQoXCJDaGFuZ2UgeW91ciBhdmF0YXJcIil9PC9oND5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAge3RoaXMuZ2V0Qm9keSgpfVxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0KHN0YXRlKSB7XG4gIHJldHVybiB7XG4gICAgJ3VzZXInOiBzdGF0ZS5hdXRoLnVzZXJcbiAgfTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQXZhdGFyQ3JvcCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9jaGFuZ2UtYXZhdGFyL2Nyb3AnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBCdXR0b24gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYnV0dG9uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IGZpbGVTaXplIGZyb20gJ21pc2Fnby91dGlscy9maWxlLXNpemUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICdpbWFnZSc6IG51bGwsXG4gICAgICAncHJldmlldyc6IG51bGwsXG4gICAgICAncHJvZ3Jlc3MnOiAwLFxuICAgICAgJ3VwbG9hZGVkJzogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgdmFsaWRhdGVGaWxlKGltYWdlKSB7XG4gICAgaWYgKGltYWdlLnNpemUgPiB0aGlzLnByb3BzLm9wdGlvbnMudXBsb2FkLmxpbWl0KSB7XG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUoZ2V0dGV4dChcIlNlbGVjdGVkIGZpbGUgaXMgdG9vIGJpZy4gKCUoZmlsZXNpemUpcylcIiksIHtcbiAgICAgICAgJ2ZpbGVzaXplJzogZmlsZVNpemUoaW1hZ2Uuc2l6ZSlcbiAgICAgIH0sIHRydWUpO1xuICAgIH1cblxuICAgIGxldCBpbnZhbGlkVHlwZU1zZyA9IGdldHRleHQoXCJTZWxlY3RlZCBmaWxlIHR5cGUgaXMgbm90IHN1cHBvcnRlZC5cIik7XG4gICAgaWYgKHRoaXMucHJvcHMub3B0aW9ucy51cGxvYWQuYWxsb3dlZF9taW1lX3R5cGVzLmluZGV4T2YoaW1hZ2UudHlwZSkgPT09IC0xKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFR5cGVNc2c7XG4gICAgfVxuXG4gICAgbGV0IGV4dGVuc2lvbkZvdW5kID0gZmFsc2U7XG4gICAgbGV0IGxvd2VyZWRGaWxlbmFtZSA9IGltYWdlLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLnByb3BzLm9wdGlvbnMudXBsb2FkLmFsbG93ZWRfZXh0ZW5zaW9ucy5tYXAoZnVuY3Rpb24oZXh0ZW5zaW9uKSB7XG4gICAgICBpZiAobG93ZXJlZEZpbGVuYW1lLnN1YnN0cihleHRlbnNpb24ubGVuZ3RoICogLTEpID09PSBleHRlbnNpb24pIHtcbiAgICAgICAgZXh0ZW5zaW9uRm91bmQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFleHRlbnNpb25Gb3VuZCkge1xuICAgICAgcmV0dXJuIGludmFsaWRUeXBlTXNnO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgcGlja0ZpbGUgPSAoKSA9PiB7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F2YXRhci1oaWRkZW4tdXBsb2FkJykuY2xpY2soKTtcbiAgfTtcblxuICB1cGxvYWRGaWxlID0gKCkgPT4ge1xuICAgIGxldCBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdmF0YXItaGlkZGVuLXVwbG9hZCcpLmZpbGVzWzBdO1xuXG4gICAgbGV0IHZhbGlkYXRpb25FcnJvciA9IHRoaXMudmFsaWRhdGVGaWxlKGltYWdlKTtcbiAgICBpZiAodmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICBzbmFja2Jhci5lcnJvcih2YWxpZGF0aW9uRXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaW1hZ2UsXG4gICAgICAncHJldmlldyc6IFVSTC5jcmVhdGVPYmplY3RVUkwoaW1hZ2UpLFxuICAgICAgJ3Byb2dyZXNzJzogMFxuICAgIH0pO1xuXG4gICAgbGV0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBkYXRhLmFwcGVuZCgnYXZhdGFyJywgJ3VwbG9hZCcpO1xuICAgIGRhdGEuYXBwZW5kKCdpbWFnZScsIGltYWdlKTtcblxuICAgIGFqYXgudXBsb2FkKHRoaXMucHJvcHMudXNlci5hcGlfdXJsLmF2YXRhciwgZGF0YSwgKHByb2dyZXNzKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgcHJvZ3Jlc3NcbiAgICAgIH0pO1xuICAgIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAnb3B0aW9ucyc6IGRhdGEub3B0aW9ucyxcbiAgICAgICAgJ3VwbG9hZGVkJzogZGF0YS5kZXRhaWxcbiAgICAgIH0pO1xuICAgICAgc25hY2tiYXIuaW5mbyhnZXR0ZXh0KFwiWW91ciBpbWFnZSBoYXMgYmVlbiB1cGxvYWRlZCBhbmQgeW91IG1heSBub3cgY3JvcCBpdC5cIikpO1xuICAgIH0sIChyZWplY3Rpb24pID0+IHtcbiAgICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgc25hY2tiYXIuZXJyb3IocmVqZWN0aW9uLmRldGFpbCk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICdpc0xvYWRpbmcnOiBmYWxzZSxcbiAgICAgICAgICAnaW1hZ2UnOiBudWxsLFxuICAgICAgICAgICdwcm9ncmVzcyc6IDBcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvcHMuc2hvd0Vycm9yKHJlamVjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgZ2V0VXBsb2FkUmVxdWlyZW1lbnRzKG9wdGlvbnMpIHtcbiAgICBsZXQgZXh0ZW5zaW9ucyA9IG9wdGlvbnMuYWxsb3dlZF9leHRlbnNpb25zLm1hcChmdW5jdGlvbihleHRlbnNpb24pIHtcbiAgICAgIHJldHVybiBleHRlbnNpb24uc3Vic3RyKDEpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGludGVycG9sYXRlKGdldHRleHQoXCIlKGZpbGVzKXMgZmlsZXMgc21hbGxlciB0aGFuICUobGltaXQpc1wiKSwge1xuICAgICAgICAnZmlsZXMnOiBleHRlbnNpb25zLmpvaW4oJywgJyksXG4gICAgICAgICdsaW1pdCc6IGZpbGVTaXplKG9wdGlvbnMubGltaXQpXG4gICAgICB9LCB0cnVlKTtcbiAgfVxuXG4gIGdldFVwbG9hZEJ1dHRvbigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keSBtb2RhbC1hdmF0YXItdXBsb2FkXCI+XG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiYnRuLXBpY2stZmlsZVwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5waWNrRmlsZX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICBpbnB1dFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHtnZXR0ZXh0KFwiU2VsZWN0IGZpbGVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgICAge3RoaXMuZ2V0VXBsb2FkUmVxdWlyZW1lbnRzKHRoaXMucHJvcHMub3B0aW9ucy51cGxvYWQpfVxuICAgICAgICA8L3A+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cblxuICBnZXRVcGxvYWRQcm9ncmVzc0xhYmVsKCkge1xuICAgIHJldHVybiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiJShwcm9ncmVzcylzICUgY29tcGxldGVcIiksIHtcbiAgICAgICAgJ3Byb2dyZXNzJzogdGhpcy5zdGF0ZS5wcm9ncmVzc1xuICAgICAgfSwgdHJ1ZSk7XG4gIH1cblxuICBnZXRVcGxvYWRQcm9ncmVzcygpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keSBtb2RhbC1hdmF0YXItdXBsb2FkXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkLXByb2dyZXNzXCI+XG4gICAgICAgICAgPGltZyBzcmM9e3RoaXMuc3RhdGUucHJldmlld30gLz5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvZ3Jlc3MtYmFyXCIgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW5vdz1cInt0aGlzLnN0YXRlLnByb2dyZXNzfVwiXG4gICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiXG4gICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IHRoaXMuc3RhdGUucHJvZ3Jlc3MgKyAnJSd9fT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPnt0aGlzLmdldFVwbG9hZFByb2dyZXNzTGFiZWwoKX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cblxuICByZW5kZXJVcGxvYWQoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2PlxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICBpZD1cImF2YXRhci1oaWRkZW4tdXBsb2FkXCJcbiAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaWRkZW4tZmlsZS11cGxvYWRcIlxuICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnVwbG9hZEZpbGV9IC8+XG4gICAgICB7dGhpcy5zdGF0ZS5pbWFnZSA/IHRoaXMuZ2V0VXBsb2FkUHJvZ3Jlc3MoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmdldFVwbG9hZEJ1dHRvbigpfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbWQtNiBjb2wtbWQtb2Zmc2V0LTNcIj5cblxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17dGhpcy5wcm9wcy5zaG93SW5kZXh9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ISF0aGlzLnN0YXRlLmltYWdlfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYnRuLWRlZmF1bHQgYnRuLWJsb2NrXCI+XG4gICAgICAgICAgICB7Z2V0dGV4dChcIkNhbmNlbFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG5cbiAgcmVuZGVyQ3JvcCgpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxBdmF0YXJDcm9wIG9wdGlvbnM9e3RoaXMuc3RhdGUub3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dGhpcy5wcm9wcy51c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICB1cGxvYWQ9e3RoaXMuc3RhdGUudXBsb2FkZWR9XG4gICAgICAgICAgICAgICAgICAgICAgIG9uQ29tcGxldGU9e3RoaXMucHJvcHMub25Db21wbGV0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yPXt0aGlzLnByb3BzLnNob3dFcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgc2hvd0luZGV4PXt0aGlzLnByb3BzLnNob3dJbmRleH0gLz47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuICh0aGlzLnN0YXRlLnVwbG9hZGVkID8gdGhpcy5yZW5kZXJDcm9wKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnJlbmRlclVwbG9hZCgpKTtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBpc1ZhbGlkYXRlZCgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucHJvcHMudmFsaWRhdGlvbiAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgfVxuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJ2Zvcm0tZ3JvdXAnO1xuICAgIGlmICh0aGlzLmlzVmFsaWRhdGVkKCkpIHtcbiAgICAgIGNsYXNzTmFtZSArPSAnIGhhcy1mZWVkYmFjayc7XG4gICAgICBpZiAodGhpcy5wcm9wcy52YWxpZGF0aW9uID09PSBudWxsKSB7XG4gICAgICAgIGNsYXNzTmFtZSArPSAnIGhhcy1zdWNjZXNzJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsYXNzTmFtZSArPSAnIGhhcy1lcnJvcic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICBnZXRGZWVkYmFjaygpIHtcbiAgICBpZiAodGhpcy5wcm9wcy52YWxpZGF0aW9uKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJoZWxwLWJsb2NrIGVycm9yc1wiPlxuICAgICAgICB7dGhpcy5wcm9wcy52YWxpZGF0aW9uLm1hcCgoZXJyb3IsIGkpID0+IHtcbiAgICAgICAgICByZXR1cm4gPHAga2V5PXt0aGlzLnByb3BzLmZvciArICdGZWVkYmFja0l0ZW0nICsgaX0+e2Vycm9yfTwvcD47XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmVlZGJhY2tJY29uKCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWRhdGVkKCkpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uIGZvcm0tY29udHJvbC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCIga2V5PXt0aGlzLnByb3BzLmZvciArICdGZWVkYmFja0ljb24nfT5cbiAgICAgICAge3RoaXMucHJvcHMudmFsaWRhdGlvbiA/ICdjbGVhcicgOiAnY2hlY2snfVxuICAgICAgPC9zcGFuPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldEZlZWRiYWNrRGVzY3JpcHRpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZGF0ZWQoKSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxzcGFuIGlkPXt0aGlzLnByb3BzLmZvciArICdfc3RhdHVzJ30gY2xhc3NOYW1lPVwic3Itb25seVwiPlxuICAgICAgICB7dGhpcy5wcm9wcy52YWxpZGF0aW9uID8gZ2V0dGV4dCgnKGVycm9yKScpIDogZ2V0dGV4dCgnKHN1Y2Nlc3MpJyl9XG4gICAgICA8L3NwYW4+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0SGVscFRleHQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaGVscFRleHQpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8cCBjbGFzc05hbWU9XCJoZWxwLWJsb2NrXCI+e3RoaXMucHJvcHMuaGVscFRleHR9PC9wPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfT5cbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9eydjb250cm9sLWxhYmVsICcgKyAodGhpcy5wcm9wcy5sYWJlbENsYXNzIHx8ICcnKX1cbiAgICAgICAgICAgICBodG1sRm9yPXt0aGlzLnByb3BzLmZvciB8fCAnJ30+XG4gICAgICAgIHt0aGlzLnByb3BzLmxhYmVsICsgJzonfVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXt0aGlzLnByb3BzLmNvbnRyb2xDbGFzcyB8fCAnJ30+XG4gICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuICAgICAgICB7dGhpcy5nZXRGZWVkYmFja0ljb24oKX1cbiAgICAgICAge3RoaXMuZ2V0RmVlZGJhY2tEZXNjcmlwdGlvbigpfVxuICAgICAgICB7dGhpcy5nZXRGZWVkYmFjaygpfVxuICAgICAgICB7dGhpcy5nZXRIZWxwVGV4dCgpfVxuICAgICAgICB7dGhpcy5wcm9wcy5leHRyYSB8fCBudWxsfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlcXVpcmVkIH0gZnJvbSAnbWlzYWdvL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG5sZXQgdmFsaWRhdGVSZXF1aXJlZCA9IHJlcXVpcmVkKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgdmFsaWRhdGUoKSB7XG4gICAgbGV0IGVycm9ycyA9IHt9O1xuICAgIGlmICghdGhpcy5zdGF0ZS52YWxpZGF0b3JzKSB7XG4gICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIGxldCB2YWxpZGF0b3JzID0ge1xuICAgICAgcmVxdWlyZWQ6IHRoaXMuc3RhdGUudmFsaWRhdG9ycy5yZXF1aXJlZCB8fCB0aGlzLnN0YXRlLnZhbGlkYXRvcnMsXG4gICAgICBvcHRpb25hbDogdGhpcy5zdGF0ZS52YWxpZGF0b3JzLm9wdGlvbmFsIHx8IHt9XG4gICAgfTtcblxuICAgIGxldCB2YWxpZGF0ZWRGaWVsZHMgPSBbXTtcblxuICAgIC8vIGFkZCByZXF1aXJlZCBmaWVsZHMgdG8gdmFsaWRhdGlvblxuICAgIGZvciAobGV0IG5hbWUgaW4gdmFsaWRhdG9ycy5yZXF1aXJlZCkge1xuICAgICAgaWYgKHZhbGlkYXRvcnMucmVxdWlyZWQuaGFzT3duUHJvcGVydHkobmFtZSkgJiZcbiAgICAgICAgICB2YWxpZGF0b3JzLnJlcXVpcmVkW25hbWVdKSB7XG4gICAgICAgIHZhbGlkYXRlZEZpZWxkcy5wdXNoKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZCBvcHRpb25hbCBmaWVsZHMgdG8gdmFsaWRhdGlvblxuICAgIGZvciAobGV0IG5hbWUgaW4gdmFsaWRhdG9ycy5vcHRpb25hbCkge1xuICAgICAgaWYgKHZhbGlkYXRvcnMub3B0aW9uYWwuaGFzT3duUHJvcGVydHkobmFtZSkgJiZcbiAgICAgICAgICB2YWxpZGF0b3JzLm9wdGlvbmFsW25hbWVdKSB7XG4gICAgICAgIHZhbGlkYXRlZEZpZWxkcy5wdXNoKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHZhbGlkYXRlIGZpZWxkcyB2YWx1ZXNcbiAgICBmb3IgKGxldCBpIGluIHZhbGlkYXRlZEZpZWxkcykge1xuICAgICAgbGV0IG5hbWUgPSB2YWxpZGF0ZWRGaWVsZHNbaV07XG4gICAgICBsZXQgZmllbGRFcnJvcnMgPSB0aGlzLnZhbGlkYXRlRmllbGQobmFtZSwgdGhpcy5zdGF0ZVtuYW1lXSk7XG5cbiAgICAgIGlmIChmaWVsZEVycm9ycyA9PT0gbnVsbCkge1xuICAgICAgICBlcnJvcnNbbmFtZV0gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZEVycm9ycykge1xuICAgICAgICBlcnJvcnNbbmFtZV0gPSBmaWVsZEVycm9ycztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgaXNWYWxpZCgpIHtcbiAgICBsZXQgZXJyb3JzID0gdGhpcy52YWxpZGF0ZSgpO1xuICAgIGZvciAobGV0IGZpZWxkIGluIGVycm9ycykge1xuICAgICAgaWYgKGVycm9ycy5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgaWYgKGVycm9yc1tmaWVsZF0gIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkYXRlRmllbGQobmFtZSwgdmFsdWUpIHtcbiAgICBsZXQgZXJyb3JzID0gW107XG4gICAgaWYgKCF0aGlzLnN0YXRlLnZhbGlkYXRvcnMpIHtcbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRvcnMgPSB7XG4gICAgICByZXF1aXJlZDogKHRoaXMuc3RhdGUudmFsaWRhdG9ycy5yZXF1aXJlZCB8fCB0aGlzLnN0YXRlLnZhbGlkYXRvcnMpW25hbWVdLFxuICAgICAgb3B0aW9uYWw6ICh0aGlzLnN0YXRlLnZhbGlkYXRvcnMub3B0aW9uYWwgfHwge30pW25hbWVdXG4gICAgfTtcblxuICAgIGxldCByZXF1aXJlZEVycm9yID0gdmFsaWRhdGVSZXF1aXJlZCh2YWx1ZSkgfHwgZmFsc2U7XG5cbiAgICBpZiAodmFsaWRhdG9ycy5yZXF1aXJlZCkge1xuICAgICAgaWYgKHJlcXVpcmVkRXJyb3IpIHtcbiAgICAgICAgZXJyb3JzID0gW3JlcXVpcmVkRXJyb3JdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgaSBpbiB2YWxpZGF0b3JzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgbGV0IHZhbGlkYXRpb25FcnJvciA9IHZhbGlkYXRvcnMucmVxdWlyZWRbaV0odmFsdWUpO1xuICAgICAgICAgIGlmICh2YWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKHZhbGlkYXRpb25FcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlcnJvcnMubGVuZ3RoID8gZXJyb3JzIDogbnVsbDtcbiAgICB9IGVsc2UgaWYgKHJlcXVpcmVkRXJyb3IgPT09IGZhbHNlICYmIHZhbGlkYXRvcnMub3B0aW9uYWwpIHtcbiAgICAgIGZvciAobGV0IGkgaW4gdmFsaWRhdG9ycy5vcHRpb25hbCkge1xuICAgICAgICBsZXQgdmFsaWRhdGlvbkVycm9yID0gdmFsaWRhdG9ycy5vcHRpb25hbFtpXSh2YWx1ZSk7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCh2YWxpZGF0aW9uRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlcnJvcnMubGVuZ3RoID8gZXJyb3JzIDogbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7IC8vIGZhbHNlID09PSBmaWVsZCB3YXNuJ3QgdmFsaWRhdGVkXG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIGJpbmRJbnB1dCA9IChuYW1lKSA9PiB7XG4gICAgcmV0dXJuIChldmVudCkgPT4ge1xuICAgICAgbGV0IG5ld1N0YXRlID0ge1xuICAgICAgICBbbmFtZV06IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgfTtcblxuICAgICAgbGV0IGZvcm1FcnJvcnMgPSB0aGlzLnN0YXRlLmVycm9ycyB8fCB7fTtcbiAgICAgIGZvcm1FcnJvcnNbbmFtZV0gPSB0aGlzLnZhbGlkYXRlRmllbGQobmFtZSwgbmV3U3RhdGVbbmFtZV0pO1xuICAgICAgbmV3U3RhdGUuZXJyb3JzID0gZm9ybUVycm9ycztcblxuICAgICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNsZWFuKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc2VuZCgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGhhbmRsZVN1Y2Nlc3Moc3VjY2Vzcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGhhbmRsZUVycm9yKHJlamVjdGlvbikge1xuICAgIHNuYWNrYmFyLmFwaUVycm9yKHJlamVjdGlvbik7XG4gIH1cblxuICBoYW5kbGVTdWJtaXQgPSAoZXZlbnQpID0+IHtcbiAgICAvLyB3ZSBkb24ndCByZWxvYWQgcGFnZSBvbiBzdWJtaXNzaW9uc1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBpZiAodGhpcy5zdGF0ZS5pc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbGVhbigpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtpc0xvYWRpbmc6IHRydWV9KTtcbiAgICAgIGxldCBwcm9taXNlID0gdGhpcy5zZW5kKCk7XG5cbiAgICAgIGlmIChwcm9taXNlKSB7XG4gICAgICAgIHByb21pc2UudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe2lzTG9hZGluZzogZmFsc2V9KTtcbiAgICAgICAgICB0aGlzLmhhbmRsZVN1Y2Nlc3Moc3VjY2Vzcyk7XG4gICAgICAgIH0sIChyZWplY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtpc0xvYWRpbmc6IGZhbHNlfSk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihyZWplY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2lzTG9hZGluZzogZmFsc2V9KTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBpc0FjdGl2ZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wYXRoKSB7XG4gICAgICByZXR1cm4gZG9jdW1lbnQubG9jYXRpb24ucGF0aG5hbWUuaW5kZXhPZih0aGlzLnByb3BzLnBhdGgpID09PSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLmlzQWN0aXZlKCkpIHtcbiAgICAgIHJldHVybiAodGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgJycpICsgJyAnKyAodGhpcy5wcm9wcy5hY3RpdmVDbGFzc05hbWUgfHwgJ2FjdGl2ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgJyc7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8vIGpzaGludCBpZ25vcmU6c3RhcnRcbiAgICByZXR1cm4gPGxpIGNsYXNzTmFtZT17dGhpcy5nZXRDbGFzc05hbWUoKX0+XG4gICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICA8L2xpPjtcbiAgICAvLyBqc2hpbnQgaWdub3JlOmVuZFxuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJsb2FkZXJcIn0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvYWRlci1zcGlubmluZy13aGVlbFwiPjwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IExvYWRlciBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9sb2FkZXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHkgbW9kYWwtbG9hZGVyXCI+XG4gICAgICA8TG9hZGVyIC8+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgUGFuZWxNZXNzYWdlIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3BhbmVsLW1lc3NhZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFBhbmVsTWVzc2FnZSB7XG4gIGdldEhlbHBUZXh0KCkge1xuICAgIGlmICh0aGlzLnByb3BzLmhlbHBUZXh0KSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPHAgY2xhc3NOYW1lPVwiaGVscC1ibG9ja1wiPlxuICAgICAgICB7dGhpcy5wcm9wcy5oZWxwVGV4dH1cbiAgICAgIDwvcD47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1pY29uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5pY29uIHx8ICdpbmZvX291dGxpbmUnfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1ib2R5XCI+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cImxlYWRcIj5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5tZXNzYWdlfVxuICAgICAgICA8L3A+XG4gICAgICAgIHt0aGlzLmdldEhlbHBUZXh0KCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUGFuZWxMb2FkZXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcGFuZWwtbG9hZGVyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IHBhbmVsLWZvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGluZ1wiPlxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwicGFuZWwtdGl0bGVcIj57Z2V0dGV4dChcIkNoYW5nZSB1c2VybmFtZVwiKX08L2gzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxQYW5lbExvYWRlciAvPlxuXG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFBhbmVsTWVzc2FnZSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9wYW5lbC1tZXNzYWdlJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0SGVscFRleHQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMub3B0aW9ucy5uZXh0X29uKSB7XG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUoXG4gICAgICAgICAgZ2V0dGV4dChcIllvdSB3aWxsIGJlIGFibGUgdG8gY2hhbmdlIHlvdXIgdXNlcm5hbWUgJShuZXh0X2NoYW5nZSlzLlwiKSxcbiAgICAgICAgICB7J25leHRfY2hhbmdlJzogdGhpcy5wcm9wcy5vcHRpb25zLm5leHRfb24uZnJvbU5vdygpfSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiWW91IGhhdmUgdXNlZCB1cCBhdmFpbGFibGUgbmFtZSBjaGFuZ2VzLlwiKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsIHBhbmVsLWRlZmF1bHQgcGFuZWwtZm9ybVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJwYW5lbC10aXRsZVwiPntnZXR0ZXh0KFwiQ2hhbmdlIHVzZXJuYW1lXCIpfTwvaDM+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFBhbmVsTWVzc2FnZSBtZXNzYWdlPXtnZXR0ZXh0KFwiWW91IGNhbid0IGNoYW5nZSB5b3VyIHVzZXJuYW1lIGF0IHRoZSBtb21lbnQuXCIpfVxuICAgICAgICAgICAgICAgICAgICBoZWxwVGV4dD17dGhpcy5nZXRIZWxwVGV4dCgpfSAvPlxuXG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IEZvcm1Hcm91cCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtLWdyb3VwJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCAqIGFzIHZhbGlkYXRvcnMgZnJvbSAnbWlzYWdvL3V0aWxzL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIEZvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICB1c2VybmFtZTogJycsXG5cbiAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgdXNlcm5hbWU6IFtcbiAgICAgICAgICB2YWxpZGF0b3JzLnVzZXJuYW1lQ29udGVudCgpLFxuICAgICAgICAgIHZhbGlkYXRvcnMudXNlcm5hbWVNaW5MZW5ndGgoe1xuICAgICAgICAgICAgdXNlcm5hbWVfbGVuZ3RoX21pbjogcHJvcHMub3B0aW9ucy5sZW5ndGhfbWluXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdmFsaWRhdG9ycy51c2VybmFtZU1heExlbmd0aCh7XG4gICAgICAgICAgICB1c2VybmFtZV9sZW5ndGhfbWF4OiBwcm9wcy5vcHRpb25zLmxlbmd0aF9tYXhcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9LFxuXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGdldEhlbHBUZXh0KCkge1xuICAgIGxldCBwaHJhc2VzID0gW107XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vcHRpb25zLmNoYW5nZXNfbGVmdCA+IDApIHtcbiAgICAgIGxldCBtZXNzYWdlID0gbmdldHRleHQoXG4gICAgICAgIFwiWW91IGNhbiBjaGFuZ2UgeW91ciB1c2VybmFtZSAlKGNoYW5nZXNfbGVmdClzIG1vcmUgdGltZS5cIixcbiAgICAgICAgXCJZb3UgY2FuIGNoYW5nZSB5b3VyIHVzZXJuYW1lICUoY2hhbmdlc19sZWZ0KXMgbW9yZSB0aW1lcy5cIixcbiAgICAgICAgdGhpcy5wcm9wcy5vcHRpb25zLmNoYW5nZXNfbGVmdCk7XG5cbiAgICAgIHBocmFzZXMucHVzaChpbnRlcnBvbGF0ZShtZXNzYWdlLCB7XG4gICAgICAgICdjaGFuZ2VzX2xlZnQnOiB0aGlzLnByb3BzLm9wdGlvbnMuY2hhbmdlc19sZWZ0XG4gICAgICB9LCB0cnVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMudXNlci5hY2wubmFtZV9jaGFuZ2VzX2V4cGlyZSA+IDApIHtcbiAgICAgIGxldCBtZXNzYWdlID0gbmdldHRleHQoXG4gICAgICAgIFwiVXNlZCBjaGFuZ2VzIHJlZGVlbSBhZnRlciAlKG5hbWVfY2hhbmdlc19leHBpcmUpcyBkYXkuXCIsXG4gICAgICAgIFwiVXNlZCBjaGFuZ2VzIHJlZGVlbSBhZnRlciAlKG5hbWVfY2hhbmdlc19leHBpcmUpcyBkYXlzLlwiLFxuICAgICAgICB0aGlzLnByb3BzLnVzZXIuYWNsLm5hbWVfY2hhbmdlc19leHBpcmUpO1xuXG4gICAgICBwaHJhc2VzLnB1c2goaW50ZXJwb2xhdGUobWVzc2FnZSwge1xuICAgICAgICAnbmFtZV9jaGFuZ2VzX2V4cGlyZSc6IHRoaXMucHJvcHMudXNlci5hY2wubmFtZV9jaGFuZ2VzX2V4cGlyZVxuICAgICAgfSwgdHJ1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBwaHJhc2VzLmxlbmd0aCA/IHBocmFzZXMuam9pbignICcpIDogbnVsbDtcbiAgfVxuXG4gIGNsZWFuKCkge1xuICAgIGxldCBlcnJvcnMgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgaWYgKGVycm9ycy51c2VybmFtZSkge1xuICAgICAgc25hY2tiYXIuZXJyb3IoZXJyb3JzLnVzZXJuYW1lWzBdKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGlmICh0aGlzLnN0YXRlLnVzZXJuYW1lLnRyaW0oKSA9PT0gdGhpcy5wcm9wcy51c2VyLnVzZXJuYW1lKSB7XG4gICAgICBzbmFja2Jhci5pbmZvKGdldHRleHQoXCJZb3VyIG5ldyB1c2VybmFtZSBpcyBzYW1lIGFzIGN1cnJlbnQgb25lLlwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNlbmQoKSB7XG4gICAgcmV0dXJuIGFqYXgucG9zdCh0aGlzLnByb3BzLnVzZXIuYXBpX3VybC51c2VybmFtZSwge1xuICAgICAgJ3VzZXJuYW1lJzogdGhpcy5zdGF0ZS51c2VybmFtZVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VjY2VzcyhzdWNjZXNzKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAndXNlcm5hbWUnOiAnJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcy5jb21wbGV0ZShzdWNjZXNzLnVzZXJuYW1lLCBzdWNjZXNzLnNsdWcsIHN1Y2Nlc3Mub3B0aW9ucyk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihyZWplY3Rpb24pIHtcbiAgICBzbmFja2Jhci5hcGlFcnJvcihyZWplY3Rpb24pO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fSBjbGFzc05hbWU9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwgcGFuZWwtZGVmYXVsdCBwYW5lbC1mb3JtXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGluZ1wiPlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJwYW5lbC10aXRsZVwiPntnZXR0ZXh0KFwiQ2hhbmdlIHVzZXJuYW1lXCIpfTwvaDM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsLWJvZHlcIj5cblxuICAgICAgICAgIDxGb3JtR3JvdXAgbGFiZWw9e2dldHRleHQoXCJOZXcgdXNlcm5hbWVcIil9IGZvcj1cImlkX3VzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9XCJjb2wtc20tNFwiIGNvbnRyb2xDbGFzcz1cImNvbC1zbS04XCJcbiAgICAgICAgICAgICAgICAgICAgIGhlbHBUZXh0PXt0aGlzLmdldEhlbHBUZXh0KCl9PlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJpZF91c2VybmFtZVwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgndXNlcm5hbWUnKX1cbiAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS51c2VybmFtZX0gLz5cbiAgICAgICAgICA8L0Zvcm1Hcm91cD5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1mb290ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtc20tOCBjb2wtc20tb2Zmc2V0LTRcIj5cblxuICAgICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5XCIgbG9hZGluZz17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9PlxuICAgICAgICAgICAgICAgIHtnZXR0ZXh0KFwiQ2hhbmdlIHVzZXJuYW1lXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGb3JtTG9hZGluZyBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9vcHRpb25zL2NoYW5nZS11c2VybmFtZS9mb3JtLWxvYWRpbmcnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb3JtTG9ja2VkIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL29wdGlvbnMvY2hhbmdlLXVzZXJuYW1lL2Zvcm0tbG9ja2VkJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgRm9ybSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9vcHRpb25zL2NoYW5nZS11c2VybmFtZS9mb3JtJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgVXNlcm5hbWVIaXN0b3J5IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJuYW1lLWhpc3RvcnknOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCB7IGRlaHlkcmF0ZSwgYWRkTmFtZUNoYW5nZSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy91c2VybmFtZS1oaXN0b3J5JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgeyB1cGRhdGVVc2VybmFtZSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy91c2Vycyc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnO1xuaW1wb3J0IHRpdGxlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9wYWdlLXRpdGxlJztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGlzTG9hZGVkOiBmYWxzZSxcbiAgICAgIG9wdGlvbnM6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGl0bGUuc2V0KHtcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KFwiQ2hhbmdlIHVzZXJuYW1lXCIpLFxuICAgICAgcGFyZW50OiBnZXR0ZXh0KFwiQ2hhbmdlIHlvdXIgb3B0aW9uc1wiKVxuICAgIH0pO1xuXG4gICAgUHJvbWlzZS5hbGwoW1xuICAgICAgYWpheC5nZXQodGhpcy5wcm9wcy51c2VyLmFwaV91cmwudXNlcm5hbWUpLFxuICAgICAgYWpheC5nZXQobWlzYWdvLmdldCgnVVNFUk5BTUVfQ0hBTkdFU19BUEknKSwge3VzZXI6IHRoaXMucHJvcHMudXNlci5pZH0pXG4gICAgXSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgc3RvcmUuZGlzcGF0Y2goZGVoeWRyYXRlKGRhdGFbMV0ucmVzdWx0cykpO1xuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNMb2FkZWQ6IHRydWUsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBjaGFuZ2VzX2xlZnQ6IGRhdGFbMF0uY2hhbmdlc19sZWZ0LFxuICAgICAgICAgIGxlbmd0aF9taW46IGRhdGFbMF0ubGVuZ3RoX21pbixcbiAgICAgICAgICBsZW5ndGhfbWF4OiBkYXRhWzBdLmxlbmd0aF9tYXgsXG4gICAgICAgICAgbmV4dF9vbjogZGF0YVswXS5uZXh0X29uID8gbW9tZW50KGRhdGFbMF0ubmV4dF9vbikgOiBudWxsLFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgb25Db21wbGV0ZSA9ICh1c2VybmFtZSwgc2x1Zywgb3B0aW9ucykgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgb3B0aW9uc1xuICAgIH0pO1xuXG4gICAgc3RvcmUuZGlzcGF0Y2goXG4gICAgICBhZGROYW1lQ2hhbmdlKHsgdXNlcm5hbWUsIHNsdWcgfSwgdGhpcy5wcm9wcy51c2VyLCB0aGlzLnByb3BzLnVzZXIpKTtcbiAgICBzdG9yZS5kaXNwYXRjaChcbiAgICAgIHVwZGF0ZVVzZXJuYW1lKHRoaXMucHJvcHMudXNlciwgdXNlcm5hbWUsIHNsdWcpKTtcblxuICAgIHNuYWNrYmFyLnN1Y2Nlc3MoZ2V0dGV4dChcIllvdXIgdXNlcm5hbWUgaGFzIGJlZW4gY2hhbmdlZCBzdWNjZXNzZnVsbHkuXCIpKTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBnZXRDaGFuZ2VGb3JtKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmlzTG9hZGVkKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5vcHRpb25zLmNoYW5nZXNfbGVmdCA+IDApIHtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICByZXR1cm4gPEZvcm0gdXNlcj17dGhpcy5wcm9wcy51c2VyfVxuICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dGhpcy5zdGF0ZS5vcHRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU9e3RoaXMub25Db21wbGV0ZX0gLz47XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8Rm9ybUxvY2tlZCBvcHRpb25zPXt0aGlzLnN0YXRlLm9wdGlvbnN9IC8+O1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPEZvcm1Mb2FkaW5nIC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2PlxuICAgICAge3RoaXMuZ2V0Q2hhbmdlRm9ybSgpfVxuICAgICAgPFVzZXJuYW1lSGlzdG9yeSBpc0xvYWRlZD17dGhpcy5zdGF0ZS5pc0xvYWRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcz17dGhpcy5wcm9wc1sndXNlcm5hbWUtaGlzdG9yeSddfSAvPlxuICAgIDwvZGl2PlxuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBCdXR0b24gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYnV0dG9uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgRm9ybSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCBGb3JtR3JvdXAgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvZm9ybS1ncm91cCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFNlbGVjdCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9zZWxlY3QnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBZZXNOb1N3aXRjaCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy95ZXMtbm8tc3dpdGNoJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgeyBwYXRjaFVzZXIgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvYXV0aCc7XG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgdGl0bGUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3BhZ2UtdGl0bGUnO1xuaW1wb3J0IHNuYWNrYmFyIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zbmFja2Jhcic7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBGb3JtIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgJ2lzTG9hZGluZyc6IGZhbHNlLFxuXG4gICAgICAnaXNfaGlkaW5nX3ByZXNlbmNlJzogcHJvcHMudXNlci5pc19oaWRpbmdfcHJlc2VuY2UsXG4gICAgICAnbGltaXRzX3ByaXZhdGVfdGhyZWFkX2ludml0ZXNfdG8nOiBwcm9wcy51c2VyLmxpbWl0c19wcml2YXRlX3RocmVhZF9pbnZpdGVzX3RvLFxuICAgICAgJ3N1YnNjcmliZV90b19zdGFydGVkX3RocmVhZHMnOiBwcm9wcy51c2VyLnN1YnNjcmliZV90b19zdGFydGVkX3RocmVhZHMsXG4gICAgICAnc3Vic2NyaWJlX3RvX3JlcGxpZWRfdGhyZWFkcyc6IHByb3BzLnVzZXIuc3Vic2NyaWJlX3RvX3JlcGxpZWRfdGhyZWFkcyxcblxuICAgICAgJ2Vycm9ycyc6IHt9XG4gICAgfTtcblxuICAgIHRoaXMucHJpdmF0ZVRocmVhZEludml0ZXNDaG9pY2VzID0gW1xuICAgICAge1xuICAgICAgICAndmFsdWUnOiAwLFxuICAgICAgICAnaWNvbic6ICdoZWxwX291dGxpbmUnLFxuICAgICAgICAnbGFiZWwnOiBnZXR0ZXh0KCdFdmVyeWJvZHknKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgJ3ZhbHVlJzogMSxcbiAgICAgICAgJ2ljb24nOiAnZG9uZV9hbGwnLFxuICAgICAgICAnbGFiZWwnOiBnZXR0ZXh0KCdVc2VycyBJIGZvbGxvdycpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAndmFsdWUnOiAyLFxuICAgICAgICAnaWNvbic6ICdoaWdobGlnaHRfb2ZmJyxcbiAgICAgICAgJ2xhYmVsJzogZ2V0dGV4dCgnTm9ib2R5JylcbiAgICAgIH1cbiAgICBdO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVUb0Nob2ljZXMgPSBbXG4gICAgICB7XG4gICAgICAgICd2YWx1ZSc6IDAsXG4gICAgICAgICdpY29uJzogJ2Jvb2ttYXJrX2JvcmRlcicsXG4gICAgICAgICdsYWJlbCc6IGdldHRleHQoJ05vJylcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgICd2YWx1ZSc6IDEsXG4gICAgICAgICdpY29uJzogJ2Jvb2ttYXJrJyxcbiAgICAgICAgJ2xhYmVsJzogZ2V0dGV4dCgnQm9va21hcmsnKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgJ3ZhbHVlJzogMixcbiAgICAgICAgJ2ljb24nOiAnbWFpbCcsXG4gICAgICAgICdsYWJlbCc6IGdldHRleHQoJ0Jvb2ttYXJrIHdpdGggZS1tYWlsIG5vdGlmaWNhdGlvbicpXG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIHNlbmQoKSB7XG4gICAgcmV0dXJuIGFqYXgucG9zdCh0aGlzLnByb3BzLnVzZXIuYXBpX3VybC5vcHRpb25zLCB7XG4gICAgICBpc19oaWRpbmdfcHJlc2VuY2U6IHRoaXMuc3RhdGUuaXNfaGlkaW5nX3ByZXNlbmNlLFxuICAgICAgbGltaXRzX3ByaXZhdGVfdGhyZWFkX2ludml0ZXNfdG86IHRoaXMuc3RhdGUubGltaXRzX3ByaXZhdGVfdGhyZWFkX2ludml0ZXNfdG8sXG4gICAgICBzdWJzY3JpYmVfdG9fc3RhcnRlZF90aHJlYWRzOiB0aGlzLnN0YXRlLnN1YnNjcmliZV90b19zdGFydGVkX3RocmVhZHMsXG4gICAgICBzdWJzY3JpYmVfdG9fcmVwbGllZF90aHJlYWRzOiB0aGlzLnN0YXRlLnN1YnNjcmliZV90b19yZXBsaWVkX3RocmVhZHNcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN1Y2Nlc3MoKSB7XG4gICAgc3RvcmUuZGlzcGF0Y2gocGF0Y2hVc2VyKHtcbiAgICAgIGlzX2hpZGluZ19wcmVzZW5jZTogdGhpcy5zdGF0ZS5pc19oaWRpbmdfcHJlc2VuY2UsXG4gICAgICBsaW1pdHNfcHJpdmF0ZV90aHJlYWRfaW52aXRlc190bzogdGhpcy5zdGF0ZS5saW1pdHNfcHJpdmF0ZV90aHJlYWRfaW52aXRlc190byxcbiAgICAgIHN1YnNjcmliZV90b19zdGFydGVkX3RocmVhZHM6IHRoaXMuc3RhdGUuc3Vic2NyaWJlX3RvX3N0YXJ0ZWRfdGhyZWFkcyxcbiAgICAgIHN1YnNjcmliZV90b19yZXBsaWVkX3RocmVhZHM6IHRoaXMuc3RhdGUuc3Vic2NyaWJlX3RvX3JlcGxpZWRfdGhyZWFkc1xuICAgIH0pKTtcbiAgICBzbmFja2Jhci5zdWNjZXNzKGdldHRleHQoXCJZb3VyIGZvcnVtIG9wdGlvbnMgaGF2ZSBiZWVuIGNoYW5nZWQuXCIpKTtcbiAgfVxuXG4gIGhhbmRsZUVycm9yKHJlamVjdGlvbikge1xuICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDApIHtcbiAgICAgIHNuYWNrYmFyLmVycm9yKGdldHRleHQoXCJQbGVhc2UgcmVsb2FkIHBhZ2UgYW5kIHRyeSBhZ2Fpbi5cIikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbmFja2Jhci5hcGlFcnJvcihyZWplY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRpdGxlLnNldCh7XG4gICAgICB0aXRsZTogZ2V0dGV4dChcIkZvcnVtIG9wdGlvbnNcIiksXG4gICAgICBwYXJlbnQ6IGdldHRleHQoXCJDaGFuZ2UgeW91ciBvcHRpb25zXCIpXG4gICAgfSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8Zm9ybSBvblN1Ym1pdD17dGhpcy5oYW5kbGVTdWJtaXR9IGNsYXNzTmFtZT1cImZvcm0taG9yaXpvbnRhbFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IHBhbmVsLWZvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInBhbmVsLXRpdGxlXCI+e2dldHRleHQoXCJDaGFuZ2UgZm9ydW0gb3B0aW9uc1wiKX08L2gzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1ib2R5XCI+XG5cbiAgICAgICAgICA8ZmllbGRzZXQ+XG4gICAgICAgICAgICA8bGVnZW5kPntnZXR0ZXh0KFwiUHJpdmFjeSBzZXR0aW5nc1wiKX08L2xlZ2VuZD5cblxuICAgICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIkhpZGUgbXkgcHJlc2VuY2VcIil9XG4gICAgICAgICAgICAgICAgICAgICAgIGhlbHBUZXh0PXtnZXR0ZXh0KFwiSWYgeW91IGhpZGUgeW91ciBwcmVzZW5jZSwgb25seSBtZW1iZXJzIHdpdGggcGVybWlzc2lvbiB0byBzZWUgaGlkZGVuIHVzZXJzIHdpbGwgc2VlIHdoZW4geW91IGFyZSBvbmxpbmUuXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJpZF9pc19oaWRpbmdfcHJlc2VuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPVwiY29sLXNtLTRcIiBjb250cm9sQ2xhc3M9XCJjb2wtc20tOFwiPlxuICAgICAgICAgICAgICA8WWVzTm9Td2l0Y2ggaWQ9XCJpZF9pc19oaWRpbmdfcHJlc2VuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbk9uPVwidmlzaWJpbGl0eV9vZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbk9mZj1cInZpc2liaWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxPbj17Z2V0dGV4dChcIkhpZGUgbXkgcHJlc2VuY2UgZnJvbSBvdGhlciB1c2Vyc1wiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsT2ZmPXtnZXR0ZXh0KFwiU2hvdyBteSBwcmVzZW5jZSB0byBvdGhlciB1c2Vyc1wiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgnaXNfaGlkaW5nX3ByZXNlbmNlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5pc19oaWRpbmdfcHJlc2VuY2V9IC8+XG4gICAgICAgICAgICA8L0Zvcm1Hcm91cD5cblxuICAgICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIlByaXZhdGUgdGhyZWFkIGludml0YXRpb25zXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJpZF9saW1pdHNfcHJpdmF0ZV90aHJlYWRfaW52aXRlc190b1wiXG4gICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9XCJjb2wtc20tNFwiIGNvbnRyb2xDbGFzcz1cImNvbC1zbS04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3QgaWQ9XCJpZF9saW1pdHNfcHJpdmF0ZV90aHJlYWRfaW52aXRlc190b1wiXG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgnbGltaXRzX3ByaXZhdGVfdGhyZWFkX2ludml0ZXNfdG8nKX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5saW1pdHNfcHJpdmF0ZV90aHJlYWRfaW52aXRlc190b31cbiAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPXt0aGlzLnByaXZhdGVUaHJlYWRJbnZpdGVzQ2hvaWNlc30gLz5cbiAgICAgICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICAgIDwvZmllbGRzZXQ+XG5cbiAgICAgICAgICA8ZmllbGRzZXQ+XG4gICAgICAgICAgICA8bGVnZW5kPntnZXR0ZXh0KFwiQXV0b21hdGljIHN1YnNjcmlwdGlvbnNcIil9PC9sZWdlbmQ+XG5cbiAgICAgICAgICAgIDxGb3JtR3JvdXAgbGFiZWw9e2dldHRleHQoXCJUaHJlYWRzIEkgc3RhcnRcIil9XG4gICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImlkX3N1YnNjcmliZV90b19zdGFydGVkX3RocmVhZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPVwiY29sLXNtLTRcIiBjb250cm9sQ2xhc3M9XCJjb2wtc20tOFwiPlxuICAgICAgICAgICAgICA8U2VsZWN0IGlkPVwiaWRfc3Vic2NyaWJlX3RvX3N0YXJ0ZWRfdGhyZWFkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgnc3Vic2NyaWJlX3RvX3N0YXJ0ZWRfdGhyZWFkcycpfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnN1YnNjcmliZV90b19zdGFydGVkX3RocmVhZHN9XG4gICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz17dGhpcy5zdWJzY3JpYmVUb0Nob2ljZXN9IC8+XG4gICAgICAgICAgICA8L0Zvcm1Hcm91cD5cblxuICAgICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIlRocmVhZHMgSSByZXBseSB0b1wiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiaWRfc3Vic2NyaWJlX3RvX3JlcGxpZWRfdGhyZWFkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9XCJjb2wtc20tNFwiIGNvbnRyb2xDbGFzcz1cImNvbC1zbS04XCI+XG4gICAgICAgICAgICAgIDxTZWxlY3QgaWQ9XCJpZF9zdWJzY3JpYmVfdG9fcmVwbGllZF90aHJlYWRzXCJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCdzdWJzY3JpYmVfdG9fcmVwbGllZF90aHJlYWRzJyl9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuc3Vic2NyaWJlX3RvX3JlcGxpZWRfdGhyZWFkc31cbiAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPXt0aGlzLnN1YnNjcmliZVRvQ2hvaWNlc30gLz5cbiAgICAgICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICAgIDwvZmllbGRzZXQ+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwtZm9vdGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLXNtLTggY29sLXNtLW9mZnNldC00XCI+XG5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJidG4tcHJpbWFyeVwiIGxvYWRpbmc9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfT5cbiAgICAgICAgICAgICAgICB7Z2V0dGV4dChcIlNhdmUgY2hhbmdlc1wiKX1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBMaSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9saSc7IC8vanNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7IC8vanNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBTaWRlTmF2IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIC8vIGpzaGludCBpZ25vcmU6c3RhcnRcbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJsaXN0LWdyb3VwIG5hdi1zaWRlXCI+XG4gICAgICB7dGhpcy5wcm9wcy5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgIHJldHVybiA8TGluayB0bz17dGhpcy5wcm9wcy5iYXNlVXJsICsgb3B0aW9uLmNvbXBvbmVudCArICcvJ31cbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXAtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICBhY3RpdmVDbGFzc05hbWU9XCJhY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24uY29tcG9uZW50fT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICB7b3B0aW9uLmljb259XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgPC9MaW5rPjtcbiAgICAgIH0pfVxuICAgIDwvZGl2PjtcbiAgICAvLyBqc2hpbnQgaWdub3JlOmVuZFxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wYWN0TmF2IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIC8vIGpzaGludCBpZ25vcmU6c3RhcnRcbiAgICByZXR1cm4gPHVsIGNsYXNzTmFtZT1cImRyb3Bkb3duLW1lbnVcIiByb2xlPVwibWVudVwiPlxuICAgICAge3RoaXMucHJvcHMub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4gPExpIHBhdGg9e3RoaXMucHJvcHMuYmFzZVVybCArIG9wdGlvbi5jb21wb25lbnQgKyAnLyd9XG4gICAgICAgICAgICAgICAgICAga2V5PXtvcHRpb24uY29tcG9uZW50fT5cbiAgICAgICAgICA8TGluayB0bz17dGhpcy5wcm9wcy5iYXNlVXJsICsgb3B0aW9uLmNvbXBvbmVudCArICcvJ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLmhpZGVOYXZ9PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgICB7b3B0aW9uLmljb259XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8L0xpPjtcbiAgICAgIH0pfVxuICAgIDwvdWw+O1xuICAgIC8vIGpzaGludCBpZ25vcmU6ZW5kXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IFNpZGVOYXYsIENvbXBhY3ROYXYgfSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9vcHRpb25zL25hdnMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBDaGFuZ2VGb3J1bU9wdGlvbnMgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvb3B0aW9ucy9mb3J1bS1vcHRpb25zJztcbmltcG9ydCBDaGFuZ2VVc2VybmFtZSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9vcHRpb25zL2NoYW5nZS11c2VybmFtZS9yb290JztcbmltcG9ydCBDaGFuZ2VTaWduSW5DcmVkZW50aWFscyBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9vcHRpb25zL3NpZ24taW4tY3JlZGVudGlhbHMvcm9vdCc7XG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZHJvcGRvd246IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgdG9nZ2xlTmF2ID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlLmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJvcGRvd246IGZhbHNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRyb3Bkb3duOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgaGlkZU5hdiA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRyb3Bkb3duOiBmYWxzZVxuICAgIH0pO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIGdldFRvZ2dsZU5hdkNsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kcm9wZG93bikge1xuICAgICAgcmV0dXJuICdidG4gYnRuLWRlZmF1bHQgYnRuLWljb24gb3Blbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYnRuIGJ0bi1kZWZhdWx0IGJ0bi1pY29uJztcbiAgICB9XG4gIH1cblxuICBnZXRDb21wYWN0TmF2Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmRyb3Bkb3duKSB7XG4gICAgICByZXR1cm4gJ2NvbXBhY3QtbmF2IG9wZW4nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2NvbXBhY3QtbmF2JztcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInBhZ2UgcGFnZS1vcHRpb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhZ2UtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG5cbiAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwicHVsbC1sZWZ0XCI+e2dldHRleHQoXCJDaGFuZ2UgeW91ciBvcHRpb25zXCIpfTwvaDE+XG5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdCBidG4tYWxpZ25lZCBidG4taWNvbiBidG4tZHJvcGRvd24tdG9nZ2xlIGhpZGRlbi1tZCBoaWRkZW4tbGdcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnRvZ2dsZU5hdn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3RoaXMuc3RhdGUuZHJvcGRvd24gPyAndHJ1ZScgOiAnZmFsc2UnfT5cbiAgICAgICAgICAgIDxpIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgICAgbWVudVxuICAgICAgICAgICAgPC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRDb21wYWN0TmF2Q2xhc3NOYW1lKCl9PlxuXG4gICAgICAgIDxDb21wYWN0TmF2IG9wdGlvbnM9e21pc2Fnby5nZXQoJ1VTRVJfT1BUSU9OUycpfVxuICAgICAgICAgICAgICAgICAgICBiYXNlVXJsPXttaXNhZ28uZ2V0KCdVU0VSQ1BfVVJMJyl9XG4gICAgICAgICAgICAgICAgICAgIGhpZGVOYXY9e3RoaXMuaGlkZU5hdn0gLz5cblxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbWQtMyBoaWRkZW4teHMgaGlkZGVuLXNtXCI+XG5cbiAgICAgICAgICAgIDxTaWRlTmF2IG9wdGlvbnM9e21pc2Fnby5nZXQoJ1VTRVJfT1BUSU9OUycpfVxuICAgICAgICAgICAgICAgICAgICAgYmFzZVVybD17bWlzYWdvLmdldCgnVVNFUkNQX1VSTCcpfSAvPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbWQtOVwiPlxuXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdChzdG9yZSkge1xuICByZXR1cm4ge1xuICAgICd0aWNrJzogc3RvcmUudGljay50aWNrLFxuICAgICd1c2VyJzogc3RvcmUuYXV0aC51c2VyLFxuICAgICd1c2VybmFtZS1oaXN0b3J5Jzogc3RvcmVbJ3VzZXJuYW1lLWhpc3RvcnknXVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aHMoKSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGF0aDogbWlzYWdvLmdldCgnVVNFUkNQX1VSTCcpICsgJ2ZvcnVtLW9wdGlvbnMvJyxcbiAgICAgIGNvbXBvbmVudDogY29ubmVjdChzZWxlY3QpKENoYW5nZUZvcnVtT3B0aW9ucylcbiAgICB9LFxuICAgIHtcbiAgICAgIHBhdGg6IG1pc2Fnby5nZXQoJ1VTRVJDUF9VUkwnKSArICdjaGFuZ2UtdXNlcm5hbWUvJyxcbiAgICAgIGNvbXBvbmVudDogY29ubmVjdChzZWxlY3QpKENoYW5nZVVzZXJuYW1lKVxuICAgIH0sXG4gICAge1xuICAgICAgcGF0aDogbWlzYWdvLmdldCgnVVNFUkNQX1VSTCcpICsgJ3NpZ24taW4tY3JlZGVudGlhbHMvJyxcbiAgICAgIGNvbXBvbmVudDogY29ubmVjdChzZWxlY3QpKENoYW5nZVNpZ25JbkNyZWRlbnRpYWxzKVxuICAgIH1cbiAgXTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IEZvcm1Hcm91cCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtLWdyb3VwJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCAqIGFzIHZhbGlkYXRvcnMgZnJvbSAnbWlzYWdvL3V0aWxzL3ZhbGlkYXRvcnMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIEZvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBuZXdfZW1haWw6ICcnLFxuICAgICAgcGFzc3dvcmQ6ICcnLFxuXG4gICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgIG5ld19lbWFpbDogW1xuICAgICAgICAgIHZhbGlkYXRvcnMuZW1haWwoKVxuICAgICAgICBdLFxuICAgICAgICBwYXNzd29yZDogW11cbiAgICAgIH0sXG5cbiAgICAgIGlzTG9hZGluZzogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgbGV0IGVycm9ycyA9IHRoaXMudmFsaWRhdGUoKTtcbiAgICBsZXQgbGVuZ3RocyA9IFtcbiAgICAgIHRoaXMuc3RhdGUubmV3X2VtYWlsLnRyaW0oKS5sZW5ndGgsXG4gICAgICB0aGlzLnN0YXRlLnBhc3N3b3JkLnRyaW0oKS5sZW5ndGhcbiAgICBdO1xuXG4gICAgaWYgKGxlbmd0aHMuaW5kZXhPZigwKSAhPT0gLTEpIHtcbiAgICAgIHNuYWNrYmFyLmVycm9yKGdldHRleHQoXCJGaWxsIG91dCBhbGwgZmllbGRzLlwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5uZXdfZW1haWwpIHtcbiAgICAgIHNuYWNrYmFyLmVycm9yKGVycm9ycy5uZXdfZW1haWxbMF0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc2VuZCgpIHtcbiAgICByZXR1cm4gYWpheC5wb3N0KHRoaXMucHJvcHMudXNlci5hcGlfdXJsLmNoYW5nZV9lbWFpbCwge1xuICAgICAgbmV3X2VtYWlsOiB0aGlzLnN0YXRlLm5ld19lbWFpbCxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLnN0YXRlLnBhc3N3b3JkLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VjY2VzcyhyZXNwb25zZSkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgbmV3X2VtYWlsOiAnJyxcbiAgICAgIHBhc3N3b3JkOiAnJ1xuICAgIH0pO1xuXG4gICAgc25hY2tiYXIuc3VjY2VzcyhyZXNwb25zZS5kZXRhaWwpO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IocmVqZWN0aW9uKSB7XG4gICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgaWYgKHJlamVjdGlvbi5uZXdfZW1haWwpIHtcbiAgICAgICAgc25hY2tiYXIuZXJyb3IocmVqZWN0aW9uLm5ld19lbWFpbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbmFja2Jhci5lcnJvcihyZWplY3Rpb24ucGFzc3dvcmQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzbmFja2Jhci5hcGlFcnJvcihyZWplY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxmb3JtIG9uU3VibWl0PXt0aGlzLmhhbmRsZVN1Ym1pdH0gY2xhc3NOYW1lPVwiZm9ybS1ob3Jpem9udGFsXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInR5cGVcIiBzdHlsZT17e2Rpc3BsYXk6ICdub25lJ319IC8+XG4gICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgc3R5bGU9e3tkaXNwbGF5OiAnbm9uZSd9fSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IHBhbmVsLWZvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1oZWFkaW5nXCI+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInBhbmVsLXRpdGxlXCI+e2dldHRleHQoXCJDaGFuZ2UgZS1tYWlsIGFkZHJlc3NcIil9PC9oMz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwtYm9keVwiPlxuXG4gICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIk5ldyBlLW1haWxcIil9IGZvcj1cImlkX25ld19lbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPVwiY29sLXNtLTRcIiBjb250cm9sQ2xhc3M9XCJjb2wtc20tOFwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJpZF9uZXdfZW1haWxcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ25ld19lbWFpbCcpfVxuICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLm5ld19lbWFpbH0gLz5cbiAgICAgICAgICA8L0Zvcm1Hcm91cD5cblxuICAgICAgICAgIDxociAvPlxuXG4gICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIllvdXIgY3VycmVudCBwYXNzd29yZFwiKX0gZm9yPVwiaWRfcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgbGFiZWxDbGFzcz1cImNvbC1zbS00XCIgY29udHJvbENsYXNzPVwiY29sLXNtLThcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZD1cImlkX3Bhc3N3b3JkXCIgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCdwYXNzd29yZCcpfVxuICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnBhc3N3b3JkfSAvPlxuICAgICAgICAgIDwvRm9ybUdyb3VwPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsLWZvb3RlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS04IGNvbC1zbS1vZmZzZXQtNFwiPlxuXG4gICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiYnRuLXByaW1hcnlcIiBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzTG9hZGluZ30+XG4gICAgICAgICAgICAgICAge2dldHRleHQoXCJDaGFuZ2UgZS1tYWlsXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgRm9ybUdyb3VwIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0tZ3JvdXAnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInO1xuaW1wb3J0ICogYXMgdmFsaWRhdG9ycyBmcm9tICdtaXNhZ28vdXRpbHMvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgRm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIG5ld19wYXNzd29yZDogJycsXG4gICAgICByZXBlYXRfcGFzc3dvcmQ6ICcnLFxuICAgICAgcGFzc3dvcmQ6ICcnLFxuXG4gICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgIG5ld19wYXNzd29yZDogW1xuICAgICAgICAgIHZhbGlkYXRvcnMucGFzc3dvcmRNaW5MZW5ndGgobWlzYWdvLmdldCgnU0VUVElOR1MnKSlcbiAgICAgICAgXSxcbiAgICAgICAgcmVwZWF0X3Bhc3N3b3JkOiBbXSxcbiAgICAgICAgcGFzc3dvcmQ6IFtdXG4gICAgICB9LFxuXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGNsZWFuKCkge1xuICAgIGxldCBlcnJvcnMgPSB0aGlzLnZhbGlkYXRlKCk7XG4gICAgbGV0IGxlbmd0aHMgPSBbXG4gICAgICB0aGlzLnN0YXRlLm5ld19wYXNzd29yZC50cmltKCkubGVuZ3RoLFxuICAgICAgdGhpcy5zdGF0ZS5yZXBlYXRfcGFzc3dvcmQudHJpbSgpLmxlbmd0aCxcbiAgICAgIHRoaXMuc3RhdGUucGFzc3dvcmQudHJpbSgpLmxlbmd0aFxuICAgIF07XG5cbiAgICBpZiAobGVuZ3Rocy5pbmRleE9mKDApICE9PSAtMSkge1xuICAgICAgc25hY2tiYXIuZXJyb3IoZ2V0dGV4dChcIkZpbGwgb3V0IGFsbCBmaWVsZHMuXCIpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLm5ld19wYXNzd29yZCkge1xuICAgICAgc25hY2tiYXIuZXJyb3IoZXJyb3JzLm5ld19wYXNzd29yZFswXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUubmV3X3Bhc3N3b3JkLnRyaW0oKSAhPT0gdGhpcy5zdGF0ZS5yZXBlYXRfcGFzc3dvcmQudHJpbSgpKSB7XG4gICAgICBzbmFja2Jhci5lcnJvcihnZXR0ZXh0KFwiTmV3IHBhc3N3b3JkcyBhcmUgZGlmZmVyZW50LlwiKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzZW5kKCkge1xuICAgIHJldHVybiBhamF4LnBvc3QodGhpcy5wcm9wcy51c2VyLmFwaV91cmwuY2hhbmdlX3Bhc3N3b3JkLCB7XG4gICAgICBuZXdfcGFzc3dvcmQ6IHRoaXMuc3RhdGUubmV3X3Bhc3N3b3JkLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMuc3RhdGUucGFzc3dvcmRcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN1Y2Nlc3MocmVzcG9uc2UpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIG5ld19wYXNzd29yZDogJycsXG4gICAgICByZXBlYXRfcGFzc3dvcmQ6ICcnLFxuICAgICAgcGFzc3dvcmQ6ICcnXG4gICAgfSk7XG5cbiAgICBzbmFja2Jhci5zdWNjZXNzKHJlc3BvbnNlLmRldGFpbCk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihyZWplY3Rpb24pIHtcbiAgICBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICBpZiAocmVqZWN0aW9uLm5ld19wYXNzd29yZCkge1xuICAgICAgICBzbmFja2Jhci5lcnJvcihyZWplY3Rpb24ubmV3X3Bhc3N3b3JkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNuYWNrYmFyLmVycm9yKHJlamVjdGlvbi5wYXNzd29yZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmFwaUVycm9yKHJlamVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fSBjbGFzc05hbWU9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgIDxpbnB1dCB0eXBlPVwidHlwZVwiIHN0eWxlPXt7ZGlzcGxheTogJ25vbmUnfX0gLz5cbiAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBzdHlsZT17e2Rpc3BsYXk6ICdub25lJ319IC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsIHBhbmVsLWRlZmF1bHQgcGFuZWwtZm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsLWhlYWRpbmdcIj5cbiAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwicGFuZWwtdGl0bGVcIj57Z2V0dGV4dChcIkNoYW5nZSBwYXNzd29yZFwiKX08L2gzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1ib2R5XCI+XG5cbiAgICAgICAgICA8Rm9ybUdyb3VwIGxhYmVsPXtnZXR0ZXh0KFwiTmV3IHBhc3N3b3JkXCIpfSBmb3I9XCJpZF9uZXdfcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgbGFiZWxDbGFzcz1cImNvbC1zbS00XCIgY29udHJvbENsYXNzPVwiY29sLXNtLThcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZD1cImlkX25ld19wYXNzd29yZFwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgnbmV3X3Bhc3N3b3JkJyl9XG4gICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUubmV3X3Bhc3N3b3JkfSAvPlxuICAgICAgICAgIDwvRm9ybUdyb3VwPlxuXG4gICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIlJlcGVhdCBwYXNzd29yZFwiKX0gZm9yPVwiaWRfcmVwZWF0X3Bhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9XCJjb2wtc20tNFwiIGNvbnRyb2xDbGFzcz1cImNvbC1zbS04XCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgaWQ9XCJpZF9yZXBlYXRfcGFzc3dvcmRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ3JlcGVhdF9wYXNzd29yZCcpfVxuICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnJlcGVhdF9wYXNzd29yZH0gLz5cbiAgICAgICAgICA8L0Zvcm1Hcm91cD5cblxuICAgICAgICAgIDxociAvPlxuXG4gICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIllvdXIgY3VycmVudCBwYXNzd29yZFwiKX0gZm9yPVwiaWRfcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgbGFiZWxDbGFzcz1cImNvbC1zbS00XCIgY29udHJvbENsYXNzPVwiY29sLXNtLThcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBpZD1cImlkX3Bhc3N3b3JkXCIgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCdwYXNzd29yZCcpfVxuICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnBhc3N3b3JkfSAvPlxuICAgICAgICAgIDwvRm9ybUdyb3VwPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsLWZvb3RlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1zbS04IGNvbC1zbS1vZmZzZXQtNFwiPlxuXG4gICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiYnRuLXByaW1hcnlcIiBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzTG9hZGluZ30+XG4gICAgICAgICAgICAgICAge2dldHRleHQoXCJDaGFuZ2UgcGFzc3dvcmRcIil9XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ2hhbmdlRW1haWwgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvb3B0aW9ucy9zaWduLWluLWNyZWRlbnRpYWxzL2NoYW5nZS1lbWFpbCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IENoYW5nZVBhc3N3b3JkIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL29wdGlvbnMvc2lnbi1pbi1jcmVkZW50aWFscy9jaGFuZ2UtcGFzc3dvcmQnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgdGl0bGUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3BhZ2UtdGl0bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRpdGxlLnNldCh7XG4gICAgICB0aXRsZTogZ2V0dGV4dChcIkNoYW5nZSBlbWFpbCBvciBwYXNzd29yZFwiKSxcbiAgICAgIHBhcmVudDogZ2V0dGV4dChcIkNoYW5nZSB5b3VyIG9wdGlvbnNcIilcbiAgICB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXY+XG4gICAgICA8Q2hhbmdlRW1haWwgdXNlcj17dGhpcy5wcm9wcy51c2VyfSAvPlxuICAgICAgPENoYW5nZVBhc3N3b3JkIHVzZXI9e3RoaXMucHJvcHMudXNlcn0gLz5cblxuICAgICAgPHAgY2xhc3NOYW1lPVwibWVzc2FnZS1saW5lXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICB3YXJuaW5nXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGEgaHJlZj17bWlzYWdvLmdldCgnRk9SR09UVEVOX1BBU1NXT1JEX1VSTCcpfT5cbiAgICAgICAgICB7Z2V0dGV4dChcIkNoYW5nZSBmb3Jnb3R0ZW4gcGFzc3dvcmRcIil9XG4gICAgICAgIDwvYT5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2FkZXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvbG9hZGVyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1ib2R5IHBhbmVsLWJvZHktbG9hZGluZ1wiPlxuICAgICAgPExvYWRlciBjbGFzc05hbWU9XCJsb2FkZXIgbG9hZGVyLXNwYWNlZFwiIC8+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRIZWxwVGV4dCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5oZWxwVGV4dCkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxwIGNsYXNzTmFtZT1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAge3RoaXMucHJvcHMuaGVscFRleHR9XG4gICAgICA8L3A+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJwYW5lbC1ib2R5IHBhbmVsLW1lc3NhZ2UtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWljb25cIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgIHt0aGlzLnByb3BzLmljb24gfHwgJ2luZm9fb3V0bGluZSd9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWJvZHlcIj5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwibGVhZFwiPlxuICAgICAgICAgIHt0aGlzLnByb3BzLm1lc3NhZ2V9XG4gICAgICAgIDwvcD5cbiAgICAgICAge3RoaXMuZ2V0SGVscFRleHQoKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHp4Y3ZibiBmcm9tICdtaXNhZ28vc2VydmljZXMvenhjdmJuJztcblxuZXhwb3J0IGNvbnN0IFNUWUxFUyA9IFtcbiAgJ3Byb2dyZXNzLWJhci1kYW5nZXInLFxuICAncHJvZ3Jlc3MtYmFyLXdhcm5pbmcnLFxuICAncHJvZ3Jlc3MtYmFyLXdhcm5pbmcnLFxuICAncHJvZ3Jlc3MtYmFyLXByaW1hcnknLFxuICAncHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MnXG5dO1xuXG5leHBvcnQgY29uc3QgTEFCRUxTID0gW1xuICBnZXR0ZXh0KFwiRW50ZXJlZCBwYXNzd29yZCBpcyB2ZXJ5IHdlYWsuXCIpLFxuICBnZXR0ZXh0KFwiRW50ZXJlZCBwYXNzd29yZCBpcyB3ZWFrLlwiKSxcbiAgZ2V0dGV4dChcIkVudGVyZWQgcGFzc3dvcmQgaXMgYXZlcmFnZS5cIiksXG4gIGdldHRleHQoXCJFbnRlcmVkIHBhc3N3b3JkIGlzIHN0cm9uZy5cIiksXG4gIGdldHRleHQoXCJFbnRlcmVkIHBhc3N3b3JkIGlzIHZlcnkgc3Ryb25nLlwiKVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuX3Njb3JlID0gMDtcbiAgICB0aGlzLl9wYXNzd29yZCA9IG51bGw7XG4gICAgdGhpcy5faW5wdXRzID0gW107XG4gIH1cblxuICBnZXRTY29yZShwYXNzd29yZCwgaW5wdXRzKSB7XG4gICAgbGV0IGNhY2hlU3RhbGUgPSBmYWxzZTtcblxuICAgIGlmIChwYXNzd29yZC50cmltKCkgIT09IHRoaXMuX3Bhc3N3b3JkKSB7XG4gICAgICBjYWNoZVN0YWxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXRzLmxlbmd0aCAhPT0gdGhpcy5faW5wdXRzLmxlbmd0aCkge1xuICAgICAgY2FjaGVTdGFsZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0cy5tYXAoKHZhbHVlLCBpKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS50cmltKCkgIT09IHRoaXMuX2lucHV0c1tpXSkge1xuICAgICAgICAgIGNhY2hlU3RhbGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY2FjaGVTdGFsZSkge1xuICAgICAgdGhpcy5fc2NvcmUgPSB6eGN2Ym4uc2NvcmVQYXNzd29yZChwYXNzd29yZCwgaW5wdXRzKTtcbiAgICAgIHRoaXMuX3Bhc3N3b3JkID0gcGFzc3dvcmQudHJpbSgpO1xuICAgICAgdGhpcy5faW5wdXRzID0gaW5wdXRzLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3Njb3JlO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICBsZXQgc2NvcmUgPSB0aGlzLmdldFNjb3JlKHRoaXMucHJvcHMucGFzc3dvcmQsIHRoaXMucHJvcHMuaW5wdXRzKTtcblxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImhlbHAtYmxvY2sgcGFzc3dvcmQtc3RyZW5ndGhcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicHJvZ3Jlc3MtYmFyIFwiICsgU1RZTEVTW3Njb3JlXX1cbiAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAoMjAgKyAoMjAgKiBzY29yZSkpICsgJyUnfX1cbiAgICAgICAgICAgICByb2xlPVwicHJvZ3Jlc3MtYmFyXCJcbiAgICAgICAgICAgICBhcmlhLXZhbHVlbm93PXtzY29yZX1cbiAgICAgICAgICAgICBhcmlhLXZhbHVlbWluPVwiMFwiXG4gICAgICAgICAgICAgYXJpYS12YWx1ZW1heD1cIjRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICB7TEFCRUxTW3Njb3JlXX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtYWxsXCI+XG4gICAgICAgIHtMQUJFTFNbc2NvcmVdfVxuICAgICAgPC9wPlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBBdmF0YXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYXZhdGFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgRm9sbG93QnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3Byb2ZpbGUvZm9sbG93LWJ1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IE1vZGVyYXRpb25OYXYgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcHJvZmlsZS9tb2RlcmF0aW9uL25hdic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFN0YXR1cywgeyBTdGF0dXNJY29uLCBTdGF0dXNMYWJlbCB9IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXItc3RhdHVzJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0VXNlclN0YXR1cygpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxsaSBjbGFzc05hbWU9XCJ1c2VyLXN0YXR1cy1kaXNwbGF5XCI+XG4gICAgICA8U3RhdHVzIHVzZXI9e3RoaXMucHJvcHMucHJvZmlsZX0gc3RhdHVzPXt0aGlzLnByb3BzLnByb2ZpbGUuc3RhdHVzfT5cbiAgICAgICAgPFN0YXR1c0ljb24gdXNlcj17dGhpcy5wcm9wcy5wcm9maWxlfVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM9e3RoaXMucHJvcHMucHJvZmlsZS5zdGF0dXN9IC8+XG4gICAgICAgIDxTdGF0dXNMYWJlbCB1c2VyPXt0aGlzLnByb3BzLnByb2ZpbGV9XG4gICAgICAgICAgICAgICAgICAgICBzdGF0dXM9e3RoaXMucHJvcHMucHJvZmlsZS5zdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzdGF0dXMtbGFiZWxcIiAvPlxuICAgICAgPC9TdGF0dXM+XG4gICAgPC9saT47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxuXG4gIGdldFVzZXJSYW5rKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByb2ZpbGUucmFuay5pc190YWIpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8bGkgY2xhc3NOYW1lPVwidXNlci1yYW5rXCI+XG4gICAgICAgIDxhIGhyZWY9e3RoaXMucHJvcHMucHJvZmlsZS5yYW5rLmFic29sdXRlX3VybH0gY2xhc3NOYW1lPVwiaXRlbS10aXRsZVwiPlxuICAgICAgICAgIHt0aGlzLnByb3BzLnByb2ZpbGUucmFuay5uYW1lfVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8bGkgY2xhc3NOYW1lPVwidXNlci1yYW5rXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIml0ZW0tdGl0bGVcIj57dGhpcy5wcm9wcy5wcm9maWxlLnJhbmsubmFtZX08L3NwYW4+XG4gICAgICA8L2xpPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlclRpdGxlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByb2ZpbGUudGl0bGUpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8bGkgY2xhc3NOYW1lPVwidXNlci10aXRsZVwiPlxuICAgICAgICB7dGhpcy5wcm9wcy5wcm9maWxlLnRpdGxlfVxuICAgICAgPC9saT47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5wcm9maWxlLnJhbmsudGl0bGUpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8bGkgY2xhc3NOYW1lPVwidXNlci10aXRsZVwiPlxuICAgICAgICB7dGhpcy5wcm9wcy5wcm9maWxlLnJhbmsudGl0bGV9XG4gICAgICA8L2xpPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldEpvaW5lZE9uKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICBsZXQgdGl0bGUgPSBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiSm9pbmVkIG9uICUoam9pbmVkX29uKXNcIiksIHtcbiAgICAgICdqb2luZWRfb24nOiB0aGlzLnByb3BzLnByb2ZpbGUuam9pbmVkX29uLmZvcm1hdCgnTEwsIExUJylcbiAgICB9LCB0cnVlKTtcblxuICAgIGxldCBhZ2UgPSBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiSm9pbmVkICUoam9pbmVkX29uKXNcIiksIHtcbiAgICAgICdqb2luZWRfb24nOiB0aGlzLnByb3BzLnByb2ZpbGUuam9pbmVkX29uLmZyb21Ob3coKVxuICAgIH0sIHRydWUpO1xuXG4gICAgcmV0dXJuIDxsaSBjbGFzc05hbWU9XCJ1c2VyLWpvaW5lZC1vblwiPlxuICAgICAgPGFiYnIgdGl0bGU9e3RpdGxlfT5cbiAgICAgICAge2FnZX1cbiAgICAgIDwvYWJicj5cbiAgICA8L2xpPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG5cbiAgZ2V0RW1haWwoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucHJvZmlsZS5lbWFpbCkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxsaSBjbGFzc05hbWU9XCJ1c2VyLWVtYWlsXCI+XG4gICAgICAgIDxhIGhyZWY9eydtYWlsdG86JyArIHRoaXMucHJvcHMucHJvZmlsZS5lbWFpbH0gY2xhc3NOYW1lPVwiaXRlbS10aXRsZVwiPlxuICAgICAgICAgIHt0aGlzLnByb3BzLnByb2ZpbGUuZW1haWx9XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0Rm9sbG93QnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByb2ZpbGUuYWNsLmNhbl9mb2xsb3cpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8Rm9sbG93QnV0dG9uIGNsYXNzTmFtZT1cImJ0biBidG4tYWxpZ25lZCBoaWRkZW4teHMgaGlkZGVuLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGU9e3RoaXMucHJvcHMucHJvZmlsZX0gLz47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRNb2RlcmF0aW9uQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByb2ZpbGUuYWNsLmNhbl9tb2RlcmF0ZSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYnRuLWdyb3VwIGJ0bi1hbGlnbmVkIGhpZGRlbi14cyBoaWRkZW4tc21cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW1vZGVyYXRlIGRyb3Bkb3duLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgIHRvbmFsaXR5XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtnZXR0ZXh0KFwiTW9kZXJhdGlvblwiKX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxNb2RlcmF0aW9uTmF2IHByb2ZpbGU9e3RoaXMucHJvcHMucHJvZmlsZX0gLz5cbiAgICAgIDwvZGl2PjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuPGRpdiBjbGFzc05hbWU9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLW1kLTkgY29sLW1kLW9mZnNldC0zXCI+XG5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJwdWxsLWxlZnRcIj5cbiAgICAgICAgICAgICAgPEF2YXRhciB1c2VyPXt0aGlzLnByb3BzLnByb2ZpbGV9IHNpemU9XCIxMDBcIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ1c2VyLW5hbWVcIj57dGhpcy5wcm9wcy5wcm9maWxlLnVzZXJuYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG5cbiAgICAgICAgICAgIHt0aGlzLmdldEZvbGxvd0J1dHRvbigpfVxuICAgICAgICAgICAge3RoaXMuZ2V0TW9kZXJhdGlvbkJ1dHRvbigpfVxuXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdCBidG4tYWxpZ25lZCBidG4taWNvbiBidG4tZHJvcGRvd24tdG9nZ2xlIGhpZGRlbi1tZCBoaWRkZW4tbGdcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy50b2dnbGVOYXZ9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17dGhpcy5wcm9wcy5kcm9wZG93biA/ICd0cnVlJyA6ICdmYWxzZSd9PlxuICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICAgICAgbWVudVxuICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImhlYWRlci1zdGF0c1wiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC05IGNvbC1tZC1vZmZzZXQtM1wiPlxuXG4gICAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWlubGluZVwiPlxuICAgICAgICAgICAgICAgIHt0aGlzLmdldFVzZXJTdGF0dXMoKX1cbiAgICAgICAgICAgICAgICB7dGhpcy5nZXRVc2VyUmFuaygpfVxuICAgICAgICAgICAgICAgIHt0aGlzLmdldFVzZXJUaXRsZSgpfVxuICAgICAgICAgICAgICAgIHt0aGlzLmdldEpvaW5lZE9uKCl9XG4gICAgICAgICAgICAgICAge3RoaXMuZ2V0RW1haWwoKX1cbiAgICAgICAgICAgICAgPC91bD5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFBhbmVsTG9hZGVyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3BhbmVsLWxvYWRlcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFBhbmVsTWVzc2FnZSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9wYW5lbC1tZXNzYWdlJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgcG9sbHMgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3BvbGxzJztcbmltcG9ydCB0aXRsZSBmcm9tICdtaXNhZ28vc2VydmljZXMvcGFnZS10aXRsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICBpZiAobWlzYWdvLmhhcygnUFJPRklMRV9CQU4nKSkge1xuICAgICAgdGhpcy5pbml0V2l0aFByZWxvYWRlZERhdGEobWlzYWdvLnBvcCgnUFJPRklMRV9CQU4nKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdFdpdGhvdXRQcmVsb2FkZWREYXRhKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGFydFBvbGxpbmcocHJvcHMucHJvZmlsZS5hcGlfdXJsLmJhbik7XG4gIH1cblxuICBpbml0V2l0aFByZWxvYWRlZERhdGEoYmFuKSB7XG4gICAgaWYgKGJhbi5leHBpcmVzX29uKSB7XG4gICAgICBiYW4uZXhwaXJlc19vbiA9IG1vbWVudChiYW4uZXhwaXJlc19vbik7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGlzTG9hZGVkOiB0cnVlLFxuICAgICAgYmFuXG4gICAgfTtcbiAgfVxuXG4gIGluaXRXaXRob3V0UHJlbG9hZGVkRGF0YSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgaXNMb2FkZWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHN0YXJ0UG9sbGluZyhhcGkpIHtcbiAgICBwb2xscy5zdGFydCh7XG4gICAgICBwb2xsOiAnYmFuLWRldGFpbHMnLFxuICAgICAgdXJsOiBhcGksXG4gICAgICBmcmVxdWVuY3k6IDkwICogMTAwMCxcbiAgICAgIHVwZGF0ZTogdGhpcy51cGRhdGUsXG4gICAgICBlcnJvcjogdGhpcy5lcnJvclxuICAgIH0pO1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICB1cGRhdGUgPSAoYmFuKSA9PiB7XG4gICAgaWYgKGJhbi5leHBpcmVzX29uKSB7XG4gICAgICBiYW4uZXhwaXJlc19vbiA9IG1vbWVudChiYW4uZXhwaXJlc19vbik7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc0xvYWRlZDogdHJ1ZSxcbiAgICAgIGVycm9yOiBudWxsLFxuXG4gICAgICBiYW5cbiAgICB9KTtcbiAgfTtcblxuICBlcnJvciA9IChlcnJvcikgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaXNMb2FkZWQ6IHRydWUsXG4gICAgICBlcnJvcjogZXJyb3IuZGV0YWlsLFxuICAgICAgYmFuOiBudWxsXG4gICAgfSk7XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGl0bGUuc2V0KHtcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KFwiQmFuIGRldGFpbHNcIiksXG4gICAgICBwYXJlbnQ6IHRoaXMucHJvcHMucHJvZmlsZS51c2VybmFtZVxuICAgIH0pO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgcG9sbHMuc3RvcCgnYmFuLWRldGFpbHMnKTtcbiAgfVxuXG4gIGdldFVzZXJNZXNzYWdlKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmJhbi51c2VyX21lc3NhZ2UpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsLWJvZHkgYmFuLW1lc3NhZ2UgYmFuLXVzZXItbWVzc2FnZVwiPlxuICAgICAgICA8aDQ+e2dldHRleHQoXCJVc2VyLXNob3duIGJhbiBtZXNzYWdlXCIpfTwvaDQ+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVhZFwiIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICBfX2h0bWw6IHRoaXMuc3RhdGUuYmFuLnVzZXJfbWVzc2FnZS5odG1sXG4gICAgICAgICAgfX0gLz5cbiAgICAgIDwvZGl2PjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldFN0YWZmTWVzc2FnZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5iYW4uc3RhZmZfbWVzc2FnZSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwtYm9keSBiYW4tbWVzc2FnZSBiYW4tc3RhZmYtbWVzc2FnZVwiPlxuICAgICAgICA8aDQ+e2dldHRleHQoXCJUZWFtLXNob3duIGJhbiBtZXNzYWdlXCIpfTwvaDQ+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGVhZFwiIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICBfX2h0bWw6IHRoaXMuc3RhdGUuYmFuLnN0YWZmX21lc3NhZ2UuaHRtbFxuICAgICAgICAgIH19IC8+XG4gICAgICA8L2Rpdj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldEV4cGlyYXRpb25NZXNzYWdlKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmJhbi5leHBpcmVzX29uKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5iYW4uZXhwaXJlc19vbi5pc0FmdGVyKG1vbWVudCgpKSkge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIGxldCB0aXRsZSA9IGludGVycG9sYXRlKFxuICAgICAgICAgIGdldHRleHQoXCJUaGlzIGJhbiBleHBpcmVzIG9uICUoZXhwaXJlc19vbilzLlwiKSwge1xuICAgICAgICAgICAgJ2V4cGlyZXNfb24nOiB0aGlzLnN0YXRlLmJhbi5leHBpcmVzX29uLmZvcm1hdCgnTEwsIExUJylcbiAgICAgICAgICB9LCB0cnVlKTtcblxuICAgICAgICBsZXQgbWVzc2FnZSA9IGludGVycG9sYXRlKFxuICAgICAgICAgIGdldHRleHQoXCJUaGlzIGJhbiBleHBpcmVzICUoZXhwaXJlc19vbilzLlwiKSwge1xuICAgICAgICAgICAgJ2V4cGlyZXNfb24nOiB0aGlzLnN0YXRlLmJhbi5leHBpcmVzX29uLmZyb21Ob3coKVxuICAgICAgICAgIH0sIHRydWUpO1xuXG4gICAgICAgIHJldHVybiA8YWJiciB0aXRsZT17dGl0bGV9PlxuICAgICAgICAgIHttZXNzYWdlfVxuICAgICAgICA8L2FiYnI+O1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGdldHRleHQoXCJUaGlzIGJhbiBoYXMgZXhwaXJlZC5cIik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiJSh1c2VybmFtZSlzJ3MgYmFuIGlzIHBlcm1hbmVudC5cIiksIHtcbiAgICAgICAgJ3VzZXJuYW1lJzogdGhpcy5wcm9wcy5wcm9maWxlLnVzZXJuYW1lXG4gICAgICB9LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRQYW5lbEJvZHkoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuYmFuKSB7XG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5zdGF0ZS5iYW4pLmxlbmd0aCkge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8ZGl2PlxuICAgICAgICAgIHt0aGlzLmdldFVzZXJNZXNzYWdlKCl9XG4gICAgICAgICAge3RoaXMuZ2V0U3RhZmZNZXNzYWdlKCl9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhbmVsLWJvZHkgYmFuLWV4cGlyZXNcIj5cbiAgICAgICAgICAgIDxoND57Z2V0dGV4dChcIkJhbiBleHBpcmF0aW9uXCIpfTwvaDQ+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJsZWFkXCI+XG4gICAgICAgICAgICAgIHt0aGlzLmdldEV4cGlyYXRpb25NZXNzYWdlKCl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PjtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgICAgcmV0dXJuIDxkaXY+XG4gICAgICAgICAgPFBhbmVsTWVzc2FnZSBtZXNzYWdlPXtnZXR0ZXh0KFwiTm8gYmFuIGlzIGFjdGl2ZSBhdCB0aGUgbW9tZW50LlwiKX0gLz5cbiAgICAgICAgPC9kaXY+O1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxkaXY+XG4gICAgICAgIDxQYW5lbE1lc3NhZ2UgaWNvbj1cImVycm9yX291dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9e3RoaXMuc3RhdGUuZXJyb3J9IC8+XG4gICAgICA8L2Rpdj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPGRpdj5cbiAgICAgICAgPFBhbmVsTG9hZGVyIC8+XG4gICAgICA8L2Rpdj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicHJvZmlsZS1iYW4tZGV0YWlsc1wiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFuZWwtaGVhZGluZ1wiPlxuICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJwYW5lbC10aXRsZVwiPntnZXR0ZXh0KFwiQmFuIGRldGFpbHNcIil9PC9oMz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAge3RoaXMuZ2V0UGFuZWxCb2R5KCl9XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYnV0dG9uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgeyBwYXRjaFByb2ZpbGUgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvcHJvZmlsZSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wcm9maWxlLmlzX2ZvbGxvd2VkKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jbGFzc05hbWUgKyAnIGJ0bi1kZWZhdWx0IGJ0bi1mb2xsb3dpbmcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jbGFzc05hbWUgKyAnIGJ0bi1kZWZhdWx0IGJ0bi1mb2xsb3cnO1xuICAgIH1cbiAgfVxuXG4gIGdldEljb24oKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucHJvZmlsZS5pc19mb2xsb3dlZCkge1xuICAgICAgcmV0dXJuICdmYXZvcml0ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnZmF2b3JpdGVfYm9yZGVyJztcbiAgICB9XG4gIH1cblxuICBnZXRMYWJlbCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wcm9maWxlLmlzX2ZvbGxvd2VkKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIkZvbGxvd2luZ1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCJGb2xsb3dcIik7XG4gICAgfVxuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBhY3Rpb24gPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc0xvYWRpbmc6IHRydWVcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb3BzLnByb2ZpbGUuaXNfZm9sbG93ZWQpIHtcbiAgICAgIHN0b3JlLmRpc3BhdGNoKHBhdGNoUHJvZmlsZSh7XG4gICAgICAgIGlzX2ZvbGxvd2VkOiBmYWxzZSxcbiAgICAgICAgZm9sbG93ZXJzOiB0aGlzLnByb3BzLnByb2ZpbGUuZm9sbG93ZXJzIC0gMVxuICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdG9yZS5kaXNwYXRjaChwYXRjaFByb2ZpbGUoe1xuICAgICAgICBpc19mb2xsb3dlZDogdHJ1ZSxcbiAgICAgICAgZm9sbG93ZXJzOiB0aGlzLnByb3BzLnByb2ZpbGUuZm9sbG93ZXJzICsgMVxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGFqYXgucG9zdCh0aGlzLnByb3BzLnByb2ZpbGUuYXBpX3VybC5mb2xsb3cpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgc3RvcmUuZGlzcGF0Y2gocGF0Y2hQcm9maWxlKGRhdGEpKTtcbiAgICB9LCAocmVqZWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBzbmFja2Jhci5hcGlFcnJvcihyZWplY3Rpb24pO1xuICAgIH0pO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxCdXR0b24gY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmFjdGlvbn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgIHt0aGlzLmdldEljb24oKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHt0aGlzLmdldExhYmVsKCl9XG4gICAgPC9CdXR0b24+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBTZWFyY2ggZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvc2VhcmNoJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgVXNlcnNMaXN0IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJzLWxpc3Qvcm9vdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHsgZGVoeWRyYXRlLCBhcHBlbmQgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvdXNlcnMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInO1xuaW1wb3J0IHN0b3JlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zdG9yZSc7XG5pbXBvcnQgdGl0bGUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3BhZ2UtdGl0bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zZXRTcGVjaWFsUHJvcHMoKTtcblxuICAgIGlmIChtaXNhZ28uaGFzKHRoaXMuUFJFTE9BREVEX0RBVEFfS0VZKSkge1xuICAgICAgdGhpcy5pbml0V2l0aFByZWxvYWRlZERhdGEobWlzYWdvLnBvcCh0aGlzLlBSRUxPQURFRF9EQVRBX0tFWSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRXaXRob3V0UHJlbG9hZGVkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHNldFNwZWNpYWxQcm9wcygpIHtcbiAgICB0aGlzLlBSRUxPQURFRF9EQVRBX0tFWSA9ICdQUk9GSUxFX0ZPTExPV0VSUyc7XG4gICAgdGhpcy5USVRMRSA9IGdldHRleHQoJ0ZvbGxvd2VycycpO1xuICAgIHRoaXMuQVBJX0ZJTFRFUiA9ICdmb2xsb3dlcnMnO1xuICB9XG5cbiAgaW5pdFdpdGhQcmVsb2FkZWREYXRhKGRhdGEpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgaXNMb2FkZWQ6IHRydWUsXG4gICAgICBpc0J1c3k6IGZhbHNlLFxuXG4gICAgICBzZWFyY2g6ICcnLFxuXG4gICAgICBjb3VudDogZGF0YS5jb3VudCxcbiAgICAgIG1vcmU6IGRhdGEubW9yZSxcblxuICAgICAgcGFnZTogZGF0YS5wYWdlLFxuICAgICAgcGFnZXM6IGRhdGEucGFnZXNcbiAgICB9O1xuXG4gICAgc3RvcmUuZGlzcGF0Y2goZGVoeWRyYXRlKGRhdGEucmVzdWx0cykpO1xuICB9XG5cbiAgaW5pdFdpdGhvdXRQcmVsb2FkZWREYXRhKCkge1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBpc0xvYWRlZDogZmFsc2UsXG4gICAgICBpc0J1c3k6IGZhbHNlLFxuXG4gICAgICBzZWFyY2g6ICcnLFxuXG4gICAgICBjb3VudDogMCxcbiAgICAgIG1vcmU6IDAsXG5cbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwYWdlczogMVxuICAgIH07XG5cbiAgICB0aGlzLmxvYWRVc2VycygpO1xuICB9XG5cbiAgbG9hZFVzZXJzKHBhZ2U9MSwgc2VhcmNoPW51bGwpIHtcbiAgICBhamF4LmdldChtaXNhZ28uZ2V0KCdVU0VSU19BUEknKSwge1xuICAgICAgW3RoaXMuQVBJX0ZJTFRFUl06IHRoaXMucHJvcHMucHJvZmlsZS5pZCxcbiAgICAgIG5hbWU6IHNlYXJjaCxcbiAgICAgIHBhZ2U6IHBhZ2UgfHwgMVxuICAgIH0sICd1c2VyLScgKyB0aGlzLkFQSV9GSUxURVIpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIGlmIChwYWdlID09PSAxKSB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKGRlaHlkcmF0ZShkYXRhLnJlc3VsdHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKGFwcGVuZChkYXRhLnJlc3VsdHMpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzTG9hZGVkOiB0cnVlLFxuICAgICAgICBpc0J1c3k6IGZhbHNlLFxuXG4gICAgICAgIGNvdW50OiBkYXRhLmNvdW50LFxuICAgICAgICBtb3JlOiBkYXRhLm1vcmUsXG5cbiAgICAgICAgcGFnZTogZGF0YS5wYWdlLFxuICAgICAgICBwYWdlczogZGF0YS5wYWdlc1xuICAgICAgfSk7XG4gICAgfSwgKHJlamVjdGlvbikgPT4ge1xuICAgICAgc25hY2tiYXIuYXBpRXJyb3IocmVqZWN0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRpdGxlLnNldCh7XG4gICAgICB0aXRsZTogdGhpcy5USVRMRSxcbiAgICAgIHBhcmVudDogdGhpcy5wcm9wcy5wcm9maWxlLnVzZXJuYW1lXG4gICAgfSk7XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIGxvYWRNb3JlID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaXNCdXN5OiB0cnVlXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvYWRVc2Vycyh0aGlzLnN0YXRlLnBhZ2UgKyAxLCB0aGlzLnN0YXRlLnNlYXJjaCk7XG4gIH07XG5cbiAgc2VhcmNoID0gKGV2KSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc0xvYWRlZDogZmFsc2UsXG4gICAgICBpc0J1c3k6IHRydWUsXG5cbiAgICAgIHNlYXJjaDogZXYudGFyZ2V0LnZhbHVlLFxuXG4gICAgICBjb3VudDogMCxcbiAgICAgIG1vcmU6IDAsXG5cbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwYWdlczogMVxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2FkVXNlcnMoMSwgZXYudGFyZ2V0LnZhbHVlKTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBnZXRMYWJlbCgpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUuaXNMb2FkZWQpIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KCdMb2FkaW5nLi4uJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLnNlYXJjaCkge1xuICAgICAgbGV0IG1lc3NhZ2UgPSBuZ2V0dGV4dChcbiAgICAgICAgXCJGb3VuZCAlKHVzZXJzKXMgdXNlci5cIixcbiAgICAgICAgXCJGb3VuZCAlKHVzZXJzKXMgdXNlcnMuXCIsXG4gICAgICAgIHRoaXMuc3RhdGUuY291bnQpO1xuXG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUobWVzc2FnZSwge1xuICAgICAgICAndXNlcnMnOiB0aGlzLnN0YXRlLmNvdW50XG4gICAgICB9LCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMucHJvZmlsZS5pZCA9PT0gdGhpcy5wcm9wcy51c2VyLmlkKSB7XG4gICAgICBsZXQgbWVzc2FnZSA9IG5nZXR0ZXh0KFxuICAgICAgICBcIllvdSBoYXZlICUodXNlcnMpcyBmb2xsb3dlci5cIixcbiAgICAgICAgXCJZb3UgaGF2ZSAlKHVzZXJzKXMgZm9sbG93ZXJzLlwiLFxuICAgICAgICB0aGlzLnN0YXRlLmNvdW50KTtcblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlKG1lc3NhZ2UsIHtcbiAgICAgICAgJ3VzZXJzJzogdGhpcy5zdGF0ZS5jb3VudFxuICAgICAgfSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtZXNzYWdlID0gbmdldHRleHQoXG4gICAgICAgIFwiJSh1c2VybmFtZSlzIGhhcyAlKHVzZXJzKXMgZm9sbG93ZXIuXCIsXG4gICAgICAgIFwiJSh1c2VybmFtZSlzIGhhcyAlKHVzZXJzKXMgZm9sbG93ZXJzLlwiLFxuICAgICAgICB0aGlzLnN0YXRlLmNvdW50KTtcblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlKG1lc3NhZ2UsIHtcbiAgICAgICAgJ3VzZXJuYW1lJzogdGhpcy5wcm9wcy5wcm9maWxlLnVzZXJuYW1lLFxuICAgICAgICAndXNlcnMnOiB0aGlzLnN0YXRlLmNvdW50XG4gICAgICB9LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRFbXB0eU1lc3NhZ2UoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuc2VhcmNoKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIlNlYXJjaCByZXR1cm5lZCBubyB1c2VycyBtYXRjaGluZyBzcGVjaWZpZWQgY3JpdGVyaWEuXCIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy51c2VyLmlkID09PSB0aGlzLnByb3BzLnByb2ZpbGUuaWQpIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiWW91IGhhdmUgbm8gZm9sbG93ZXJzLlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGludGVycG9sYXRlKGdldHRleHQoXCIlKHVzZXJuYW1lKXMgaGFzIG5vIGZvbGxvd2Vycy5cIiksIHtcbiAgICAgICAgJ3VzZXJuYW1lJzogdGhpcy5wcm9wcy5wcm9maWxlLnVzZXJuYW1lXG4gICAgICB9LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRNb3JlQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLm1vcmUpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInBhZ2VyLW1vcmVcIj5cbiAgICAgICAgPEJ1dHRvbiBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzQnVzeX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmxvYWRNb3JlfT5cbiAgICAgICAgICB7aW50ZXJwb2xhdGUoZ2V0dGV4dChcIlNob3cgbW9yZSAoJShtb3JlKXMpXCIpLCB7XG4gICAgICAgICAgICAnbW9yZSc6IHRoaXMuc3RhdGUubW9yZVxuICAgICAgICAgIH0sIHRydWUpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvZGl2PjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldExpc3RCb2R5KCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmlzTG9hZGVkICYmIHRoaXMuc3RhdGUuY291bnQgPT09IDApIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8cCBjbGFzc05hbWU9XCJsZWFkXCI+XG4gICAgICAgIHt0aGlzLmdldEVtcHR5TWVzc2FnZSgpfVxuICAgICAgPC9wPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2PlxuICAgICAgICA8VXNlcnNMaXN0IGlzTG9hZGVkPXt0aGlzLnN0YXRlLmlzTG9hZGVkfVxuICAgICAgICAgICAgICAgICAgIHVzZXJzPXt0aGlzLnByb3BzLnVzZXJzfVxuICAgICAgICAgICAgICAgICAgIHNob3dSYW5rPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgIGNvbHM9ezJ9IC8+XG5cbiAgICAgICAge3RoaXMuZ2V0TW9yZUJ1dHRvbigpfVxuICAgICAgPC9kaXY+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9XG4gIH1cblxuICBnZXRDbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuICdwcm9maWxlLScgKyB0aGlzLkFQSV9GSUxURVI7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRDbGFzc05hbWUoKX0+XG5cbiAgICAgIDxuYXYgY2xhc3NOYW1lPVwidG9vbGJhclwiPlxuICAgICAgICA8aDMgY2xhc3NOYW1lPVwidG9vbGJhci1sZWZ0XCI+XG4gICAgICAgICAge3RoaXMuZ2V0TGFiZWwoKX1cbiAgICAgICAgPC9oMz5cblxuICAgICAgICA8U2VhcmNoIGNsYXNzTmFtZT1cInRvb2xiYXItcmlnaHRcIlxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlYXJjaH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5zZWFyY2h9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2dldHRleHQoXCJTZWFyY2ggaGlzdG9yeS4uLlwiKX0gLz5cbiAgICAgIDwvbmF2PlxuXG4gICAgICB7dGhpcy5nZXRMaXN0Qm9keSgpfVxuXG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb2xsb3dlcnMgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcHJvZmlsZS9mb2xsb3dlcnMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIEZvbGxvd2VycyB7XG4gIHNldFNwZWNpYWxQcm9wcygpIHtcbiAgICB0aGlzLlBSRUxPQURFRF9EQVRBX0tFWSA9ICdQUk9GSUxFX0ZPTExPV1MnO1xuICAgIHRoaXMuVElUTEUgPSBnZXR0ZXh0KCdGb2xsb3dzJyk7XG4gICAgdGhpcy5BUElfRklMVEVSID0gJ2ZvbGxvd3MnO1xuICB9XG5cbiAgZ2V0TGFiZWwoKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLmlzTG9hZGVkKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dCgnTG9hZGluZy4uLicpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5zZWFyY2gpIHtcbiAgICAgIGxldCBtZXNzYWdlID0gbmdldHRleHQoXG4gICAgICAgIFwiRm91bmQgJSh1c2VycylzIHVzZXIuXCIsXG4gICAgICAgIFwiRm91bmQgJSh1c2VycylzIHVzZXJzLlwiLFxuICAgICAgICB0aGlzLnN0YXRlLmNvdW50KTtcblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlKG1lc3NhZ2UsIHtcbiAgICAgICAgJ3VzZXJzJzogdGhpcy5zdGF0ZS5jb3VudFxuICAgICAgfSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnByb2ZpbGUuaWQgPT09IHRoaXMucHJvcHMudXNlci5pZCkge1xuICAgICAgbGV0IG1lc3NhZ2UgPSBuZ2V0dGV4dChcbiAgICAgICAgXCJZb3UgYXJlIGZvbGxvd2luZyAlKHVzZXJzKXMgdXNlci5cIixcbiAgICAgICAgXCJZb3UgYXJlIGZvbGxvd2luZyAlKHVzZXJzKXMgdXNlcnMuXCIsXG4gICAgICAgIHRoaXMuc3RhdGUuY291bnQpO1xuXG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUobWVzc2FnZSwge1xuICAgICAgICAndXNlcnMnOiB0aGlzLnN0YXRlLmNvdW50XG4gICAgICB9LCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG1lc3NhZ2UgPSBuZ2V0dGV4dChcbiAgICAgICAgXCIlKHVzZXJuYW1lKXMgaXMgZm9sbG93aW5nICUodXNlcnMpcyB1c2VyLlwiLFxuICAgICAgICBcIiUodXNlcm5hbWUpcyBpcyBmb2xsb3dpbmcgJSh1c2VycylzIHVzZXJzLlwiLFxuICAgICAgICB0aGlzLnN0YXRlLmNvdW50KTtcblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlKG1lc3NhZ2UsIHtcbiAgICAgICAgJ3VzZXJuYW1lJzogdGhpcy5wcm9wcy5wcm9maWxlLnVzZXJuYW1lLFxuICAgICAgICAndXNlcnMnOiB0aGlzLnN0YXRlLmNvdW50XG4gICAgICB9LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRFbXB0eU1lc3NhZ2UoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuc2VhcmNoKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIlNlYXJjaCByZXR1cm5lZCBubyB1c2VycyBtYXRjaGluZyBzcGVjaWZpZWQgY3JpdGVyaWEuXCIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy51c2VyLmlkID09PSB0aGlzLnByb3BzLnByb2ZpbGUuaWQpIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiWW91IGFyZSBub3QgZm9sbG93aW5nIGFueSB1c2Vycy5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiJSh1c2VybmFtZSlzIGlzIG5vdCBmb2xsb3dpbmcgYW55IHVzZXJzLlwiKSwge1xuICAgICAgICAndXNlcm5hbWUnOiB0aGlzLnByb3BzLnByb2ZpbGUudXNlcm5hbWVcbiAgICAgIH0sIHRydWUpO1xuICAgIH1cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IEZvcm1Hcm91cCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtLWdyb3VwJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgTG9hZGVyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL21vZGFsLWxvYWRlcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFllc05vU3dpdGNoIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3llcy1uby1zd2l0Y2gnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBNb2RhbE1lc3NhZ2UgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvbW9kYWwtbWVzc2FnZSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IHsgdXBkYXRlQXZhdGFyIH0gZnJvbSAnbWlzYWdvL3JlZHVjZXJzL3VzZXJzJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIEZvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBpc0xvYWRlZDogZmFsc2UsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgZXJyb3I6IG51bGwsXG5cbiAgICAgIGlzX2F2YXRhcl9sb2NrZWQ6ICcnLFxuICAgICAgYXZhdGFyX2xvY2tfdXNlcl9tZXNzYWdlOiAnJyxcbiAgICAgIGF2YXRhcl9sb2NrX3N0YWZmX21lc3NhZ2U6ICcnXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGFqYXguZ2V0KHRoaXMucHJvcHMucHJvZmlsZS5hcGlfdXJsLm1vZGVyYXRlX2F2YXRhcikudGhlbigob3B0aW9ucykgPT4ge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzTG9hZGVkOiB0cnVlLFxuXG4gICAgICAgIGlzX2F2YXRhcl9sb2NrZWQ6IG9wdGlvbnMuaXNfYXZhdGFyX2xvY2tlZCxcbiAgICAgICAgYXZhdGFyX2xvY2tfdXNlcl9tZXNzYWdlOiBvcHRpb25zLmF2YXRhcl9sb2NrX3VzZXJfbWVzc2FnZSxcbiAgICAgICAgYXZhdGFyX2xvY2tfc3RhZmZfbWVzc2FnZTogb3B0aW9ucy5hdmF0YXJfbG9ja19zdGFmZl9tZXNzYWdlXG4gICAgICB9KTtcbiAgICB9LCAocmVqZWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNMb2FkZWQ6IHRydWUsXG4gICAgICAgIGVycm9yOiByZWplY3Rpb24uZGV0YWlsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFuKCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmVycm9yKHRoaXMudmFsaWRhdGUoKS51c2VybmFtZVswXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2VuZCgpIHtcbiAgICByZXR1cm4gYWpheC5wb3N0KHRoaXMucHJvcHMucHJvZmlsZS5hcGlfdXJsLm1vZGVyYXRlX2F2YXRhciwge1xuICAgICAgaXNfYXZhdGFyX2xvY2tlZDogdGhpcy5zdGF0ZS5pc19hdmF0YXJfbG9ja2VkLFxuICAgICAgYXZhdGFyX2xvY2tfdXNlcl9tZXNzYWdlOiB0aGlzLnN0YXRlLmF2YXRhcl9sb2NrX3VzZXJfbWVzc2FnZSxcbiAgICAgIGF2YXRhcl9sb2NrX3N0YWZmX21lc3NhZ2U6IHRoaXMuc3RhdGUuYXZhdGFyX2xvY2tfc3RhZmZfbWVzc2FnZVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU3VjY2VzcyhhcGlSZXNwb25zZSkge1xuICAgIHN0b3JlLmRpc3BhdGNoKHVwZGF0ZUF2YXRhcih0aGlzLnByb3BzLnByb2ZpbGUsIGFwaVJlc3BvbnNlLmF2YXRhcl9oYXNoKSk7XG4gICAgc25hY2tiYXIuc3VjY2VzcyhnZXR0ZXh0KFwiQXZhdGFyIGNvbnRyb2xzIGhhdmUgYmVlbiBjaGFuZ2VkLlwiKSk7XG4gIH1cblxuICBnZXRGb3JtQm9keSgpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxmb3JtIG9uU3VibWl0PXt0aGlzLmhhbmRsZVN1Ym1pdH0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHlcIj5cblxuICAgICAgICA8Rm9ybUdyb3VwIGxhYmVsPXtnZXR0ZXh0KFwiTG9jayBhdmF0YXJcIil9XG4gICAgICAgICAgICAgICAgICAgaGVscFRleHQ9e2dldHRleHQoXCJMb2NraW5nIHVzZXIgYXZhdGFyIHdpbGwgcHJvaGliaXQgdXNlciBmcm9tIGNoYW5naW5nIGhpcyBhdmF0YXIgYW5kIHdpbGwgcmVzZXQgaGlzL2hlciBhdmF0YXIgdG8gZGVmYXVsdCBvbmUuXCIpfVxuICAgICAgICAgICAgICAgICAgIGZvcj1cImlkX2lzX2F2YXRhcl9sb2NrZWRcIj5cbiAgICAgICAgICA8WWVzTm9Td2l0Y2ggaWQ9XCJpZF9pc19hdmF0YXJfbG9ja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICBpY29uT249XCJsb2NrX291dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICBpY29uT2ZmPVwibG9ja19vcGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxPbj17Z2V0dGV4dChcIkRpc2FsbG93IHVzZXIgZnJvbSBjaGFuZ2luZyBhdmF0YXJcIil9XG4gICAgICAgICAgICAgICAgICAgICAgIGxhYmVsT2ZmPXtnZXR0ZXh0KFwiQWxsb3cgdXNlciB0byBjaGFuZ2UgYXZhdGFyXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ2lzX2F2YXRhcl9sb2NrZWQnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuaXNfYXZhdGFyX2xvY2tlZH0gLz5cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG5cbiAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIlVzZXIgbWVzc2FnZVwiKX1cbiAgICAgICAgICAgICAgICAgICBoZWxwVGV4dD17Z2V0dGV4dChcIk9wdGlvbmFsIG1lc3NhZ2UgZm9yIHVzZXIgZXhwbGFpbmluZyB3aHkgaGUvc2hlIGlzIHByb2hpYml0ZWQgZm9ybSBjaGFuZ2luZyBhdmF0YXIuXCIpfVxuICAgICAgICAgICAgICAgICAgIGZvcj1cImlkX2F2YXRhcl9sb2NrX3VzZXJfbWVzc2FnZVwiPlxuICAgICAgICAgIDx0ZXh0YXJlYSBpZD1cImlkX2F2YXRhcl9sb2NrX3VzZXJfbWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIHJvd3M9XCI0XCJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ2F2YXRhcl9sb2NrX3VzZXJfbWVzc2FnZScpfVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5hdmF0YXJfbG9ja191c2VyX21lc3NhZ2V9IC8+XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuXG4gICAgICAgIDxGb3JtR3JvdXAgbGFiZWw9e2dldHRleHQoXCJTdGFmZiBtZXNzYWdlXCIpfVxuICAgICAgICAgICAgICAgICAgIGhlbHBUZXh0PXtnZXR0ZXh0KFwiT3B0aW9uYWwgbWVzc2FnZSBmb3IgZm9ydW0gdGVhbSBtZW1iZXJzIGV4cGxhaW5pbmcgd2h5IHVzZXIgaXMgcHJvaGliaXRlZCBmb3JtIGNoYW5naW5nIGF2YXRhci5cIil9XG4gICAgICAgICAgICAgICAgICAgZm9yPVwiaWRfYXZhdGFyX2xvY2tfc3RhZmZfbWVzc2FnZVwiPlxuICAgICAgICAgIDx0ZXh0YXJlYSBpZD1cImlkX2F2YXRhcl9sb2NrX3N0YWZmX21lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICByb3dzPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCdhdmF0YXJfbG9ja19zdGFmZl9tZXNzYWdlJyl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmF2YXRhcl9sb2NrX3N0YWZmX21lc3NhZ2V9IC8+XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+XG4gICAgICAgICAge2dldHRleHQoXCJDbG9zZVwiKX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiYnRuLXByaW1hcnlcIiBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzTG9hZGluZ30+XG4gICAgICAgICAge2dldHRleHQoXCJTYXZlIGNoYW5nZXNcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG5cbiAgZ2V0TW9kYWxCb2R5KCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmVycm9yKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPE1vZGFsTWVzc2FnZSBpY29uPVwicmVtb3ZlX2NpcmNsZV9vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9e3RoaXMuc3RhdGUuZXJyb3J9IC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuaXNMb2FkZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZvcm1Cb2R5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8TG9hZGVyIC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9XG4gIH1cblxuICBnZXRDbGFzc05hbWUoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZXJyb3IpIHtcbiAgICAgIHJldHVybiBcIm1vZGFsLWRpYWxvZyBtb2RhbC1tZXNzYWdlIG1vZGFsLWF2YXRhci1jb250cm9sc1wiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJtb2RhbC1kaWFsb2cgbW9kYWwtYXZhdGFyLWNvbnRyb2xzXCI7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e3RoaXMuZ2V0Q2xhc3NOYW1lKCl9XG4gICAgICAgICAgICAgICAgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2dldHRleHQoXCJDbG9zZVwiKX0+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJtb2RhbC10aXRsZVwiPntnZXR0ZXh0KFwiQXZhdGFyIGNvbnRyb2xzXCIpfTwvaDQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7dGhpcy5nZXRNb2RhbEJvZHkoKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgRm9ybUdyb3VwIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0tZ3JvdXAnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBMb2FkZXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvbW9kYWwtbG9hZGVyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgTW9kYWxNZXNzYWdlIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL21vZGFsLW1lc3NhZ2UnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCB7IGFkZE5hbWVDaGFuZ2UgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvdXNlcm5hbWUtaGlzdG9yeSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IHsgdXBkYXRlVXNlcm5hbWUgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvdXNlcnMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInO1xuaW1wb3J0IHN0b3JlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zdG9yZSc7XG5pbXBvcnQgKiBhcyB2YWxpZGF0b3JzIGZyb20gJ21pc2Fnby91dGlscy92YWxpZGF0b3JzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBGb3JtIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgaXNMb2FkZWQ6IGZhbHNlLFxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGVycm9yOiBudWxsLFxuXG4gICAgICB1c2VybmFtZTogJycsXG4gICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgIHVzZXJuYW1lOiBbXG4gICAgICAgICAgdmFsaWRhdG9ycy51c2VybmFtZUNvbnRlbnQoKSxcbiAgICAgICAgICB2YWxpZGF0b3JzLnVzZXJuYW1lTWluTGVuZ3RoKG1pc2Fnby5nZXQoJ1NFVFRJTkdTJykpLFxuICAgICAgICAgIHZhbGlkYXRvcnMudXNlcm5hbWVNYXhMZW5ndGgobWlzYWdvLmdldCgnU0VUVElOR1MnKSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBhamF4LmdldCh0aGlzLnByb3BzLnByb2ZpbGUuYXBpX3VybC5tb2RlcmF0ZV91c2VybmFtZSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNMb2FkZWQ6IHRydWVcbiAgICAgIH0pO1xuICAgIH0sIChyZWplY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0xvYWRlZDogdHJ1ZSxcbiAgICAgICAgZXJyb3I6IHJlamVjdGlvbi5kZXRhaWxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc25hY2tiYXIuZXJyb3IodGhpcy52YWxpZGF0ZSgpLnVzZXJuYW1lWzBdKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzZW5kKCkge1xuICAgIHJldHVybiBhamF4LnBvc3QodGhpcy5wcm9wcy5wcm9maWxlLmFwaV91cmwubW9kZXJhdGVfdXNlcm5hbWUsIHtcbiAgICAgIHVzZXJuYW1lOiB0aGlzLnN0YXRlLnVzZXJuYW1lXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWNjZXNzKGFwaVJlc3BvbnNlKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICB1c2VybmFtZTogJydcbiAgICB9KTtcblxuICAgIHN0b3JlLmRpc3BhdGNoKGFkZE5hbWVDaGFuZ2UoXG4gICAgICBhcGlSZXNwb25zZSwgdGhpcy5wcm9wcy5wcm9maWxlLCB0aGlzLnByb3BzLnVzZXIpKTtcbiAgICBzdG9yZS5kaXNwYXRjaCh1cGRhdGVVc2VybmFtZShcbiAgICAgIHRoaXMucHJvcHMucHJvZmlsZSwgYXBpUmVzcG9uc2UudXNlcm5hbWUsIGFwaVJlc3BvbnNlLnNsdWcpKTtcblxuICAgIHNuYWNrYmFyLnN1Y2Nlc3MoZ2V0dGV4dChcIlVzZXJuYW1lIGhhcyBiZWVuIGNoYW5nZWQuXCIpKTtcbiAgfVxuXG4gIGdldEZvcm1Cb2R5KCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keVwiPlxuXG4gICAgICAgIDxGb3JtR3JvdXAgbGFiZWw9e2dldHRleHQoXCJOZXcgdXNlcm5hbWVcIil9IGZvcj1cImlkX3VzZXJuYW1lXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJpZF91c2VybmFtZVwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCd1c2VybmFtZScpfVxuICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS51c2VybmFtZX0gLz5cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cbiAgICAgICAgICB7Z2V0dGV4dChcIkNsb3NlXCIpfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJidG4tcHJpbWFyeVwiIGxvYWRpbmc9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfT5cbiAgICAgICAgICB7Z2V0dGV4dChcIkNoYW5nZSB1c2VybmFtZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cblxuICBnZXRNb2RhbEJvZHkoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZXJyb3IpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8TW9kYWxNZXNzYWdlIGljb249XCJyZW1vdmVfY2lyY2xlX291dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT17dGhpcy5zdGF0ZS5lcnJvcn0gLz47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5pc0xvYWRlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybUJvZHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxMb2FkZXIgLz47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH1cbiAgfVxuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgcmV0dXJuIFwibW9kYWwtZGlhbG9nIG1vZGFsLW1lc3NhZ2UgbW9kYWwtcmVuYW1lLXVzZXJcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwibW9kYWwtZGlhbG9nIG1vZGFsLXJlbmFtZS11c2VyXCI7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e3RoaXMuZ2V0Q2xhc3NOYW1lKCl9XG4gICAgICAgICAgICAgICAgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2dldHRleHQoXCJDbG9zZVwiKX0+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJtb2RhbC10aXRsZVwiPntnZXR0ZXh0KFwiQ2hhbmdlIHVzZXJuYW1lXCIpfTwvaDQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7dGhpcy5nZXRNb2RhbEJvZHkoKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgRm9ybUdyb3VwIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0tZ3JvdXAnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBMb2FkZXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvbW9kYWwtbG9hZGVyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgTW9kYWxNZXNzYWdlIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL21vZGFsLW1lc3NhZ2UnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBZZXNOb1N3aXRjaCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy95ZXMtbm8tc3dpdGNoJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnO1xuaW1wb3J0IHBvbGxzIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9wb2xscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgRm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGlzTG9hZGVkOiBmYWxzZSxcbiAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICBpc0RlbGV0ZWQ6IGZhbHNlLFxuICAgICAgZXJyb3I6IG51bGwsXG5cbiAgICAgIGNvdW50ZG93bjogNSxcbiAgICAgIGNvbmZpcm06IGZhbHNlLFxuXG4gICAgICB3aXRoX2NvbnRlbnQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGFqYXguZ2V0KHRoaXMucHJvcHMucHJvZmlsZS5hcGlfdXJsLmRlbGV0ZSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNMb2FkZWQ6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNvdW50ZG93bigpO1xuICAgIH0sIChyZWplY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0xvYWRlZDogdHJ1ZSxcbiAgICAgICAgZXJyb3I6IHJlamVjdGlvbi5kZXRhaWxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBjb3VudGRvd24gPSAoKSA9PiB7XG4gICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuY291bnRkb3duID4gMSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBjb3VudGRvd246IHRoaXMuc3RhdGUuY291bnRkb3duIC0gMSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY291bnRkb3duKCk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnN0YXRlLmNvbmZpcm0pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY29uZmlybTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBzZW5kKCkge1xuICAgIHJldHVybiBhamF4LnBvc3QodGhpcy5wcm9wcy5wcm9maWxlLmFwaV91cmwuZGVsZXRlLCB7XG4gICAgICB3aXRoX2NvbnRlbnQ6IHRoaXMuc3RhdGUud2l0aF9jb250ZW50XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWNjZXNzKCkge1xuICAgIHBvbGxzLnN0b3AoJ3VzZXItcHJvZmlsZScpO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUud2l0aF9jb250ZW50KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNEZWxldGVkOiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiJSh1c2VybmFtZSlzJ3MgYWNjb3VudCwgdGhyZWFkcywgcG9zdHMgYW5kIG90aGVyIGNvbnRlbnQgaGFzIGJlZW4gZGVsZXRlZC5cIiksIHtcbiAgICAgICAgICAndXNlcm5hbWUnOiB0aGlzLnByb3BzLnByb2ZpbGUudXNlcm5hbWVcbiAgICAgICAgfSwgdHJ1ZSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaXNEZWxldGVkOiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiJSh1c2VybmFtZSlzJ3MgYWNjb3VudCBoYXMgYmVlbiBkZWxldGVkIGFuZCBvdGhlciBjb250ZW50IGhhcyBiZWVuIGhpZGRlbi5cIiksIHtcbiAgICAgICAgICAndXNlcm5hbWUnOiB0aGlzLnByb3BzLnByb2ZpbGUudXNlcm5hbWVcbiAgICAgICAgfSwgdHJ1ZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEJ1dHRvbkxhYmVsKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmNvbmZpcm0pIHtcbiAgICAgIHJldHVybiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiRGVsZXRlICUodXNlcm5hbWUpc1wiKSwge1xuICAgICAgICAndXNlcm5hbWUnOiB0aGlzLnByb3BzLnByb2ZpbGUudXNlcm5hbWVcbiAgICAgIH0sIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUoZ2V0dGV4dChcIlBsZWFzZSB3YWl0Li4uICglKGNvdW50ZG93bilzcylcIiksIHtcbiAgICAgICAgJ2NvdW50ZG93bic6IHRoaXMuc3RhdGUuY291bnRkb3duXG4gICAgICB9LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fSBjbGFzc05hbWU9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keVwiPlxuXG4gICAgICAgIDxGb3JtR3JvdXAgbGFiZWw9e2dldHRleHQoXCJVc2VyIGNvbnRlbnRcIil9XG4gICAgICAgICAgICAgICAgICAgbGFiZWxDbGFzcz1cImNvbC1zbS00XCIgY29udHJvbENsYXNzPVwiY29sLXNtLThcIlxuICAgICAgICAgICAgICAgICAgIGZvcj1cImlkX3dpdGhfY29udGVudFwiPlxuICAgICAgICAgIDxZZXNOb1N3aXRjaCBpZD1cImlkX3dpdGhfY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxPbj17Z2V0dGV4dChcIkRlbGV0ZSB0b2dldGhlciB3aXRoIHVzZXIncyBhY2NvdW50XCIpfVxuICAgICAgICAgICAgICAgICAgICAgICBsYWJlbE9mZj17Z2V0dGV4dChcIkhpZGUgYWZ0ZXIgZGVsZXRpbmcgdXNlcidzIGFjY291bnRcIil9XG4gICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgnd2l0aF9jb250ZW50Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLndpdGhfY29udGVudH0gLz5cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1mb290ZXJcIj5cblxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cbiAgICAgICAgICB7Z2V0dGV4dChcIkNhbmNlbFwiKX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IXRoaXMuc3RhdGUuY29uZmlybX0+XG4gICAgICAgICAge3RoaXMuZ2V0QnV0dG9uTGFiZWwoKX1cbiAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxuXG4gIGdldERlbGV0ZWRCb2R5KCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtaWNvblwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgaW5mb19vdXRsaW5lXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWJvZHlcIj5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwibGVhZFwiPlxuICAgICAgICAgIHt0aGlzLnN0YXRlLmlzRGVsZXRlZH1cbiAgICAgICAgPC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YSBocmVmPXttaXNhZ28uZ2V0KCdVU0VSU19MSVNUX1VSTCcpfT5cbiAgICAgICAgICAgIHtnZXR0ZXh0KFwiUmV0dXJuIHRvIHVzZXJzIGxpc3RcIil9XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxuXG4gIGdldE1vZGFsQm9keSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5lcnJvcikge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxNb2RhbE1lc3NhZ2UgaWNvbj1cInJlbW92ZV9jaXJjbGVfb3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXt0aGlzLnN0YXRlLmVycm9yfSAvPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmlzTG9hZGVkKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVsZXRlZEJvZHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZvcm0oKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxMb2FkZXIgLz47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH1cbiAgfVxuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5lcnJvciB8fCB0aGlzLnN0YXRlLmlzRGVsZXRlZCkge1xuICAgICAgcmV0dXJuIFwibW9kYWwtZGlhbG9nIG1vZGFsLW1lc3NhZ2UgbW9kYWwtZGVsZXRlLWFjY291bnRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwibW9kYWwtZGlhbG9nIG1vZGFsLWRlbGV0ZS1hY2NvdW50XCI7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e3RoaXMuZ2V0Q2xhc3NOYW1lKCl9XG4gICAgICAgICAgICAgICAgcm9sZT1cImRvY3VtZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2dldHRleHQoXCJDbG9zZVwiKX0+XG4gICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJtb2RhbC10aXRsZVwiPntnZXR0ZXh0KFwiRGVsZXRlIHVzZXIgYWNjb3VudFwiKX08L2g0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3RoaXMuZ2V0TW9kYWxCb2R5KCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBBdmF0YXJDb250cm9scyBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9wcm9maWxlL21vZGVyYXRpb24vYXZhdGFyLWNvbnRyb2xzJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgQ2hhbmdlVXNlcm5hbWUgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcHJvZmlsZS9tb2RlcmF0aW9uL2NoYW5nZS11c2VybmFtZSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IERlbGV0ZUFjY291bnQgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcHJvZmlsZS9tb2RlcmF0aW9uL2RlbGV0ZS1hY2NvdW50JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbW9kYWwgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL21vZGFsJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbi8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbmxldCBzZWxlY3QgPSBmdW5jdGlvbihzdG9yZSkge1xuICByZXR1cm4ge1xuICAgIHRpY2s6IHN0b3JlLnRpY2ssXG4gICAgdXNlcjogc3RvcmUuYXV0aCxcbiAgICBwcm9maWxlOiBzdG9yZS5wcm9maWxlLFxuICB9O1xufTtcbi8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBzaG93QXZhdGFyRGlhbG9nID0gKCkgPT4ge1xuICAgIG1vZGFsLnNob3coY29ubmVjdChzZWxlY3QpKEF2YXRhckNvbnRyb2xzKSk7XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgZ2V0QXZhdGFyQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByb2ZpbGUuYWNsLmNhbl9tb2RlcmF0ZV9hdmF0YXIpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8bGk+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0bi1saW5rXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnNob3dBdmF0YXJEaWFsb2d9PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgIHBvcnRyYWl0XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtnZXR0ZXh0KFwiQXZhdGFyIGNvbnRyb2xzXCIpfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIHNob3dSZW5hbWVEaWFsb2cgPSAoKSA9PiB7XG4gICAgbW9kYWwuc2hvdyhjb25uZWN0KHNlbGVjdCkoQ2hhbmdlVXNlcm5hbWUpKTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBnZXRSZW5hbWVCdXR0b24oKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucHJvZmlsZS5hY2wuY2FuX3JlbmFtZSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxsaT5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuLWxpbmtcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuc2hvd1JlbmFtZURpYWxvZ30+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgY3JlZGl0X2NhcmRcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge2dldHRleHQoXCJDaGFuZ2UgdXNlcm5hbWVcIil9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgc2hvd0RlbGV0ZURpYWxvZyA9ICgpID0+IHtcbiAgICBtb2RhbC5zaG93KGNvbm5lY3Qoc2VsZWN0KShEZWxldGVBY2NvdW50KSk7XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgZ2V0RGVsZXRlQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByb2ZpbGUuYWNsLmNhbl9kZWxldGUpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8bGk+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0bi1saW5rXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnNob3dEZWxldGVEaWFsb2d9PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgIGNsZWFyXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtnZXR0ZXh0KFwiRGVsZXRlIGFjY291bnRcIil9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDx1bCBjbGFzc05hbWU9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHRcIiByb2xlPVwibWVudVwiPlxuICAgICAge3RoaXMuZ2V0QXZhdGFyQnV0dG9uKCl9XG4gICAgICB7dGhpcy5nZXRSZW5hbWVCdXR0b24oKX1cbiAgICAgIHt0aGlzLmdldERlbGV0ZUJ1dHRvbigpfVxuICAgICAgPGxpIGNsYXNzTmFtZT1cImRpdmlkZXIgaGlkZGVuLW1kIGhpZGRlbi1sZ1wiIC8+XG4gICAgICA8bGkgY2xhc3NOYW1lPVwiZHJvcGRvd24tYnV0dG9ucyBoaWRkZW4tbWQgaGlkZGVuLWxnXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdCBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucHJvcHMudG9nZ2xlTmF2fT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICBtZW51XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtnZXR0ZXh0KFwiTWVudVwiKX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTGluayB9IGZyb20gJ3JlYWN0LXJvdXRlcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IExpIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2xpJzsgLy9qc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb2xsb3dCdXR0b24gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcHJvZmlsZS9mb2xsb3ctYnV0dG9uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7IC8vanNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBTaWRlTmF2IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0TWV0YShtZXRhKSB7XG4gICAgaWYgKG1ldGEpIHtcbiAgICAgIC8vIGpzaGludCBpZ25vcmU6c3RhcnRcbiAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJiYWRnZVwiPnt0aGlzLnByb3BzLnByb2ZpbGVbbWV0YS5hdHRyXX08L3NwYW4+O1xuICAgICAgLy8ganNoaW50IGlnbm9yZTplbmRcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8vIGpzaGludCBpZ25vcmU6c3RhcnRcbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJsaXN0LWdyb3VwIG5hdi1zaWRlXCI+XG4gICAgICB7dGhpcy5wcm9wcy5wYWdlcy5tYXAoKHBhZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIDxMaW5rIHRvPXt0aGlzLnByb3BzLmJhc2VVcmwgKyBwYWdlLmNvbXBvbmVudCArICcvJ31cbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXAtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICBhY3RpdmVDbGFzc05hbWU9XCJhY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAga2V5PXtwYWdlLmNvbXBvbmVudH0+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAge3BhZ2UuaWNvbn1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge3BhZ2UubmFtZX1cbiAgICAgICAgICB7dGhpcy5nZXRNZXRhKHBhZ2UubWV0YSl9XG4gICAgICAgIDwvTGluaz47XG4gICAgICB9KX1cbiAgICA8L2Rpdj47XG4gICAgLy8ganNoaW50IGlnbm9yZTplbmRcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGFjdE5hdiBleHRlbmRzIFNpZGVOYXYge1xuICBzaG93U3BlY2lhbE9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucHJvZmlsZS5hY2wuY2FuX2ZvbGxvdyB8fCB0aGlzLnByb3BzLnByb2ZpbGUuYWNsLmNhbl9tb2RlcmF0ZTtcbiAgfVxuXG4gIGdldEZvbGxvd0J1dHRvbigpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5wcm9maWxlLmFjbC5jYW5fZm9sbG93KSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPEZvbGxvd0J1dHRvbiBjbGFzc05hbWU9XCJidG4gYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGU9e3RoaXMucHJvcHMucHJvZmlsZX0gLz47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRNb2RlcmF0aW9uQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByb2ZpbGUuYWNsLmNhbl9tb2RlcmF0ZSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdCBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy50b2dnbGVNb2RlcmF0aW9ufT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgIHRvbmFsaXR5XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2dldHRleHQoXCJNb2RlcmF0aW9uXCIpfVxuICAgICAgPC9idXR0b24+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3BlY2lhbE9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuc2hvd1NwZWNpYWxPcHRpb25zKCkpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8bGkgY2xhc3NOYW1lPVwiZHJvcGRvd24tYnV0dG9uc1wiPlxuICAgICAgICB7dGhpcy5nZXRGb2xsb3dCdXR0b24oKX1cbiAgICAgICAge3RoaXMuZ2V0TW9kZXJhdGlvbkJ1dHRvbigpfVxuICAgICAgPC9saT47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLy8ganNoaW50IGlnbm9yZTpzdGFydFxuICAgIHJldHVybiA8dWwgY2xhc3NOYW1lPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJtZW51XCI+XG4gICAgICB7dGhpcy5nZXRTcGVjaWFsT3B0aW9ucygpfVxuICAgICAge3RoaXMuc2hvd1NwZWNpYWxPcHRpb25zKCkgPyA8bGkgY2xhc3NOYW1lPVwiZGl2aWRlclwiIC8+IDogbnVsbH1cbiAgICAgIHt0aGlzLnByb3BzLnBhZ2VzLm1hcCgocGFnZSkgPT4ge1xuICAgICAgICByZXR1cm4gPExpIHBhdGg9e3RoaXMucHJvcHMuYmFzZVVybCArIHBhZ2UuY29tcG9uZW50ICsgJy8nfVxuICAgICAgICAgICAgICAgICAgIGtleT17cGFnZS5jb21wb25lbnR9PlxuICAgICAgICAgIDxMaW5rIHRvPXt0aGlzLnByb3BzLmJhc2VVcmwgKyBwYWdlLmNvbXBvbmVudCArICcvJ31cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLmhpZGVOYXZ9PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgICB7cGFnZS5pY29ufVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAge3BhZ2UubmFtZX1cbiAgICAgICAgICAgIHt0aGlzLmdldE1ldGEocGFnZS5tZXRhKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvTGk+O1xuICAgICAgfSl9XG4gICAgPC91bD47XG4gICAgLy8ganNoaW50IGlnbm9yZTplbmRcbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IEF2YXRhciBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9hdmF0YXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBCYW5EZXRhaWxzIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3Byb2ZpbGUvYmFuLWRldGFpbHMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb2xsb3dlcnMgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcHJvZmlsZS9mb2xsb3dlcnMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb2xsb3dzIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3Byb2ZpbGUvZm9sbG93cyc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFVzZXJuYW1lSGlzdG9yeSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9wcm9maWxlL3VzZXJuYW1lLWhpc3RvcnknOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBIZWFkZXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcHJvZmlsZS9IZWFkZXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBNb2RlcmF0aW9uTmF2IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3Byb2ZpbGUvbW9kZXJhdGlvbi9uYXYnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCB7IFNpZGVOYXYsIENvbXBhY3ROYXYgfSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9wcm9maWxlL25hdnMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCB7IGRlaHlkcmF0ZSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy9wcm9maWxlJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgcG9sbHMgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3BvbGxzJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBkcm9wZG93bjogZmFsc2VcbiAgICB9O1xuXG4gICAgdGhpcy5zdGFydFBvbGxpbmcocHJvcHMucHJvZmlsZS5hcGlfdXJsLnJvb3QpO1xuICB9XG5cbiAgc3RhcnRQb2xsaW5nKGFwaSkge1xuICAgIHBvbGxzLnN0YXJ0KHtcbiAgICAgIHBvbGw6ICd1c2VyLXByb2ZpbGUnLFxuICAgICAgdXJsOiBhcGksXG4gICAgICBmcmVxdWVuY3k6IDkwICogMTAwMCxcbiAgICAgIHVwZGF0ZTogdGhpcy51cGRhdGVcbiAgICB9KTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgdXBkYXRlID0gKGRhdGEpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChkZWh5ZHJhdGUoZGF0YSkpO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgdG9nZ2xlTmF2ID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlLmRyb3Bkb3duID09PSAncGFnZXMnKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJvcGRvd246IGZhbHNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRyb3Bkb3duOiAncGFnZXMnXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgdG9nZ2xlTW9kZXJhdGlvbiA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kcm9wZG93biA9PT0gJ21vZGVyYXRpb24nKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJvcGRvd246IGZhbHNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRyb3Bkb3duOiAnbW9kZXJhdGlvbidcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBoaWRlTmF2ID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZHJvcGRvd246IGZhbHNlXG4gICAgfSk7XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgZ2V0VG9nZ2xlTmF2Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmRyb3Bkb3duKSB7XG4gICAgICByZXR1cm4gJ2J0biBidG4tZGVmYXVsdCBidG4taWNvbiBvcGVuJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdidG4gYnRuLWRlZmF1bHQgYnRuLWljb24nO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbXBhY3ROYXZDbGFzc05hbWUoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuZHJvcGRvd24pIHtcbiAgICAgIHJldHVybiAnY29tcGFjdC1uYXYgb3Blbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnY29tcGFjdC1uYXYnO1xuICAgIH1cbiAgfVxuXG4gIGdldE5hdkRyb3Bkb3duKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmRyb3Bkb3duID09PSAncGFnZXMnKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPENvbXBhY3ROYXYgcGFnZXM9e21pc2Fnby5nZXQoJ1BST0ZJTEVfUEFHRVMnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVXJsPXttaXNhZ28uZ2V0KCdQUk9GSUxFJykuYWJzb2x1dGVfdXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGU9e3RoaXMucHJvcHMucHJvZmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVNb2RlcmF0aW9uPXt0aGlzLnRvZ2dsZU1vZGVyYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgaGlkZU5hdj17dGhpcy5oaWRlTmF2fSAvPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLmRyb3Bkb3duID09PSAnbW9kZXJhdGlvbicpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8TW9kZXJhdGlvbk5hdiBwcm9maWxlPXt0aGlzLnByb3BzLnByb2ZpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTmF2PXt0aGlzLnRvZ2dsZU5hdn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlTmF2PXt0aGlzLmhpZGVOYXZ9IC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lKCkge1xuICAgIGNvbnN0IGJhc2VDbGFzcyA9ICdwYWdlIHBhZ2UtdXNlci1wcm9maWxlJztcbiAgICBpZiAoZmFsc2UgJiYgdGhpcy5wcm9wcy5wcm9maWxlLnJhbmsuY3NzX2NsYXNzKSB7XG4gICAgICByZXR1cm4gYmFzZUNsYXNzICsgJyBwYWdlLXVzZXItcHJvZmlsZS0nICsgdGhpcy5wcm9wcy5wcm9maWxlLnJhbmsuY3NzX2NsYXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYmFzZUNsYXNzO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfT5cblxuICAgICAgPEhlYWRlciB1c2VyPXt0aGlzLnByb3BzLnVzZXJ9XG4gICAgICAgICAgICAgIHByb2ZpbGU9e3RoaXMucHJvcHMucHJvZmlsZX1cbiAgICAgICAgICAgICAgdG9nZ2xlTmF2PXt0aGlzLnRvZ2dsZU5hdn1cbiAgICAgICAgICAgICAgdG9nZ2xlTW9kZXJhdGlvbj17dGhpcy50b2dnbGVNb2RlcmF0aW9ufSAvPlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRDb21wYWN0TmF2Q2xhc3NOYW1lKCl9PlxuICAgICAgICB7dGhpcy5nZXROYXZEcm9wZG93bigpfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtbWQtMyBoaWRkZW4teHMgaGlkZGVuLXNtXCI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvZmlsZS1zaWRlLWF2YXRhclwiPlxuICAgICAgICAgICAgICA8QXZhdGFyIHVzZXI9e3RoaXMucHJvcHMucHJvZmlsZX0gc2l6ZT1cIjQwMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPFNpZGVOYXYgcGFnZXM9e21pc2Fnby5nZXQoJ1BST0ZJTEVfUEFHRVMnKX1cbiAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw9e21pc2Fnby5nZXQoJ1BST0ZJTEUnKS5hYnNvbHV0ZV91cmx9XG4gICAgICAgICAgICAgICAgICAgICBwcm9maWxlPXt0aGlzLnByb3BzLnByb2ZpbGV9IC8+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC1tZC05XCI+XG5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0KHN0b3JlKSB7XG4gIHJldHVybiB7XG4gICAgJ3RpY2snOiBzdG9yZS50aWNrLnRpY2ssXG4gICAgJ3VzZXInOiBzdG9yZS5hdXRoLnVzZXIsXG4gICAgJ3VzZXJzJzogc3RvcmUudXNlcnMsXG4gICAgJ3Byb2ZpbGUnOiBzdG9yZS5wcm9maWxlLFxuICAgICd1c2VybmFtZS1oaXN0b3J5Jzogc3RvcmVbJ3VzZXJuYW1lLWhpc3RvcnknXVxuICB9O1xufVxuXG5jbGFzcyBQbGFjZWhvbGRlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvLyBqc2hpbnQgaWdub3JlOnN0YXJ0XG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICA8cD57XCJIZWxsbywgSSdtIHBsYWNlaG9sZGVyIGZvciBcIiArIHRoaXMucHJvcHMucm91dGUubmFtZX08L3A+XG4gICAgPC9kaXY+O1xuICAgIC8vIGpzaGludCBpZ25vcmU6ZW5kXG4gIH1cbn1cblxuY29uc3QgQ09NUE9ORU5UUyA9IHtcbiAgJ3Bvc3RzJzogUGxhY2Vob2xkZXIsXG4gICd0aHJlYWRzJzogUGxhY2Vob2xkZXIsXG4gICdmb2xsb3dlcnMnOiBGb2xsb3dlcnMsXG4gICdmb2xsb3dzJzogRm9sbG93cyxcbiAgJ3VzZXJuYW1lLWhpc3RvcnknOiBVc2VybmFtZUhpc3RvcnksXG4gICdiYW4tZGV0YWlscyc6IEJhbkRldGFpbHNcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRocygpIHtcbiAgbGV0IHBhdGhzID0gW107XG5cbiAgbWlzYWdvLmdldCgnUFJPRklMRV9QQUdFUycpLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgIHBhdGhzLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwge1xuICAgICAgcGF0aDogbWlzYWdvLmdldCgnUFJPRklMRScpLmFic29sdXRlX3VybCArIGl0ZW0uY29tcG9uZW50ICsgJy8nLFxuICAgICAgY29tcG9uZW50OiBjb25uZWN0KHNlbGVjdCkoQ09NUE9ORU5UU1tpdGVtLmNvbXBvbmVudF0pLFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhdGhzO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCdXR0b24gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYnV0dG9uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgU2VhcmNoIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3NlYXJjaCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFVzZXJuYW1lSGlzdG9yeSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy91c2VybmFtZS1oaXN0b3J5JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgeyBkZWh5ZHJhdGUsIGFwcGVuZCB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy91c2VybmFtZS1oaXN0b3J5JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuaW1wb3J0IHRpdGxlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9wYWdlLXRpdGxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIGlmIChtaXNhZ28uaGFzKCdQUk9GSUxFX05BTUVfSElTVE9SWScpKSB7XG4gICAgICB0aGlzLmluaXRXaXRoUHJlbG9hZGVkRGF0YShtaXNhZ28ucG9wKCdQUk9GSUxFX05BTUVfSElTVE9SWScpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0V2l0aG91dFByZWxvYWRlZERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBpbml0V2l0aFByZWxvYWRlZERhdGEoZGF0YSkge1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBpc0xvYWRlZDogdHJ1ZSxcbiAgICAgIGlzQnVzeTogZmFsc2UsXG5cbiAgICAgIHNlYXJjaDogJycsXG5cbiAgICAgIGNvdW50OiBkYXRhLmNvdW50LFxuICAgICAgbW9yZTogZGF0YS5tb3JlLFxuXG4gICAgICBwYWdlOiBkYXRhLnBhZ2UsXG4gICAgICBwYWdlczogZGF0YS5wYWdlc1xuICAgIH07XG5cbiAgICBzdG9yZS5kaXNwYXRjaChkZWh5ZHJhdGUoZGF0YS5yZXN1bHRzKSk7XG4gIH1cblxuICBpbml0V2l0aG91dFByZWxvYWRlZERhdGEoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGlzTG9hZGVkOiBmYWxzZSxcbiAgICAgIGlzQnVzeTogZmFsc2UsXG5cbiAgICAgIHNlYXJjaDogJycsXG5cbiAgICAgIGNvdW50OiAwLFxuICAgICAgbW9yZTogMCxcblxuICAgICAgcGFnZTogMSxcbiAgICAgIHBhZ2VzOiAxXG4gICAgfTtcblxuICAgIHRoaXMubG9hZENoYW5nZXMoKTtcbiAgfVxuXG4gIGxvYWRDaGFuZ2VzKHBhZ2U9MSwgc2VhcmNoPW51bGwpIHtcbiAgICBhamF4LmdldChtaXNhZ28uZ2V0KCdVU0VSTkFNRV9DSEFOR0VTX0FQSScpLCB7XG4gICAgICB1c2VyOiB0aGlzLnByb3BzLnByb2ZpbGUuaWQsXG4gICAgICBzZWFyY2g6IHNlYXJjaCxcbiAgICAgIHBhZ2U6IHBhZ2UgfHwgMVxuICAgIH0sICdzZWFyY2gtdXNlcm5hbWUtaGlzdG9yeScpLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgIGlmIChwYWdlID09PSAxKSB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKGRlaHlkcmF0ZShkYXRhLnJlc3VsdHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKGFwcGVuZChkYXRhLnJlc3VsdHMpKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzTG9hZGVkOiB0cnVlLFxuICAgICAgICBpc0J1c3k6IGZhbHNlLFxuXG4gICAgICAgIGNvdW50OiBkYXRhLmNvdW50LFxuICAgICAgICBtb3JlOiBkYXRhLm1vcmUsXG5cbiAgICAgICAgcGFnZTogZGF0YS5wYWdlLFxuICAgICAgICBwYWdlczogZGF0YS5wYWdlc1xuICAgICAgfSk7XG4gICAgfSwgKHJlamVjdGlvbikgPT4ge1xuICAgICAgc25hY2tiYXIuYXBpRXJyb3IocmVqZWN0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIHRpdGxlLnNldCh7XG4gICAgICB0aXRsZTogZ2V0dGV4dChcIlVzZXJuYW1lIGhpc3RvcnlcIiksXG4gICAgICBwYXJlbnQ6IHRoaXMucHJvcHMucHJvZmlsZS51c2VybmFtZVxuICAgIH0pO1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBsb2FkTW9yZSA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzQnVzeTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2FkQ2hhbmdlcyh0aGlzLnN0YXRlLnBhZ2UgKyAxLCB0aGlzLnN0YXRlLnNlYXJjaCk7XG4gIH07XG5cbiAgc2VhcmNoID0gKGV2KSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc0xvYWRlZDogZmFsc2UsXG4gICAgICBpc0J1c3k6IHRydWUsXG5cbiAgICAgIHNlYXJjaDogZXYudGFyZ2V0LnZhbHVlLFxuXG4gICAgICBjb3VudDogMCxcbiAgICAgIG1vcmU6IDAsXG5cbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwYWdlczogMVxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2FkQ2hhbmdlcygxLCBldi50YXJnZXQudmFsdWUpO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIGdldExhYmVsKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZS5pc0xvYWRlZCkge1xuICAgICAgcmV0dXJuIGdldHRleHQoJ0xvYWRpbmcuLi4nKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuc2VhcmNoKSB7XG4gICAgICBsZXQgbWVzc2FnZSA9IG5nZXR0ZXh0KFxuICAgICAgICBcIkZvdW5kICUoY2hhbmdlcylzIHVzZXJuYW1lIGNoYW5nZS5cIixcbiAgICAgICAgXCJGb3VuZCAlKGNoYW5nZXMpcyB1c2VybmFtZSBjaGFuZ2VzLlwiLFxuICAgICAgICB0aGlzLnN0YXRlLmNvdW50KTtcblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlKG1lc3NhZ2UsIHtcbiAgICAgICAgJ2NoYW5nZXMnOiB0aGlzLnN0YXRlLmNvdW50XG4gICAgICB9LCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMucHJvZmlsZS5pZCA9PT0gdGhpcy5wcm9wcy51c2VyLmlkKSB7XG4gICAgICBsZXQgbWVzc2FnZSA9IG5nZXR0ZXh0KFxuICAgICAgICBcIllvdXIgdXNlcm5hbWUgd2FzIGNoYW5nZWQgJShjaGFuZ2VzKXMgdGltZS5cIixcbiAgICAgICAgXCJZb3VyIHVzZXJuYW1lIHdhcyBjaGFuZ2VkICUoY2hhbmdlcylzIHRpbWVzLlwiLFxuICAgICAgICB0aGlzLnN0YXRlLmNvdW50KTtcblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlKG1lc3NhZ2UsIHtcbiAgICAgICAgJ2NoYW5nZXMnOiB0aGlzLnN0YXRlLmNvdW50XG4gICAgICB9LCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG1lc3NhZ2UgPSBuZ2V0dGV4dChcbiAgICAgICAgXCIlKHVzZXJuYW1lKXMncyB1c2VybmFtZSB3YXMgY2hhbmdlZCAlKGNoYW5nZXMpcyB0aW1lLlwiLFxuICAgICAgICBcIiUodXNlcm5hbWUpcydzIHVzZXJuYW1lIHdhcyBjaGFuZ2VkICUoY2hhbmdlcylzIHRpbWVzLlwiLFxuICAgICAgICB0aGlzLnN0YXRlLmNvdW50KTtcblxuICAgICAgcmV0dXJuIGludGVycG9sYXRlKG1lc3NhZ2UsIHtcbiAgICAgICAgJ3VzZXJuYW1lJzogdGhpcy5wcm9wcy5wcm9maWxlLnVzZXJuYW1lLFxuICAgICAgICAnY2hhbmdlcyc6IHRoaXMuc3RhdGUuY291bnRcbiAgICAgIH0sIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVtcHR5TWVzc2FnZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5zZWFyY2gpIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiU2VhcmNoIHJldHVybmVkIG5vIHVzZXJuYW1lIGNoYW5nZXMgbWF0Y2hpbmcgc3BlY2lmaWVkIGNyaXRlcmlhLlwiKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMudXNlci5pZCA9PT0gdGhpcy5wcm9wcy5wcm9maWxlLmlkKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIk5vIG5hbWUgY2hhbmdlcyBoYXZlIGJlZW4gcmVjb3JkZWQgZm9yIHlvdXIgYWNjb3VudC5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiJSh1c2VybmFtZSlzJ3MgdXNlcm5hbWUgd2FzIG5ldmVyIGNoYW5nZWQuXCIpLCB7XG4gICAgICAgICd1c2VybmFtZSc6IHRoaXMucHJvcHMucHJvZmlsZS51c2VybmFtZVxuICAgICAgfSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9yZUJ1dHRvbigpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5tb3JlKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJwYWdlci1tb3JlXCI+XG4gICAgICAgIDxCdXR0b24gbG9hZGluZz17dGhpcy5zdGF0ZS5pc0J1c3l9XG4gICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5sb2FkTW9yZX0+XG4gICAgICAgICAge2ludGVycG9sYXRlKGdldHRleHQoXCJTaG93IG9sZGVyICglKG1vcmUpcylcIiksIHtcbiAgICAgICAgICAgICdtb3JlJzogdGhpcy5zdGF0ZS5tb3JlXG4gICAgICAgICAgfSwgdHJ1ZSl9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9kaXY+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJwcm9maWxlLXVzZXJuYW1lLWhpc3RvcnlcIj5cblxuICAgICAgPG5hdiBjbGFzc05hbWU9XCJ0b29sYmFyXCI+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0b29sYmFyLWxlZnRcIj5cbiAgICAgICAgICB7dGhpcy5nZXRMYWJlbCgpfVxuICAgICAgICA8L2gzPlxuXG4gICAgICAgIDxTZWFyY2ggY2xhc3NOYW1lPVwidG9vbGJhci1yaWdodFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuc2VhcmNofVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnNlYXJjaH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17Z2V0dGV4dChcIlNlYXJjaCBoaXN0b3J5Li4uXCIpfSAvPlxuICAgICAgPC9uYXY+XG5cbiAgICAgIDxVc2VybmFtZUhpc3RvcnkgaXNMb2FkZWQ9e3RoaXMuc3RhdGUuaXNMb2FkZWR9XG4gICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT17dGhpcy5nZXRFbXB0eU1lc3NhZ2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlcz17dGhpcy5wcm9wc1sndXNlcm5hbWUtaGlzdG9yeSddfSAvPlxuXG4gICAgICB7dGhpcy5nZXRNb3JlQnV0dG9uKCl9XG5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTG9hZGVyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2xvYWRlcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFJlZ2lzdGVyTW9kYWwgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvcmVnaXN0ZXIuanMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBjYXB0Y2hhIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9jYXB0Y2hhJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbW9kYWwgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL21vZGFsJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgenhjdmJuIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy96eGN2Ym4nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAnaXNMb2FkaW5nJzogZmFsc2UsXG4gICAgICAnaXNMb2FkZWQnOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIHNob3dSZWdpc3Rlck1vZGFsID0gKCkgPT4ge1xuICAgIGlmIChtaXNhZ28uZ2V0KCdTRVRUSU5HUycpLmFjY291bnRfYWN0aXZhdGlvbiA9PT0gJ2Nsb3NlZCcpIHtcbiAgICAgIHNuYWNrYmFyLmluZm8oZ2V0dGV4dChcIk5ldyByZWdpc3RyYXRpb25zIGFyZSBjdXJyZW50bHkgZGlzYWJsZWQuXCIpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUuaXNMb2FkZWQpIHtcbiAgICAgIG1vZGFsLnNob3coUmVnaXN0ZXJNb2RhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAnaXNMb2FkaW5nJzogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIFByb21pc2UuYWxsKFtcbiAgICAgICAgY2FwdGNoYS5sb2FkKCksXG4gICAgICAgIHp4Y3Zibi5sb2FkKClcbiAgICAgIF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RhdGUuaXNMb2FkZWQpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICdpc0xvYWRpbmcnOiBmYWxzZSxcbiAgICAgICAgICAgICdpc0xvYWRlZCc6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBtb2RhbC5zaG93KFJlZ2lzdGVyTW9kYWwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jbGFzc05hbWUgKyAodGhpcy5zdGF0ZS5pc0xvYWRpbmcgPyAnIGJ0bi1sb2FkaW5nJyA6ICcnKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e3RoaXMuc2hvd1JlZ2lzdGVyTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnYnRuICcgKyB0aGlzLmdldENsYXNzTmFtZSgpfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGVkfT5cbiAgICAgIHtnZXR0ZXh0KFwiUmVnaXN0ZXJcIil9XG4gICAgICB7dGhpcy5zdGF0ZS5pc0xvYWRpbmcgPyA8TG9hZGVyIC8+IDogbnVsbCB9XG4gICAgPC9idXR0b24+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgRm9ybUdyb3VwIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0tZ3JvdXAnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBQYXNzd29yZFN0cmVuZ3RoIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3Bhc3N3b3JkLXN0cmVuZ3RoJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgYXV0aCBmcm9tICdtaXNhZ28vc2VydmljZXMvYXV0aCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IGNhcHRjaGEgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2NhcHRjaGEnO1xuaW1wb3J0IG1vZGFsIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2RhbCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCBzaG93QmFubmVkUGFnZSBmcm9tICdtaXNhZ28vdXRpbHMvYmFubmVkLXBhZ2UnO1xuaW1wb3J0ICogYXMgdmFsaWRhdG9ycyBmcm9tICdtaXNhZ28vdXRpbHMvdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RlckZvcm0gZXh0ZW5kcyBGb3JtIHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcblxuICAgICAgdXNlcm5hbWU6ICcnLFxuICAgICAgZW1haWw6ICcnLFxuICAgICAgcGFzc3dvcmQ6ICcnLFxuICAgICAgY2FwdGNoYTogJycsXG5cbiAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgdXNlcm5hbWU6IFtcbiAgICAgICAgICB2YWxpZGF0b3JzLnVzZXJuYW1lQ29udGVudCgpLFxuICAgICAgICAgIHZhbGlkYXRvcnMudXNlcm5hbWVNaW5MZW5ndGgobWlzYWdvLmdldCgnU0VUVElOR1MnKSksXG4gICAgICAgICAgdmFsaWRhdG9ycy51c2VybmFtZU1heExlbmd0aChtaXNhZ28uZ2V0KCdTRVRUSU5HUycpKVxuICAgICAgICBdLFxuICAgICAgICBlbWFpbDogW1xuICAgICAgICAgIHZhbGlkYXRvcnMuZW1haWwoKVxuICAgICAgICBdLFxuICAgICAgICBwYXNzd29yZDogW1xuICAgICAgICAgIHZhbGlkYXRvcnMucGFzc3dvcmRNaW5MZW5ndGgobWlzYWdvLmdldCgnU0VUVElOR1MnKSlcbiAgICAgICAgXSxcbiAgICAgICAgY2FwdGNoYTogY2FwdGNoYS52YWxpZGF0b3IoKVxuICAgICAgfSxcblxuICAgICAgZXJyb3JzOiB7fVxuICAgIH07XG4gIH1cblxuICBjbGVhbigpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbmFja2Jhci5lcnJvcihnZXR0ZXh0KFwiRm9ybSBjb250YWlucyBlcnJvcnMuXCIpKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBlcnJvcnM6IHRoaXMudmFsaWRhdGUoKVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2VuZCgpIHtcbiAgICByZXR1cm4gYWpheC5wb3N0KG1pc2Fnby5nZXQoJ1VTRVJTX0FQSScpLCB7XG4gICAgICB1c2VybmFtZTogdGhpcy5zdGF0ZS51c2VybmFtZSxcbiAgICAgIGVtYWlsOiB0aGlzLnN0YXRlLmVtYWlsLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMuc3RhdGUucGFzc3dvcmQsXG4gICAgICBjYXB0Y2hhOiB0aGlzLnN0YXRlLmNhcHRjaGFcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVN1Y2Nlc3MoYXBpUmVzcG9uc2UpIHtcbiAgICB0aGlzLnByb3BzLmNhbGxiYWNrKGFwaVJlc3BvbnNlKTtcbiAgfVxuXG4gIGhhbmRsZUVycm9yKHJlamVjdGlvbikge1xuICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDApIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAnZXJyb3JzJzogT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZS5lcnJvcnMsIHJlamVjdGlvbilcbiAgICAgIH0pO1xuICAgICAgc25hY2tiYXIuZXJyb3IoZ2V0dGV4dChcIkZvcm0gY29udGFpbnMgZXJyb3JzLlwiKSk7XG4gICAgfSBlbHNlIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDMgJiYgcmVqZWN0aW9uLmJhbikge1xuICAgICAgc2hvd0Jhbm5lZFBhZ2UocmVqZWN0aW9uLmJhbik7XG4gICAgICBtb2RhbC5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmFwaUVycm9yKHJlamVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGVnYWxGb290Tm90ZSgpIHtcbiAgICBpZiAobWlzYWdvLmdldCgnVEVSTVNfT0ZfU0VSVklDRV9VUkwnKSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxhIGhyZWY9e21pc2Fnby5nZXQoJ1RFUk1TX09GX1NFUlZJQ0VfVVJMJyl9XG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgIHtnZXR0ZXh0KFwiQnkgcmVnaXN0ZXJpbmcgeW91IGFncmVlIHRvIHNpdGUncyB0ZXJtcyBhbmQgY29uZGl0aW9ucy5cIil9XG4gICAgICA8L2E+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1kaWFsb2cgbW9kYWwtcmVnaXN0ZXJcIiByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0dGV4dChcIkNsb3NlXCIpfT5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGg0IGNsYXNzTmFtZT1cIm1vZGFsLXRpdGxlXCI+e2dldHRleHQoXCJSZWdpc3RlclwiKX08L2g0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fSBjbGFzc05hbWU9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInR5cGVcIiBzdHlsZT17e2Rpc3BsYXk6ICdub25lJ319IC8+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIHN0eWxlPXt7ZGlzcGxheTogJ25vbmUnfX0gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWJvZHlcIj5cblxuICAgICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIlVzZXJuYW1lXCIpfSBmb3I9XCJpZF91c2VybmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9XCJjb2wtc20tNFwiIGNvbnRyb2xDbGFzcz1cImNvbC1zbS04XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbj17dGhpcy5zdGF0ZS5lcnJvcnMudXNlcm5hbWV9PlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImlkX3VzZXJuYW1lXCIgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJpZF91c2VybmFtZV9zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCd1c2VybmFtZScpfVxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudXNlcm5hbWV9IC8+XG4gICAgICAgICAgICA8L0Zvcm1Hcm91cD5cblxuICAgICAgICAgICAgPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIkUtbWFpbFwiKX0gZm9yPVwiaWRfZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPVwiY29sLXNtLTRcIiBjb250cm9sQ2xhc3M9XCJjb2wtc20tOFwiXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb249e3RoaXMuc3RhdGUuZXJyb3JzLmVtYWlsfT5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJpZF9lbWFpbFwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiaWRfZW1haWxfc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgnZW1haWwnKX1cbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmVtYWlsfSAvPlxuICAgICAgICAgICAgPC9Gb3JtR3JvdXA+XG5cbiAgICAgICAgICAgIDxGb3JtR3JvdXAgbGFiZWw9e2dldHRleHQoXCJQYXNzd29yZFwiKX0gZm9yPVwiaWRfcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPVwiY29sLXNtLTRcIiBjb250cm9sQ2xhc3M9XCJjb2wtc20tOFwiXG4gICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb249e3RoaXMuc3RhdGUuZXJyb3JzLnBhc3N3b3JkfVxuICAgICAgICAgICAgICAgICAgICAgICBleHRyYT17PFBhc3N3b3JkU3RyZW5ndGggcGFzc3dvcmQ9e3RoaXMuc3RhdGUucGFzc3dvcmR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM9e1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS51c2VybmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5lbWFpbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXX0gLz59ID5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGlkPVwiaWRfcGFzc3dvcmRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImlkX3Bhc3N3b3JkX3N0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ3Bhc3N3b3JkJyl9XG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5wYXNzd29yZH0gLz5cbiAgICAgICAgICAgIDwvRm9ybUdyb3VwPlxuXG4gICAgICAgICAgICB7Y2FwdGNoYS5jb21wb25lbnQoe1xuICAgICAgICAgICAgICBmb3JtOiB0aGlzLFxuICAgICAgICAgICAgICBsYWJlbENsYXNzOiBcImNvbC1zbS00XCIsXG4gICAgICAgICAgICAgIGNvbnRyb2xDbGFzczogXCJjb2wtc20tOFwiXG4gICAgICAgICAgICB9KX1cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICB7dGhpcy5nZXRMZWdhbEZvb3ROb3RlKCl9XG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5XCIgbG9hZGluZz17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9PlxuICAgICAgICAgICAgICB7Z2V0dGV4dChcIlJlZ2lzdGVyIGFjY291bnRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlZ2lzdGVyQ29tcGxldGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRMZWFkKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmFjdGl2YXRpb24gPT09ICd1c2VyJykge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCIlKHVzZXJuYW1lKXMsIHlvdXIgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ1dCB5b3UgbmVlZCB0byBhY3RpdmF0ZSBpdCBiZWZvcmUgeW91IHdpbGwgYmUgYWJsZSB0byBzaWduIGluLlwiKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuYWN0aXZhdGlvbiA9PT0gJ2FkbWluJykge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCIlKHVzZXJuYW1lKXMsIHlvdXIgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ1dCBib2FyZCBhZG1pbmlzdHJhdG9yIHdpbGwgaGF2ZSB0byBhY3RpdmF0ZSBpdCBiZWZvcmUgeW91IHdpbGwgYmUgYWJsZSB0byBzaWduIGluLlwiKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdWJzY3JpcHQoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWN0aXZhdGlvbiA9PT0gJ3VzZXInKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIldlIGhhdmUgc2VudCBhbiBlLW1haWwgdG8gJShlbWFpbClzIHdpdGggbGluayB0aGF0IHlvdSBoYXZlIHRvIGNsaWNrIHRvIGFjdGl2YXRlIHlvdXIgYWNjb3VudC5cIik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLmFjdGl2YXRpb24gPT09ICdhZG1pbicpIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiV2Ugd2lsbCBzZW5kIGFuIGUtbWFpbCB0byAlKGVtYWlsKXMgd2hlbiB0aGlzIHRha2VzIHBsYWNlLlwiKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWRpYWxvZyBtb2RhbC1tZXNzYWdlIG1vZGFsLXJlZ2lzdGVyXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0dGV4dChcIkNsb3NlXCIpfT5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGg0IGNsYXNzTmFtZT1cIm1vZGFsLXRpdGxlXCI+e2dldHRleHQoXCJSZWdpc3RyYXRpb24gY29tcGxldGVcIil9PC9oND5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1pY29uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICAgIGluZm9fb3V0bGluZVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1ib2R5XCI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJsZWFkXCI+XG4gICAgICAgICAgICAgIHtpbnRlcnBvbGF0ZShcbiAgICAgICAgICAgICAgICB0aGlzLmdldExlYWQoKSxcbiAgICAgICAgICAgICAgICB7J3VzZXJuYW1lJzogdGhpcy5wcm9wcy51c2VybmFtZX0sIHRydWUpfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIHtpbnRlcnBvbGF0ZShcbiAgICAgICAgICAgICAgICB0aGlzLmdldFN1YnNjcmlwdCgpLFxuICAgICAgICAgICAgICAgIHsnZW1haWwnOiB0aGlzLnByb3BzLmVtYWlsfSwgdHJ1ZSl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBjb21wbGV0ZTogZmFsc2VcbiAgICB9O1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBjb21wbGV0ZVJlZ2lzdHJhdGlvbiA9IChhcGlSZXNwb25zZSkgPT4ge1xuICAgIGlmIChhcGlSZXNwb25zZS5hY3RpdmF0aW9uID09PSAnYWN0aXZlJykge1xuICAgICAgbW9kYWwuaGlkZSgpO1xuICAgICAgYXV0aC5zaWduSW4oYXBpUmVzcG9uc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY29tcGxldGU6IGFwaVJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICBpZiAodGhpcy5zdGF0ZS5jb21wbGV0ZSkge1xuICAgICAgcmV0dXJuIDxSZWdpc3RlckNvbXBsZXRlIGFjdGl2YXRpb249e3RoaXMuc3RhdGUuY29tcGxldGUuYWN0aXZhdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZT17dGhpcy5zdGF0ZS5jb21wbGV0ZS51c2VybmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbD17dGhpcy5zdGF0ZS5jb21wbGV0ZS5lbWFpbH0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiA8UmVnaXN0ZXJGb3JtIGNhbGxiYWNrPXt0aGlzLmNvbXBsZXRlUmVnaXN0cmF0aW9ufS8+O1xuICAgIH1cbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCBCdXR0b24gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYnV0dG9uJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgRm9ybSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCBhamF4IGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9hamF4JztcbmltcG9ydCBzbmFja2JhciBmcm9tICdtaXNhZ28vc2VydmljZXMvc25hY2tiYXInO1xuaW1wb3J0ICogYXMgdmFsaWRhdG9ycyBmcm9tICdtaXNhZ28vdXRpbHMvdmFsaWRhdG9ycyc7XG5pbXBvcnQgc2hvd0Jhbm5lZFBhZ2UgZnJvbSAnbWlzYWdvL3V0aWxzL2Jhbm5lZC1wYWdlJztcblxuZXhwb3J0IGNsYXNzIFJlcXVlc3RMaW5rRm9ybSBleHRlbmRzIEZvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAnaXNMb2FkaW5nJzogZmFsc2UsXG5cbiAgICAgICdlbWFpbCc6ICcnLFxuXG4gICAgICAndmFsaWRhdG9ycyc6IHtcbiAgICAgICAgJ2VtYWlsJzogW1xuICAgICAgICAgIHZhbGlkYXRvcnMuZW1haWwoKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNsZWFuKCkge1xuICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmVycm9yKGdldHRleHQoXCJFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuXCIpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzZW5kKCkge1xuICAgIHJldHVybiBhamF4LnBvc3QobWlzYWdvLmdldCgnU0VORF9BQ1RJVkFUSU9OX0FQSScpLCB7XG4gICAgICAnZW1haWwnOiB0aGlzLnN0YXRlLmVtYWlsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWNjZXNzKGFwaVJlc3BvbnNlKSB7XG4gICAgdGhpcy5wcm9wcy5jYWxsYmFjayhhcGlSZXNwb25zZSk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihyZWplY3Rpb24pIHtcbiAgICBpZiAoWydhbHJlYWR5X2FjdGl2ZScsICdpbmFjdGl2ZV9hZG1pbiddLmluZGV4T2YocmVqZWN0aW9uLmNvZGUpID4gLTEpIHtcbiAgICAgIHNuYWNrYmFyLmluZm8ocmVqZWN0aW9uLmRldGFpbCk7XG4gICAgfSBlbHNlIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDMgJiYgcmVqZWN0aW9uLmJhbikge1xuICAgICAgc2hvd0Jhbm5lZFBhZ2UocmVqZWN0aW9uLmJhbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmFwaUVycm9yKHJlamVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJ3ZWxsIHdlbGwtZm9ybSB3ZWxsLWZvcm0tcmVxdWVzdC1hY3RpdmF0aW9uLWxpbmtcIj5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXt0aGlzLmhhbmRsZVN1Ym1pdH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udHJvbC1pbnB1dFwiPlxuXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtnZXR0ZXh0KFwiWW91ciBlLW1haWwgYWRkcmVzc1wiKX1cbiAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCdlbWFpbCcpfVxuICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLmVtYWlsfSAvPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPVwiYnRuLXByaW1hcnkgYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmlzTG9hZGluZ30+XG4gICAgICAgICAge2dldHRleHQoXCJTZW5kIGxpbmtcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuXG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpbmtTZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0TWVzc2FnZSgpIHtcbiAgICByZXR1cm4gaW50ZXJwb2xhdGUoZ2V0dGV4dChcIkFjdGl2YXRpb24gbGluayB3YXMgc2VudCB0byAlKGVtYWlsKXNcIiksIHtcbiAgICAgIGVtYWlsOiB0aGlzLnByb3BzLnVzZXIuZW1haWxcbiAgICB9LCB0cnVlKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwid2VsbCB3ZWxsLWZvcm0gd2VsbC1mb3JtLXJlcXVlc3QtYWN0aXZhdGlvbi1saW5rIHdlbGwtZG9uZVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJkb25lLW1lc3NhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWljb25cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICBjaGVja1xuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1ib2R5XCI+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICB7dGhpcy5nZXRNZXNzYWdlKCl9XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5jYWxsYmFja30+XG4gICAgICAgICAge2dldHRleHQoXCJSZXF1ZXN0IGFub3RoZXIgbGlua1wiKX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGNvbXBsZXRlOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIGNvbXBsZXRlID0gKGFwaVJlc3BvbnNlKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBjb21wbGV0ZTogYXBpUmVzcG9uc2VcbiAgICB9KTtcbiAgfTtcblxuICByZXNldCA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNvbXBsZXRlOiBmYWxzZVxuICAgIH0pO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgaWYgKHRoaXMuc3RhdGUuY29tcGxldGUpIHtcbiAgICAgIHJldHVybiA8TGlua1NlbnQgdXNlcj17dGhpcy5zdGF0ZS5jb21wbGV0ZX0gY2FsbGJhY2s9e3RoaXMucmVzZXR9IC8+O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gPFJlcXVlc3RMaW5rRm9ybSBjYWxsYmFjaz17dGhpcy5jb21wbGV0ZX0gLz47XG4gICAgfTtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCAqIGFzIHZhbGlkYXRvcnMgZnJvbSAnbWlzYWdvL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHNob3dCYW5uZWRQYWdlIGZyb20gJ21pc2Fnby91dGlscy9iYW5uZWQtcGFnZSc7XG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0UmVzZXRGb3JtIGV4dGVuZHMgRm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICdpc0xvYWRpbmcnOiBmYWxzZSxcblxuICAgICAgJ2VtYWlsJzogJycsXG5cbiAgICAgICd2YWxpZGF0b3JzJzoge1xuICAgICAgICAnZW1haWwnOiBbXG4gICAgICAgICAgdmFsaWRhdG9ycy5lbWFpbCgpXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc25hY2tiYXIuZXJyb3IoZ2V0dGV4dChcIkVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy5cIikpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNlbmQoKSB7XG4gICAgcmV0dXJuIGFqYXgucG9zdChtaXNhZ28uZ2V0KCdTRU5EX1BBU1NXT1JEX1JFU0VUX0FQSScpLCB7XG4gICAgICAnZW1haWwnOiB0aGlzLnN0YXRlLmVtYWlsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWNjZXNzKGFwaVJlc3BvbnNlKSB7XG4gICAgdGhpcy5wcm9wcy5jYWxsYmFjayhhcGlSZXNwb25zZSk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihyZWplY3Rpb24pIHtcbiAgICBpZiAoWydpbmFjdGl2ZV91c2VyJywgJ2luYWN0aXZlX2FkbWluJ10uaW5kZXhPZihyZWplY3Rpb24uY29kZSkgPiAtMSkge1xuICAgICAgdGhpcy5wcm9wcy5zaG93SW5hY3RpdmVQYWdlKHJlamVjdGlvbik7XG4gICAgfSBlbHNlIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDMgJiYgcmVqZWN0aW9uLmJhbikge1xuICAgICAgc2hvd0Jhbm5lZFBhZ2UocmVqZWN0aW9uLmJhbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyLmFwaUVycm9yKHJlamVjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJ3ZWxsIHdlbGwtZm9ybSB3ZWxsLWZvcm0tcmVxdWVzdC1wYXNzd29yZC1yZXNldFwiPlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e3RoaXMuaGFuZGxlU3VibWl0fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sLWlucHV0XCI+XG5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2dldHRleHQoXCJZb3VyIGUtbWFpbCBhZGRyZXNzXCIpfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5iaW5kSW5wdXQoJ2VtYWlsJyl9XG4gICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuZW1haWx9IC8+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9XCJidG4tcHJpbWFyeSBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfT5cbiAgICAgICAgICB7Z2V0dGV4dChcIlNlbmQgbGlua1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlua1NlbnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRNZXNzYWdlKCkge1xuICAgIHJldHVybiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiUmVzZXQgcGFzc3dvcmQgbGluayB3YXMgc2VudCB0byAlKGVtYWlsKXNcIiksIHtcbiAgICAgIGVtYWlsOiB0aGlzLnByb3BzLnVzZXIuZW1haWxcbiAgICB9LCB0cnVlKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwid2VsbCB3ZWxsLWZvcm0gd2VsbC1mb3JtLXJlcXVlc3QtcGFzc3dvcmQtcmVzZXQgd2VsbC1kb25lXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRvbmUtbWVzc2FnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtaWNvblwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgIGNoZWNrXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWJvZHlcIj5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIHt0aGlzLmdldE1lc3NhZ2UoKX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnkgYnRuLWJsb2NrXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLmNhbGxiYWNrfT5cbiAgICAgICAgICB7Z2V0dGV4dChcIlJlcXVlc3QgYW5vdGhlciBsaW5rXCIpfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY2NvdW50SW5hY3RpdmVQYWdlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0QWN0aXZhdGVCdXR0b24oKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWN0aXZhdGlvbiA9PT0gJ2luYWN0aXZlX3VzZXInKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPHA+XG4gICAgICAgIDxhIGhyZWY9e21pc2Fnby5nZXQoJ1JFUVVFU1RfQUNUSVZBVElPTl9VUkwnKX0+XG4gICAgICAgICAge2dldHRleHQoXCJBY3RpdmF0ZSB5b3VyIGFjY291bnQuXCIpfVxuICAgICAgICA8L2E+XG4gICAgICA8L3A+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJwYWdlIHBhZ2UtbWVzc2FnZSBwYWdlLW1lc3NhZ2UtaW5mbyBwYWdlLWZvcmdvdHRlbi1wYXNzd29yZC1pbmFjdGl2ZVwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLXBhbmVsXCI+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1lc3NhZ2UtaWNvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgICBpbmZvX291dGxpbmVcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1ib2R5XCI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJsZWFkXCI+XG4gICAgICAgICAgICAgIHtnZXR0ZXh0KFwiWW91ciBhY2NvdW50IGlzIGluYWN0aXZlLlwiKX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5tZXNzYWdlfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAge3RoaXMuZ2V0QWN0aXZhdGVCdXR0b24oKX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgY29tcGxldGU6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgY29tcGxldGUgPSAoYXBpUmVzcG9uc2UpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNvbXBsZXRlOiBhcGlSZXNwb25zZVxuICAgIH0pO1xuICB9O1xuXG4gIHJlc2V0ID0gKCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29tcGxldGU6IGZhbHNlXG4gICAgfSk7XG4gIH07XG5cbiAgc2hvd0luYWN0aXZlUGFnZShhcGlSZXNwb25zZSkge1xuICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgIDxBY2NvdW50SW5hY3RpdmVQYWdlIGFjdGl2YXRpb249e2FwaVJlc3BvbnNlLmNvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXthcGlSZXNwb25zZS5kZXRhaWx9IC8+LFxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtbW91bnQnKVxuICAgICk7XG4gIH1cbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIGlmICh0aGlzLnN0YXRlLmNvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gPExpbmtTZW50IHVzZXI9e3RoaXMuc3RhdGUuY29tcGxldGV9IGNhbGxiYWNrPXt0aGlzLnJlc2V0fSAvPjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDxSZXF1ZXN0UmVzZXRGb3JtIGNhbGxiYWNrPXt0aGlzLmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dJbmFjdGl2ZVBhZ2U9e3RoaXMuc2hvd0luYWN0aXZlUGFnZX0gLz47XG4gICAgfTtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2J1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgU2lnbkluTW9kYWwgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvc2lnbi1pbi5qcyc7XG5pbXBvcnQgYWpheCBmcm9tICdtaXNhZ28vc2VydmljZXMvYWpheCc7XG5pbXBvcnQgYXV0aCBmcm9tICdtaXNhZ28vc2VydmljZXMvYXV0aCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1vZGFsIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2RhbCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCAqIGFzIHZhbGlkYXRvcnMgZnJvbSAnbWlzYWdvL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHNob3dCYW5uZWRQYWdlIGZyb20gJ21pc2Fnby91dGlscy9iYW5uZWQtcGFnZSc7XG5cbmV4cG9ydCBjbGFzcyBSZXNldFBhc3N3b3JkRm9ybSBleHRlbmRzIEZvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAnaXNMb2FkaW5nJzogZmFsc2UsXG5cbiAgICAgICdwYXNzd29yZCc6ICcnLFxuXG4gICAgICAndmFsaWRhdG9ycyc6IHtcbiAgICAgICAgJ3Bhc3N3b3JkJzogW1xuICAgICAgICAgIHZhbGlkYXRvcnMucGFzc3dvcmRNaW5MZW5ndGgobWlzYWdvLmdldCgnU0VUVElOR1MnKSlcbiAgICAgICAgXVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjbGVhbigpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5wYXNzd29yZC50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgIHNuYWNrYmFyLmVycm9yKHRoaXMuc3RhdGUuZXJyb3JzLnBhc3N3b3JkWzBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNuYWNrYmFyLmVycm9yKGdldHRleHQoXCJFbnRlciBuZXcgcGFzc3dvcmQuXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzZW5kKCkge1xuICAgIHJldHVybiBhamF4LnBvc3QobWlzYWdvLmdldCgnQ0hBTkdFX1BBU1NXT1JEX0FQSScpLCB7XG4gICAgICAncGFzc3dvcmQnOiB0aGlzLnN0YXRlLnBhc3N3b3JkXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWNjZXNzKGFwaVJlc3BvbnNlKSB7XG4gICAgdGhpcy5wcm9wcy5jYWxsYmFjayhhcGlSZXNwb25zZSk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihyZWplY3Rpb24pIHtcbiAgICBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gNDAzICYmIHJlamVjdGlvbi5iYW4pIHtcbiAgICAgIHNob3dCYW5uZWRQYWdlKHJlamVjdGlvbi5iYW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzbmFja2Jhci5hcGlFcnJvcihyZWplY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwid2VsbCB3ZWxsLWZvcm0gd2VsbC1mb3JtLXJlc2V0LXBhc3N3b3JkXCI+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17dGhpcy5oYW5kbGVTdWJtaXR9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRyb2wtaW5wdXRcIj5cblxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2dldHRleHQoXCJFbnRlciBuZXcgcGFzc3dvcmRcIil9XG4gICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgncGFzc3dvcmQnKX1cbiAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5wYXNzd29yZH0gLz5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgICAgbG9hZGluZz17dGhpcy5zdGF0ZS5pc0xvYWRpbmd9PlxuICAgICAgICAgIHtnZXR0ZXh0KFwiQ2hhbmdlIHBhc3N3b3JkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cblxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQYXNzd29yZENoYW5nZWRQYWdlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0TWVzc2FnZSgpIHtcbiAgICByZXR1cm4gaW50ZXJwb2xhdGUoZ2V0dGV4dChcIiUodXNlcm5hbWUpcywgeW91ciBwYXNzd29yZCBoYXMgYmVlbiBjaGFuZ2VkIHN1Y2Nlc3NmdWxseS5cIiksIHtcbiAgICAgIHVzZXJuYW1lOiB0aGlzLnByb3BzLnVzZXIudXNlcm5hbWVcbiAgICB9LCB0cnVlKTtcbiAgfVxuXG4gIHNob3dTaWduSW4oKSB7XG4gICAgbW9kYWwuc2hvdyhTaWduSW5Nb2RhbCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInBhZ2UgcGFnZS1tZXNzYWdlIHBhZ2UtbWVzc2FnZS1zdWNjZXNzIHBhZ2UtZm9yZ290dGVuLXBhc3N3b3JkLWNoYW5nZWRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1wYW5lbFwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZXNzYWdlLWljb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgICAgY2hlY2tcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWVzc2FnZS1ib2R5XCI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJsZWFkXCI+XG4gICAgICAgICAgICAgIHt0aGlzLmdldE1lc3NhZ2UoKX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7Z2V0dGV4dChcIllvdSB3aWxsIGhhdmUgdG8gc2lnbiBpbiB1c2luZyBuZXcgcGFzc3dvcmQgYmVmb3JlIGNvbnRpbnVpbmcuXCIpfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeVwiIG9uQ2xpY2s9e3RoaXMuc2hvd1NpZ25Jbn0+XG4gICAgICAgICAgICAgICAge2dldHRleHQoXCJTaWduIGluXCIpfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICBjb21wbGV0ZSA9IChhcGlSZXNwb25zZSkgPT4ge1xuICAgIGF1dGguc29mdFNpZ25PdXQoKTtcblxuICAgIC8vIG51a2UgXCJyZWRpcmVjdF90b1wiIGZpZWxkIHNvIHdlIGRvbid0IGVuZFxuICAgIC8vIGNvbWluZyBiYWNrIHRvIGVycm9yIHBhZ2UgYWZ0ZXIgc2lnbiBpblxuICAgICQoJyNoaWRkZW4tbG9naW4tZm9ybSBpbnB1dFtuYW1lPVwicmVkaXJlY3RfdG9cIl0nKS5yZW1vdmUoKTtcblxuICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgIDxQYXNzd29yZENoYW5nZWRQYWdlIHVzZXI9e2FwaVJlc3BvbnNlfSAvPixcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLW1vdW50JylcbiAgICApO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxSZXNldFBhc3N3b3JkRm9ybSBjYWxsYmFjaz17dGhpcy5jb21wbGV0ZX0gLz47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmNsYXNzTmFtZSkge1xuICAgICAgcmV0dXJuIFwiZm9ybS1zZWFyY2ggXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiZm9ybS1zZWFyY2hcIjtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRDbGFzc05hbWUoKX0+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgdmFsdWU9e3RoaXMucHJvcHMudmFsdWV9XG4gICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMucHJvcHMub25DaGFuZ2V9XG4gICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxhY2Vob2xkZXIgfHwgZ2V0dGV4dChcIlNlYXJjaC4uLlwiKX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgc2VhcmNoXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldENob2ljZSgpIHtcbiAgICBsZXQgY2hvaWNlID0gbnVsbDtcbiAgICB0aGlzLnByb3BzLmNob2ljZXMubWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWx1ZSA9PT0gdGhpcy5wcm9wcy52YWx1ZSkge1xuICAgICAgICBjaG9pY2UgPSBpdGVtO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjaG9pY2U7XG4gIH1cblxuICBnZXRJY29uKCkge1xuICAgIHJldHVybiB0aGlzLmdldENob2ljZSgpLmljb247XG4gIH1cblxuICBnZXRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDaG9pY2UoKS5sYWJlbDtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgY2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2Uoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImJ0bi1ncm91cCBidG4tc2VsZWN0LWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXNlbGVjdCBkcm9wZG93bi10b2dnbGVcIlxuICAgICAgICAgICAgICBpZD17dGhpcy5wcm9wcy5pZCB8fCBudWxsfVxuICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXt0aGlzLnByb3BzWydhcmlhLWRlc2NyaWJlZGJ5J10gfHwgbnVsbH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMucHJvcHMuZGlzYWJsZWQgfHwgZmFsc2V9PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAge3RoaXMuZ2V0SWNvbigpfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHt0aGlzLmdldExhYmVsKCl9XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDx1bCBjbGFzc05hbWU9XCJkcm9wZG93bi1tZW51XCI+XG4gICAgICAgIHt0aGlzLnByb3BzLmNob2ljZXMubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIDxsaSBrZXk9e2l9PlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuLWxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmNoYW5nZShpdGVtLnZhbHVlKX0+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgICAgICB7aXRlbS5pY29ufVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIHtpdGVtLmxhYmVsfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9saT47XG4gICAgICAgIH0pfVxuICAgICAgPC91bD5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9idXR0b24nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBGb3JtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IGFqYXggZnJvbSAnbWlzYWdvL3NlcnZpY2VzL2FqYXgnO1xuaW1wb3J0IG1vZGFsIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2RhbCc7XG5pbXBvcnQgc25hY2tiYXIgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3NuYWNrYmFyJztcbmltcG9ydCBzaG93QmFubmVkUGFnZSBmcm9tICdtaXNhZ28vdXRpbHMvYmFubmVkLXBhZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIEZvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAnaXNMb2FkaW5nJzogZmFsc2UsXG4gICAgICAnc2hvd0FjdGl2YXRpb24nOiBmYWxzZSxcblxuICAgICAgJ3VzZXJuYW1lJzogJycsXG4gICAgICAncGFzc3dvcmQnOiAnJyxcblxuICAgICAgJ3ZhbGlkYXRvcnMnOiB7XG4gICAgICAgICd1c2VybmFtZSc6IFtdLFxuICAgICAgICAncGFzc3dvcmQnOiBbXVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjbGVhbigpIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICBzbmFja2Jhci5lcnJvcihnZXR0ZXh0KFwiRmlsbCBvdXQgYm90aCBmaWVsZHMuXCIpKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgc2VuZCgpIHtcbiAgICByZXR1cm4gYWpheC5wb3N0KG1pc2Fnby5nZXQoJ0FVVEhfQVBJJyksIHtcbiAgICAgICd1c2VybmFtZSc6IHRoaXMuc3RhdGUudXNlcm5hbWUsXG4gICAgICAncGFzc3dvcmQnOiB0aGlzLnN0YXRlLnBhc3N3b3JkXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVTdWNjZXNzKCkge1xuICAgIGxldCBmb3JtID0gJCgnI2hpZGRlbi1sb2dpbi1mb3JtJyk7XG5cbiAgICBmb3JtLmFwcGVuZCgnPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInVzZXJuYW1lXCIgLz4nKTtcbiAgICBmb3JtLmFwcGVuZCgnPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZFwiIC8+Jyk7XG5cbiAgICAvLyBmaWxsIG91dCBmb3JtIHdpdGggdXNlciBjcmVkZW50aWFscyBhbmQgc3VibWl0IGl0LCB0aGlzIHdpbGwgdGVsbFxuICAgIC8vIE1pc2FnbyB0byByZWRpcmVjdCB1c2VyIGJhY2sgdG8gcmlnaHQgcGFnZSwgYW5kIHdpbGwgdHJpZ2dlciBicm93c2VyJ3NcbiAgICAvLyBrZXkgcmluZyBmZWF0dXJlXG4gICAgZm9ybS5maW5kKCdpbnB1dFt0eXBlPVwiaGlkZGVuXCJdJykudmFsKGFqYXguZ2V0Q3NyZlRva2VuKCkpO1xuICAgIGZvcm0uZmluZCgnaW5wdXRbbmFtZT1cInJlZGlyZWN0X3RvXCJdJykudmFsKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgZm9ybS5maW5kKCdpbnB1dFtuYW1lPVwidXNlcm5hbWVcIl0nKS52YWwodGhpcy5zdGF0ZS51c2VybmFtZSk7XG4gICAgZm9ybS5maW5kKCdpbnB1dFtuYW1lPVwicGFzc3dvcmRcIl0nKS52YWwodGhpcy5zdGF0ZS5wYXNzd29yZCk7XG4gICAgZm9ybS5zdWJtaXQoKTtcblxuICAgIC8vIGtlZXAgZm9ybSBsb2FkaW5nXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAnaXNMb2FkaW5nJzogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlRXJyb3IocmVqZWN0aW9uKSB7XG4gICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgaWYgKHJlamVjdGlvbi5jb2RlID09PSAnaW5hY3RpdmVfYWRtaW4nKSB7XG4gICAgICAgIHNuYWNrYmFyLmluZm8ocmVqZWN0aW9uLmRldGFpbCk7XG4gICAgICB9IGVsc2UgaWYgKHJlamVjdGlvbi5jb2RlID09PSAnaW5hY3RpdmVfdXNlcicpIHtcbiAgICAgICAgc25hY2tiYXIuaW5mbyhyZWplY3Rpb24uZGV0YWlsKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgJ3Nob3dBY3RpdmF0aW9uJzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAocmVqZWN0aW9uLmNvZGUgPT09ICdiYW5uZWQnKSB7XG4gICAgICAgIHNob3dCYW5uZWRQYWdlKHJlamVjdGlvbi5kZXRhaWwpO1xuICAgICAgICBtb2RhbC5oaWRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbmFja2Jhci5lcnJvcihyZWplY3Rpb24uZGV0YWlsKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDQwMyAmJiByZWplY3Rpb24uYmFuKSB7XG4gICAgICBzaG93QmFubmVkUGFnZShyZWplY3Rpb24uYmFuKTtcbiAgICAgIG1vZGFsLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc25hY2tiYXIuYXBpRXJyb3IocmVqZWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY3RpdmF0aW9uQnV0dG9uKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLnNob3dBY3RpdmF0aW9uKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPGEgaHJlZj17bWlzYWdvLmdldCgnUkVRVUVTVF9BQ1RJVkFUSU9OX1VSTCcpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tc3VjY2VzcyBidG4tYmxvY2tcIj5cbiAgICAgICAgIHtnZXR0ZXh0KFwiQWN0aXZhdGUgYWNjb3VudFwiKX1cbiAgICAgIDwvYT47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWRpYWxvZyBtb2RhbC1zbSBtb2RhbC1zaWduLWluXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0dGV4dChcIkNsb3NlXCIpfT5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGg0IGNsYXNzTmFtZT1cIm1vZGFsLXRpdGxlXCI+e2dldHRleHQoXCJTaWduIGluXCIpfTwvaDQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Zm9ybSBvblN1Ym1pdD17dGhpcy5oYW5kbGVTdWJtaXR9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtYm9keVwiPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250cm9sLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiaWRfdXNlcm5hbWVcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2dldHRleHQoXCJVc2VybmFtZSBvciBlLW1haWxcIil9XG4gICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmJpbmRJbnB1dCgndXNlcm5hbWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudXNlcm5hbWV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRyb2wtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJpZF9wYXNzd29yZFwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmlzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2dldHRleHQoXCJQYXNzd29yZFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuYmluZElucHV0KCdwYXNzd29yZCcpfVxuICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5wYXNzd29yZH0gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICB7dGhpcy5nZXRBY3RpdmF0aW9uQnV0dG9uKCl9XG4gICAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT1cImJ0bi1wcmltYXJ5IGJ0bi1ibG9ja1wiXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e3RoaXMuc3RhdGUuaXNMb2FkaW5nfT5cbiAgICAgICAgICAgICAge2dldHRleHQoXCJTaWduIGluXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8YSBocmVmPXttaXNhZ28uZ2V0KCdGT1JHT1RURU5fUEFTU1dPUkRfVVJMJyl9XG4gICAgICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLWRlZmF1bHQgYnRuLWJsb2NrXCI+XG4gICAgICAgICAgICAgICB7Z2V0dGV4dChcIkZvcmdvdCBwYXNzd29yZD9cIil9XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG4vKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG5jb25zdCBUWVBFU19DTEFTU0VTID0ge1xuICAnaW5mbyc6ICdhbGVydC1pbmZvJyxcbiAgJ3N1Y2Nlc3MnOiAnYWxlcnQtc3VjY2VzcycsXG4gICd3YXJuaW5nJzogJ2FsZXJ0LXdhcm5pbmcnLFxuICAnZXJyb3InOiAnYWxlcnQtZGFuZ2VyJ1xufTtcbi8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbmV4cG9ydCBjbGFzcyBTbmFja2JhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldFNuYWNrYmFyQ2xhc3MoKSB7XG4gICAgbGV0IHNuYWNrYmFyQ2xhc3MgPSAnYWxlcnRzLXNuYWNrYmFyJztcbiAgICBpZiAodGhpcy5wcm9wcy5pc1Zpc2libGUpIHtcbiAgICAgIHNuYWNrYmFyQ2xhc3MgKz0gJyBpbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNuYWNrYmFyQ2xhc3MgKz0gJyBvdXQnO1xuICAgIH1cbiAgICByZXR1cm4gc25hY2tiYXJDbGFzcztcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldFNuYWNrYmFyQ2xhc3MoKX0+XG4gICAgICA8cCBjbGFzc05hbWU9eydhbGVydCAnICsgVFlQRVNfQ0xBU1NFU1t0aGlzLnByb3BzLnR5cGVdfT5cbiAgICAgICAge3RoaXMucHJvcHMubWVzc2FnZX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0KHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5zbmFja2Jhcjtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQXZhdGFyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2F2YXRhcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFJlZ2lzdGVyQnV0dG9uIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3JlZ2lzdGVyLWJ1dHRvbic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFNpZ25Jbk1vZGFsIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3NpZ24taW4uanMnO1xuaW1wb3J0IGRyb3Bkb3duIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2JpbGUtbmF2YmFyLWRyb3Bkb3duJztcbmltcG9ydCBtb2RhbCBmcm9tICdtaXNhZ28vc2VydmljZXMvbW9kYWwnO1xuXG5leHBvcnQgY2xhc3MgR3Vlc3RNZW51IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc2hvd1NpZ25Jbk1vZGFsKCkge1xuICAgIG1vZGFsLnNob3coU2lnbkluTW9kYWwpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPHVsIGNsYXNzTmFtZT1cImRyb3Bkb3duLW1lbnUgdXNlci1kcm9wZG93biBkcm9wZG93bi1tZW51LXJpZ2h0XCJcbiAgICAgICAgICAgICAgIHJvbGU9XCJtZW51XCI+XG4gICAgICA8bGkgY2xhc3NOYW1lPVwiZ3Vlc3QtcHJldmlld1wiPlxuICAgICAgICA8aDQ+e2dldHRleHQoXCJZb3UgYXJlIGJyb3dzaW5nIGFzIGd1ZXN0LlwiKX08L2g0PlxuICAgICAgICA8cD5cbiAgICAgICAgICB7Z2V0dGV4dCgnU2lnbiBpbiBvciByZWdpc3RlciB0byBzdGFydCBhbmQgcGFydGljaXBhdGUgaW4gZGlzY3Vzc2lvbnMuJyl9XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbC14cy02XCI+XG5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdCBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnNob3dTaWduSW5Nb2RhbH0+XG4gICAgICAgICAgICAgIHtnZXR0ZXh0KFwiU2lnbiBpblwiKX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wteHMtNlwiPlxuXG4gICAgICAgICAgICA8UmVnaXN0ZXJCdXR0b24gY2xhc3NOYW1lPVwiYnRuLXByaW1hcnkgYnRuLWJsb2NrXCI+XG4gICAgICAgICAgICAgIHtnZXR0ZXh0KFwiUmVnaXN0ZXJcIil9XG4gICAgICAgICAgICA8L1JlZ2lzdGVyQnV0dG9uPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICA8L3VsPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWVzdE5hdiBleHRlbmRzIEd1ZXN0TWVudSB7XG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwibmF2IG5hdi1ndWVzdFwiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3NOYW1lPVwiYnRuIG5hdmJhci1idG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnNob3dTaWduSW5Nb2RhbH0+XG4gICAgICAgIHtnZXR0ZXh0KFwiU2lnbiBpblwiKX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPFJlZ2lzdGVyQnV0dG9uIGNsYXNzTmFtZT1cIm5hdmJhci1idG4gYnRuLXByaW1hcnlcIj5cbiAgICAgICAge2dldHRleHQoXCJSZWdpc3RlclwiKX1cbiAgICAgIDwvUmVnaXN0ZXJCdXR0b24+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBhY3RHdWVzdE5hdiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHNob3dHdWVzdE1lbnUoKSB7XG4gICAgZHJvcGRvd24uc2hvdyhHdWVzdE1lbnUpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17dGhpcy5zaG93R3Vlc3RNZW51fT5cbiAgICAgIDxBdmF0YXIgc2l6ZT1cIjY0XCIgLz5cbiAgICA8L2J1dHRvbj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEd1ZXN0TmF2LCBDb21wYWN0R3Vlc3ROYXYgfSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy91c2VyLW1lbnUvZ3Vlc3QtbmF2JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgeyBVc2VyTmF2LCBDb21wYWN0VXNlck5hdn0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlci1tZW51L3VzZXItbmF2JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBVc2VyTWVudSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgaWYgKHRoaXMucHJvcHMuaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICByZXR1cm4gPFVzZXJOYXYgdXNlcj17dGhpcy5wcm9wcy51c2VyfSAvPjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDxHdWVzdE5hdiAvPjtcbiAgICB9XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGFjdFVzZXJNZW51IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICBpZiAodGhpcy5wcm9wcy5pc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIHJldHVybiA8Q29tcGFjdFVzZXJOYXYgdXNlcj17dGhpcy5wcm9wcy51c2VyfSAvPjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDxDb21wYWN0R3Vlc3ROYXYgLz47XG4gICAgfVxuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuYXV0aDtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IEF2YXRhciBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9hdmF0YXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBDaGFuZ2VBdmF0YXJNb2RhbCwgeyBzZWxlY3QgfSBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9jaGFuZ2UtYXZhdGFyL3Jvb3QnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgZHJvcGRvd24gZnJvbSAnbWlzYWdvL3NlcnZpY2VzL21vYmlsZS1uYXZiYXItZHJvcGRvd24nO1xuaW1wb3J0IG1vZGFsIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9tb2RhbCc7XG5cbmV4cG9ydCBjbGFzcyBVc2VyTWVudSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGxvZ291dCgpIHtcbiAgICBsZXQgZGVjaXNpb24gPSBjb25maXJtKGdldHRleHQoXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc2lnbiBvdXQ/XCIpKTtcbiAgICBpZiAoZGVjaXNpb24pIHtcbiAgICAgICQoJyNoaWRkZW4tbG9nb3V0LWZvcm0nKS5zdWJtaXQoKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VBdmF0YXIoKSB7XG4gICAgbW9kYWwuc2hvdyhjb25uZWN0KHNlbGVjdCkoQ2hhbmdlQXZhdGFyTW9kYWwpKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDx1bCBjbGFzc05hbWU9XCJkcm9wZG93bi1tZW51IHVzZXItZHJvcGRvd24gZHJvcGRvd24tbWVudS1yaWdodFwiXG4gICAgICAgICAgICAgICByb2xlPVwibWVudVwiPlxuICAgICAgPGxpIGNsYXNzTmFtZT1cImRyb3Bkb3duLWhlYWRlclwiPlxuICAgICAgICA8c3Ryb25nPnt0aGlzLnByb3BzLnVzZXIudXNlcm5hbWV9PC9zdHJvbmc+XG4gICAgICA8L2xpPlxuICAgICAgPGxpIGNsYXNzTmFtZT1cImRpdmlkZXJcIiAvPlxuICAgICAgPGxpPlxuICAgICAgICA8YSBocmVmPXt0aGlzLnByb3BzLnVzZXIuYWJzb2x1dGVfdXJsfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+YWNjb3VudF9jaXJjbGU8L3NwYW4+XG4gICAgICAgICAge2dldHRleHQoXCJTZWUgeW91ciBwcm9maWxlXCIpfVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpPlxuICAgICAgICA8YSBocmVmPXttaXNhZ28uZ2V0KCdVU0VSQ1BfVVJMJyl9PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5kb25lX2FsbDwvc3Bhbj5cbiAgICAgICAgICB7Z2V0dGV4dChcIkNoYW5nZSBvcHRpb25zXCIpfVxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgICAgPGxpPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzc05hbWU9XCJidG4tbGlua1wiIG9uQ2xpY2s9e3RoaXMuY2hhbmdlQXZhdGFyfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+cG9ydHJhaXQ8L3NwYW4+XG4gICAgICAgICAge2dldHRleHQoXCJDaGFuZ2UgYXZhdGFyXCIpfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGkgY2xhc3NOYW1lPVwiZGl2aWRlclwiIC8+XG4gICAgICA8bGkgY2xhc3NOYW1lPVwiZHJvcGRvd24tYnV0dG9uc1wiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzTmFtZT1cImJ0biBidG4tZGVmYXVsdCBidG4tYmxvY2tcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5sb2dvdXR9PlxuICAgICAgICAgICAge2dldHRleHQoXCJMb2cgb3V0XCIpfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9saT5cbiAgICA8L3VsPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyTmF2IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPHVsIGNsYXNzTmFtZT1cInVsIG5hdiBuYXZiYXItbmF2IG5hdi11c2VyXCI+XG4gICAgICA8bGkgY2xhc3NOYW1lPVwiZHJvcGRvd25cIj5cbiAgICAgICAgPGEgaHJlZj17dGhpcy5wcm9wcy51c2VyLmFic29sdXRlX3VybH0gY2xhc3NOYW1lPVwiZHJvcGRvd24tdG9nZ2xlXCJcbiAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgICAgIDxBdmF0YXIgdXNlcj17dGhpcy5wcm9wcy51c2VyfSBzaXplPVwiNjRcIiAvPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxVc2VyTWVudSB1c2VyPXt0aGlzLnByb3BzLnVzZXJ9IC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdFVzZXJNZW51KHN0YXRlKSB7XG4gIHJldHVybiB7dXNlcjogc3RhdGUuYXV0aC51c2VyfTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBhY3RVc2VyTmF2IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc2hvd1VzZXJNZW51KCkge1xuICAgIGRyb3Bkb3duLnNob3dDb25uZWN0ZWQoJ3VzZXItbWVudScsIGNvbm5lY3Qoc2VsZWN0VXNlck1lbnUpKFVzZXJNZW51KSk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXt0aGlzLnNob3dVc2VyTWVudX0+XG4gICAgICA8QXZhdGFyIHVzZXI9e3RoaXMucHJvcHMudXNlcn0gc2l6ZT1cIjY0XCIgLz5cbiAgICA8L2J1dHRvbj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRDbGFzcygpIHtcbiAgICBsZXQgc3RhdHVzID0gJyc7XG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX2Jhbm5lZCkge1xuICAgICAgc3RhdHVzID0gJ2Jhbm5lZCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnN0YXR1cy5pc19oaWRkZW4pIHtcbiAgICAgIHN0YXR1cyA9ICdvZmZsaW5lJztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX29ubGluZV9oaWRkZW4pIHtcbiAgICAgIHN0YXR1cyA9ICdvbmxpbmUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zdGF0dXMuaXNfb2ZmbGluZV9oaWRkZW4pIHtcbiAgICAgIHN0YXR1cyA9ICdvZmZsaW5lJztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX29ubGluZSkge1xuICAgICAgc3RhdHVzID0gJ29ubGluZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnN0YXR1cy5pc19vZmZsaW5lKSB7XG4gICAgICBzdGF0dXMgPSAnb2ZmbGluZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICd1c2VyLXN0YXR1cyB1c2VyLScgKyBzdGF0dXM7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e3RoaXMuZ2V0Q2xhc3MoKX0+XG4gICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICA8L3NwYW4+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YXR1c0ljb24gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRJY29uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnN0YXR1cy5pc19iYW5uZWQpIHtcbiAgICAgIHJldHVybiAncmVtb3ZlX2NpcmNsZV9vdXRsaW5lJztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX2hpZGRlbikge1xuICAgICAgcmV0dXJuICdoZWxwX291dGxpbmUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zdGF0dXMuaXNfb25saW5lX2hpZGRlbikge1xuICAgICAgcmV0dXJuICdsYWJlbCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnN0YXR1cy5pc19vZmZsaW5lX2hpZGRlbikge1xuICAgICAgcmV0dXJuICdsYWJlbF9vdXRsaW5lJztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX29ubGluZSkge1xuICAgICAgcmV0dXJuICdsZW5zJztcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX29mZmxpbmUpIHtcbiAgICAgIHJldHVybiAncGFub3JhbWFfZmlzaF9leWUnO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb24gc3RhdHVzLWljb25cIj5cbiAgICAgIHt0aGlzLmdldEljb24oKX1cbiAgICA8L3NwYW4+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cblxufVxuXG5leHBvcnQgY2xhc3MgU3RhdHVzTGFiZWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRIZWxwKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnN0YXR1cy5pc19iYW5uZWQpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLnN0YXR1cy5iYW5uZWRfdW50aWwpIHtcbiAgICAgICAgcmV0dXJuIGludGVycG9sYXRlKGdldHRleHQoXCIlKHVzZXJuYW1lKXMgaXMgYmFubmVkIHVudGlsICUoYmFuX2V4cGlyZXMpc1wiKSwge1xuICAgICAgICAgIHVzZXJuYW1lOiB0aGlzLnByb3BzLnVzZXIudXNlcm5hbWUsXG4gICAgICAgICAgYmFuX2V4cGlyZXM6IHRoaXMucHJvcHMuc3RhdHVzLmJhbm5lZF91bnRpbC5mb3JtYXQoJ0xMLCBMVCcpXG4gICAgICAgIH0sIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGludGVycG9sYXRlKGdldHRleHQoXCIlKHVzZXJuYW1lKXMgaXMgYmFubmVkXCIpLCB7XG4gICAgICAgICAgdXNlcm5hbWU6IHRoaXMucHJvcHMudXNlci51c2VybmFtZVxuICAgICAgICB9LCB0cnVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX2hpZGRlbikge1xuICAgICAgcmV0dXJuIGludGVycG9sYXRlKGdldHRleHQoXCIlKHVzZXJuYW1lKXMgaXMgaGlkaW5nIHByZXNlbmNlXCIpLCB7XG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLnByb3BzLnVzZXIudXNlcm5hbWVcbiAgICAgIH0sIHRydWUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zdGF0dXMuaXNfb25saW5lX2hpZGRlbikge1xuICAgICAgcmV0dXJuIGludGVycG9sYXRlKGdldHRleHQoXCIlKHVzZXJuYW1lKXMgaXMgb25saW5lIChoaWRkZW4pXCIpLCB7XG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLnByb3BzLnVzZXIudXNlcm5hbWVcbiAgICAgIH0sIHRydWUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zdGF0dXMuaXNfb2ZmbGluZV9oaWRkZW4pIHtcbiAgICAgIHJldHVybiBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiJSh1c2VybmFtZSlzIHdhcyBsYXN0IHNlZW4gJShsYXN0X2NsaWNrKXMgKGhpZGRlbilcIiksIHtcbiAgICAgICAgdXNlcm5hbWU6IHRoaXMucHJvcHMudXNlci51c2VybmFtZSxcbiAgICAgICAgbGFzdF9jbGljazogdGhpcy5wcm9wcy5zdGF0dXMubGFzdF9jbGljay5mcm9tTm93KClcbiAgICAgIH0sIHRydWUpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zdGF0dXMuaXNfb25saW5lKSB7XG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUoZ2V0dGV4dChcIiUodXNlcm5hbWUpcyBpcyBvbmxpbmVcIiksIHtcbiAgICAgICAgdXNlcm5hbWU6IHRoaXMucHJvcHMudXNlci51c2VybmFtZVxuICAgICAgfSwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnN0YXR1cy5pc19vZmZsaW5lKSB7XG4gICAgICByZXR1cm4gaW50ZXJwb2xhdGUoZ2V0dGV4dChcIiUodXNlcm5hbWUpcyB3YXMgbGFzdCBzZWVuICUobGFzdF9jbGljaylzXCIpLCB7XG4gICAgICAgIHVzZXJuYW1lOiB0aGlzLnByb3BzLnVzZXIudXNlcm5hbWUsXG4gICAgICAgIGxhc3RfY2xpY2s6IHRoaXMucHJvcHMuc3RhdHVzLmxhc3RfY2xpY2suZnJvbU5vdygpXG4gICAgICB9LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXRMYWJlbCgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0dXMuaXNfYmFubmVkKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIkJhbm5lZFwiKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX2hpZGRlbikge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCJIaWRkZW5cIik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnN0YXR1cy5pc19vbmxpbmVfaGlkZGVuKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIk9ubGluZSAoaGlkZGVuKVwiKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuc3RhdHVzLmlzX29mZmxpbmVfaGlkZGVuKSB7XG4gICAgICByZXR1cm4gZ2V0dGV4dChcIk9mZmxpbmUgKGhpZGRlbilcIik7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLnN0YXR1cy5pc19vbmxpbmUpIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiT25saW5lXCIpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zdGF0dXMuaXNfb2ZmbGluZSkge1xuICAgICAgcmV0dXJuIGdldHRleHQoXCJPZmZsaW5lXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWUgfHwgXCJzdGF0dXMtbGFiZWxcIn1cbiAgICAgICAgICAgICAgICAgdGl0bGU9e3RoaXMuZ2V0SGVscCgpfT5cbiAgICAgIHt0aGlzLmdldExhYmVsKCl9XG4gICAgPC9zcGFuPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBBdmF0YXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYXZhdGFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgKiBhcyByYW5kb20gZnJvbSAnbWlzYWdvL3V0aWxzL3JhbmRvbSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlclVzZXJBdmF0YXIoaXRlbSkge1xuICAgIGlmIChpdGVtLmNoYW5nZWRfYnkpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8YSBocmVmPXtpdGVtLmNoYW5nZWRfYnkuYWJzb2x1dGVfdXJsfSBjbGFzc05hbWU9XCJ1c2VyLWF2YXRhclwiPlxuICAgICAgICA8QXZhdGFyIHVzZXI9e2l0ZW0uY2hhbmdlZF9ieX0gc2l6ZT1cIjEwMFwiIC8+XG4gICAgICA8L2E+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT1cInVzZXItYXZhdGFyXCI+XG4gICAgICAgIDxBdmF0YXIgc2l6ZT1cIjEwMFwiIC8+XG4gICAgICA8L3NwYW4+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9XG4gIH1cblxuICByZW5kZXJVc2VybmFtZShpdGVtKSB7XG4gICAgaWYgKGl0ZW0uY2hhbmdlZF9ieSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxhIGhyZWY9e2l0ZW0uY2hhbmdlZF9ieS5hYnNvbHV0ZV91cmx9IGNsYXNzTmFtZT1cIml0ZW0tdGl0bGVcIj5cbiAgICAgICAge2l0ZW0uY2hhbmdlZF9ieS51c2VybmFtZX1cbiAgICAgIDwvYT47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPVwiaXRlbS10aXRsZVwiPlxuICAgICAgICB7aXRlbS5jaGFuZ2VkX2J5X3VzZXJuYW1lfVxuICAgICAgPC9zcGFuPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfVxuICB9XG5cbiAgcmVuZGVySGlzdG9yeSgpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwidXNlcm5hbWUtaGlzdG9yeSB1aS1yZWFkeVwiPlxuICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAge3RoaXMucHJvcHMuY2hhbmdlcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gPGxpIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXAtaXRlbVwiIGtleT17aXRlbS5pZH0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXJuYW1lLWNoYW5nZS1hdmF0YXJcIj5cbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyVXNlckF2YXRhcihpdGVtKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2VybmFtZS1jaGFuZ2UtYXV0aG9yXCI+XG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlclVzZXJuYW1lKGl0ZW0pfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXJuYW1lLWNoYW5nZVwiPlxuICAgICAgICAgICAgICB7aXRlbS5vbGRfdXNlcm5hbWV9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAgICAgICAgICBhcnJvd19mb3J3YXJkXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAge2l0ZW0ubmV3X3VzZXJuYW1lfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXJuYW1lLWNoYW5nZS1kYXRlXCI+XG4gICAgICAgICAgICAgIDxhYmJyIHRpdGxlPXtpdGVtLmNoYW5nZWRfb24uZm9ybWF0KCdMTEwnKX0+XG4gICAgICAgICAgICAgICAge2l0ZW0uY2hhbmdlZF9vbi5mcm9tTm93KCl9XG4gICAgICAgICAgICAgIDwvYWJicj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+O1xuICAgICAgICB9KX1cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cblxuICBnZXRFbXB0eU1lc3NhZ2UoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuZW1wdHlNZXNzYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5lbXB0eU1lc3NhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBnZXR0ZXh0KFwiTm8gbmFtZSBjaGFuZ2VzIGhhdmUgYmVlbiByZWNvcmRlZCBmb3IgeW91ciBhY2NvdW50LlwiKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJFbXB0eUhpc3RvcnkoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInVzZXJuYW1lLWhpc3RvcnkgdWktcmVhZHlcIj5cbiAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWdyb3VwXCI+XG4gICAgICAgIDxsaSBjbGFzc05hbWU9XCJsaXN0LWdyb3VwLWl0ZW0gZW1wdHktbWVzc2FnZVwiPlxuICAgICAgICAgIHt0aGlzLmdldEVtcHR5TWVzc2FnZSgpfVxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxuXG4gIHJlbmRlckhpc3RvcnlQcmV2aWV3KCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJ1c2VybmFtZS1oaXN0b3J5IHVpLXByZXZpZXdcIj5cbiAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LWdyb3VwXCI+XG4gICAgICAgIHtyYW5kb20ucmFuZ2UoMywgNSkubWFwKChpKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIDxsaSBjbGFzc05hbWU9XCJsaXN0LWdyb3VwLWl0ZW1cIiBrZXk9e2l9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2VybmFtZS1jaGFuZ2UtYXZhdGFyXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInVzZXItYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgPEF2YXRhciBzaXplPVwiMTAwXCIgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXJuYW1lLWNoYW5nZS1hdXRob3JcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidWktcHJldmlldy10ZXh0XCIgc3R5bGU9e3t3aWR0aDogcmFuZG9tLmludCgzMCwgMTAwKSArIFwicHhcIn19PiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2VybmFtZS1jaGFuZ2VcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidWktcHJldmlldy10ZXh0XCIgc3R5bGU9e3t3aWR0aDogcmFuZG9tLmludCgzMCwgNTApICsgXCJweFwifX0+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICAgICAgYXJyb3dfZm9yd2FyZFxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInVpLXByZXZpZXctdGV4dFwiIHN0eWxlPXt7d2lkdGg6IHJhbmRvbS5pbnQoMzAsIDUwKSArIFwicHhcIn19PiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2VybmFtZS1jaGFuZ2UtZGF0ZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ1aS1wcmV2aWV3LXRleHRcIiBzdHlsZT17e3dpZHRoOiByYW5kb20uaW50KDUwLCAxMDApICsgXCJweFwifX0+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9saT47XG4gICAgICAgIH0pfVxuICAgICAgPC91bD5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pc0xvYWRlZCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuY2hhbmdlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVySGlzdG9yeSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyRW1wdHlIaXN0b3J5KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbmRlckhpc3RvcnlQcmV2aWV3KCk7XG4gICAgfVxuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVc2VyQ2FyZCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy91c2Vycy1saXN0L3VzZXItY2FyZCcgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgVXNlclByZXZpZXcgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlcnMtbGlzdC91c2VyLXByZXZpZXcnIC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IGJhdGNoIGZyb20gJ21pc2Fnby91dGlscy9iYXRjaCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldFBhZ2VyKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnBhZ2VzID4gMSkge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxQYWdlciB7Li4udGhpcy5wcm9wc30gLz5cbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5jbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiBcInVzZXJzLWNhcmRzLWxpc3QgXCIgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSArIFwiIHVpLXJlYWR5XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcInVzZXJzLWNhcmRzLWxpc3QgdWktcmVhZHlcIjtcbiAgICB9XG4gIH1cblxuICBnZXRDb2xDbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuIFwiY29sLW1kLVwiICsgKDEyIC8gdGhpcy5wcm9wcy5jb2xzKTtcbiAgfVxuXG4gIGdldEJvZHkoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuaXNMb2FkZWQpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiBiYXRjaCh0aGlzLnByb3BzLnVzZXJzLCB0aGlzLnByb3BzLmNvbHMpLm1hcCgocm93LCByKSA9PiB7XG4gICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInJvd1wiIGtleT17cn0+XG4gICAgICAgICAge3Jvdy5tYXAoKHVzZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRDb2xDbGFzc05hbWUoKX0ga2V5PXt1c2VyLmlkfT5cbiAgICAgICAgICAgICAgPFVzZXJDYXJkIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93U3RhdHVzPXt0aGlzLnByb3BzLnNob3dTdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93UmFuaz17dGhpcy5wcm9wcy5zaG93UmFua30gLz5cbiAgICAgICAgICAgIDwvZGl2PjtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9kaXY+O1xuICAgICAgfSk7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICBsZXQgcm93ID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucHJvcHMuY29sczsgaSArKykge1xuICAgICAgICByb3cucHVzaChpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicm93XCI+XG4gICAgICAgIHtyb3cubWFwKChpKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldENvbENsYXNzTmFtZSgpfSBrZXk9e2l9PlxuICAgICAgICAgICAgPFVzZXJQcmV2aWV3IHNob3dTdGF0dXM9e3RoaXMucHJvcHMuc2hvd1N0YXR1c30gLz5cbiAgICAgICAgICA8L2Rpdj47XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInVzZXJzLWNhcmRzLWxpc3QgdWktcmVhZHlcIj5cbiAgICAgIHt0aGlzLmdldEJvZHkoKX1cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQXZhdGFyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2F2YXRhcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFN0YXR1cywgeyBTdGF0dXNJY29uLCBTdGF0dXNMYWJlbCB9IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXItc3RhdHVzJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnVzZXIucmFuay5jc3NfY2xhc3MpIHtcbiAgICAgIHJldHVybiAndXNlci1jYXJkIHVzZXItY2FyZC0nICsgdGhpcy5wcm9wcy51c2VyLnJhbmsuY3NzX2NsYXNzICsgJyB1aS1yZWFkeSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAndXNlci1jYXJkIHVpLXJlYWR5JztcbiAgICB9XG4gIH1cblxuICBnZXRVc2VyU3RhdHVzKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dTdGF0dXMpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLnVzZXIuc3RhdHVzKSB7XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgICAgcmV0dXJuIDxTdGF0dXMgdXNlcj17dGhpcy5wcm9wcy51c2VyfSBzdGF0dXM9e3RoaXMucHJvcHMudXNlci5zdGF0dXN9PlxuICAgICAgICAgIDxTdGF0dXNJY29uIHVzZXI9e3RoaXMucHJvcHMudXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9e3RoaXMucHJvcHMudXNlci5zdGF0dXN9IC8+XG4gICAgICAgICAgPFN0YXR1c0xhYmVsIHVzZXI9e3RoaXMucHJvcHMudXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPXt0aGlzLnByb3BzLnVzZXIuc3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzdGF0dXMtbGFiZWxcIiAvPlxuICAgICAgICA8L1N0YXR1cz47XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJ1c2VyLXN0YXR1c1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInN0YXR1cy1pY29uIHVpLXByZXZpZXdcIj5cbiAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzdGF0dXMtbGFiZWwgdWktcHJldmlld1wiPlxuICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+O1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRSYW5rTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zaG93UmFuaykge1xuICAgICAgaWYgKHRoaXMucHJvcHMudXNlci5yYW5rLmlzX3RhYikge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8YSBocmVmPXt0aGlzLnByb3BzLnVzZXIucmFuay5hYnNvbHV0ZV91cmx9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpdGVtLXRpdGxlIHJhbmstbmFtZVwiPlxuICAgICAgICAgIHt0aGlzLnByb3BzLnVzZXIucmFuay5uYW1lfVxuICAgICAgICA8L2E+O1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPVwiaXRlbS10aXRsZSByYW5rLW5hbWVcIj5cbiAgICAgICAgICB7dGhpcy5wcm9wcy51c2VyLnJhbmsubmFtZX1cbiAgICAgICAgPC9zcGFuPjtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlclRpdGxlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnVzZXIudGl0bGUpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJ1c2VyLXRpdGxlXCI+e3RoaXMucHJvcHMudXNlci50aXRsZX08L3NwYW4+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlckpvaW5lZE9uKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICBsZXQgdGl0bGUgPSBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiSm9pbmVkIG9uICUoam9pbmVkX29uKXNcIiksIHtcbiAgICAgICdqb2luZWRfb24nOiB0aGlzLnByb3BzLnVzZXIuam9pbmVkX29uLmZvcm1hdCgnTEwsIExUJylcbiAgICB9LCB0cnVlKTtcblxuICAgIGxldCBhZ2UgPSBpbnRlcnBvbGF0ZShnZXR0ZXh0KFwiSm9pbmVkICUoam9pbmVkX29uKXNcIiksIHtcbiAgICAgICdqb2luZWRfb24nOiB0aGlzLnByb3BzLnVzZXIuam9pbmVkX29uLmZyb21Ob3coKVxuICAgIH0sIHRydWUpO1xuXG4gICAgcmV0dXJuIDxzcGFuIGNsYXNzTmFtZT1cInVzZXItam9pbmVkLW9uXCIgdGl0bGU9e3RpdGxlfT5cbiAgICAgIHthZ2V9XG4gICAgPC9zcGFuPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e3RoaXMuZ2V0Q2xhc3NOYW1lKCl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2VyLWNhcmQtYmctaW1hZ2VcIj5cbiAgICAgICAgPEF2YXRhciB1c2VyPXt0aGlzLnByb3BzLnVzZXJ9IHNpemU9XCI0MDBcIiBjbGFzc05hbWU9XCJiZy1pbWFnZVwiIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2VyLWNhcmQtYmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXItZGV0YWlsc1wiPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXItYXZhdGFyXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9e3RoaXMucHJvcHMudXNlci5hYnNvbHV0ZV91cmx9PlxuICAgICAgICAgICAgICAgIDxBdmF0YXIgdXNlcj17dGhpcy5wcm9wcy51c2VyfSBzaXplPVwiNDAwXCIgLz5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxoNCBjbGFzc05hbWU9XCJ1c2VyLW5hbWVcIj5cbiAgICAgICAgICAgICAgPGEgaHJlZj17dGhpcy5wcm9wcy51c2VyLmFic29sdXRlX3VybH0gY2xhc3NOYW1lPVwiaXRlbS10aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt0aGlzLnByb3BzLnVzZXIudXNlcm5hbWV9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvaDQ+XG5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInVzZXItc3Vic2NyaXB0XCI+XG4gICAgICAgICAgICAgIHt0aGlzLmdldFVzZXJTdGF0dXMoKX1cbiAgICAgICAgICAgICAge3RoaXMuZ2V0UmFua05hbWUoKX1cbiAgICAgICAgICAgICAge3RoaXMuZ2V0VXNlclRpdGxlKCl9XG4gICAgICAgICAgICAgIHt0aGlzLmdldFVzZXJKb2luZWRPbigpfVxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2VyLWNhcmQtc3RhdHNcIj5cblxuICAgICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtdW5zdHlsZWRcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cInVzZXItcG9zdHMtY291bnRcIj5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt0aGlzLnByb3BzLnVzZXIucG9zdHN9PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPntnZXR0ZXh0KFwicG9zdHNcIil9PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cInVzZXItdGhyZWFkcy1jb3VudFwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+e3RoaXMucHJvcHMudXNlci50aHJlYWRzfTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDxzbWFsbD57Z2V0dGV4dChcInRocmVhZHNcIil9PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT1cInVzZXItZm9sbG93ZXJzLWNvdW50XCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz57dGhpcy5wcm9wcy51c2VyLmZvbGxvd2Vyc308L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e2dldHRleHQoXCJmb2xsb3dlcnNcIil9PC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQXZhdGFyIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2F2YXRhcic7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0ICogYXMgcmFuZG9tIGZyb20gJ21pc2Fnby91dGlscy9yYW5kb20nOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBnZXRVc2VyU3RhdHVzKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnNob3dTdGF0dXMpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJ1c2VyLXN0YXR1c1wiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzdGF0dXMtaWNvbiB1aS1wcmV2aWV3XCI+XG4gICAgICAgICAgJm5ic3A7XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3RhdHVzLWxhYmVsIHVpLXByZXZpZXdcIj5cbiAgICAgICAgICAmbmJzcDtcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPSd1c2VyLWNhcmQgdWktcHJldmlldyc+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXItY2FyZC1iZy1pbWFnZVwiPlxuICAgICAgICA8QXZhdGFyIHNpemU9XCI0MDBcIiBjbGFzc05hbWU9XCJiZy1pbWFnZVwiIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1c2VyLWNhcmQtYmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXItZGV0YWlsc1wiPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVzZXItYXZhdGFyXCI+XG4gICAgICAgICAgICAgIDxBdmF0YXIgc2l6ZT1cIjQwMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cInVzZXItbmFtZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpdGVtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidWktcHJldmlldy10ZXh0XCIgc3R5bGU9e3t3aWR0aDogcmFuZG9tLmludCg2MCwgMTUwKSArIFwicHhcIn19PiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9oND5cblxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidXNlci1zdWJzY3JpcHRcIj5cblxuICAgICAgICAgICAgICB7dGhpcy5nZXRVc2VyU3RhdHVzKCl9XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInVzZXItam9pbmVkLW9uXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidWktcHJldmlldy10ZXh0XCIgc3R5bGU9e3t3aWR0aDogcmFuZG9tLmludCgzMCwgNTApICsgXCJweFwifX0+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDwvcD5cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXNlci1jYXJkLXN0YXRzXCI+XG5cbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJsaXN0LXVuc3R5bGVkXCI+XG4gICAgICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJ1c2VyLXBvc3RzLWNvdW50XCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInVpLXByZXZpZXctdGV4dFwiPiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e2dldHRleHQoXCJwb3N0c1wiKX08L3NtYWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPVwidXNlci10aHJlYWRzLWNvdW50XCI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInVpLXByZXZpZXctdGV4dFwiPiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c21hbGw+e2dldHRleHQoXCJ0aHJlYWRzXCIpfTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzc05hbWU9XCJ1c2VyLWZvbGxvd2Vycy1jb3VudFwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ1aS1wcmV2aWV3LXRleHRcIj4mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgPHNtYWxsPntnZXR0ZXh0KFwiZm9sbG93ZXJzXCIpfTwvc21hbGw+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldEVtcHR5TWVzc2FnZSgpIHtcbiAgICByZXR1cm4gaW50ZXJwb2xhdGUoXG4gICAgICBnZXR0ZXh0KFwiTm8gdXNlcnMgaGF2ZSBwb3N0ZWQgYW55IG5ldyBtZXNzYWdlcyBkdXJpbmcgbGFzdCAlKGRheXMpcyBkYXlzLlwiKSxcbiAgICAgIHsnZGF5cyc6IHRoaXMucHJvcHMudHJhY2tlZFBlcmlvZH0sIHRydWUpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJhY3RpdmUtcG9zdGVycy1saXN0XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJsZWFkXCI+XG4gICAgICAgICAge3RoaXMuZ2V0RW1wdHlNZXNzYWdlKCl9XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBBdmF0YXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYXZhdGFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgU3RhdHVzLCB7IFN0YXR1c0ljb24sIFN0YXR1c0xhYmVsIH0gZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlci1zdGF0dXMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnJhbmsuY3NzX2NsYXNzKSB7XG4gICAgICByZXR1cm4gXCJsaXN0LWdyb3VwLWl0ZW0gbGlzdC1ncm91cC1yYW5rLVwiICsgdGhpcy5wcm9wcy5yYW5rLmNzc19jbGFzcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwibGlzdC1ncm91cC1pdGVtXCI7XG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlclN0YXR1cygpIHtcbiAgICBpZiAodGhpcy5wcm9wcy51c2VyLnN0YXR1cykge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgcmV0dXJuIDxTdGF0dXMgdXNlcj17dGhpcy5wcm9wcy51c2VyfSBzdGF0dXM9e3RoaXMucHJvcHMudXNlci5zdGF0dXN9PlxuICAgICAgICA8U3RhdHVzSWNvbiB1c2VyPXt0aGlzLnByb3BzLnVzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cz17dGhpcy5wcm9wcy51c2VyLnN0YXR1c30gLz5cbiAgICAgICAgPFN0YXR1c0xhYmVsIHVzZXI9e3RoaXMucHJvcHMudXNlcn1cbiAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz17dGhpcy5wcm9wcy51c2VyLnN0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN0YXR1cy1sYWJlbCBoaWRkZW4teHMgaGlkZGVuLXNtXCIgLz5cbiAgICAgIDwvU3RhdHVzPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJ1c2VyLXN0YXR1c1wiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzdGF0dXMtaWNvbiB1aS1wcmV2aWV3XCI+XG4gICAgICAgICAgJm5ic3A7XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3RhdHVzLWxhYmVsIHVpLXByZXZpZXcgaGlkZGVuLXhzIGhpZGRlbi1zbVwiPlxuICAgICAgICAgICZuYnNwO1xuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9XG4gIH1cblxuICBnZXRSYW5rTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5yYW5rLmlzX3RhYikge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgbGV0IHJhbmtVcmwgPSBtaXNhZ28uZ2V0KCdVU0VSU19MSVNUX1VSTCcpICsgdGhpcy5wcm9wcy5yYW5rLnNsdWcgKyAnLyc7XG4gICAgICByZXR1cm4gPExpbmsgdG89e3JhbmtVcmx9IGNsYXNzTmFtZT1cIml0ZW0tdGl0bGUgcmFuay1uYW1lXCI+XG4gICAgICAgIHt0aGlzLnByb3BzLnJhbmsubmFtZX1cbiAgICAgIDwvTGluaz47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPVwiaXRlbS10aXRsZSByYW5rLW5hbWVcIj5cbiAgICAgICAge3RoaXMucHJvcHMucmFuay5uYW1lfVxuICAgICAgPC9zcGFuPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfVxuICB9XG5cbiAgZ2V0VXNlclRpdGxlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnVzZXIudGl0bGUpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJ1c2VyLXRpdGxlIGhpZGRlbi14cyBoaWRkZW4tc21cIj5cbiAgICAgICAge3RoaXMucHJvcHMudXNlci50aXRsZX1cbiAgICAgIDwvc3Bhbj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8bGkgY2xhc3NOYW1lPXt0aGlzLmdldENsYXNzTmFtZSgpfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFuay11c2VyLWF2YXRhclwiPlxuICAgICAgICA8YSBocmVmPXt0aGlzLnByb3BzLnVzZXIuYWJzb2x1dGVfdXJsfT5cbiAgICAgICAgICA8QXZhdGFyIHVzZXI9e3RoaXMucHJvcHMudXNlcn0gc2l6ZT1cIjUwXCIgLz5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFuay11c2VyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXNlci1uYW1lXCI+XG4gICAgICAgICAgPGEgaHJlZj17dGhpcy5wcm9wcy51c2VyLmFic29sdXRlX3VybH0gY2xhc3NOYW1lPVwiaXRlbS10aXRsZVwiPlxuICAgICAgICAgICAge3RoaXMucHJvcHMudXNlci51c2VybmFtZX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7dGhpcy5nZXRVc2VyU3RhdHVzKCl9XG4gICAgICAgIHt0aGlzLmdldFJhbmtOYW1lKCl9XG4gICAgICAgIHt0aGlzLmdldFVzZXJUaXRsZSgpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFuay1wb3NpdGlvblwiPlxuICAgICAgICA8c3Ryb25nPiN7dGhpcy5wcm9wcy5jb3VudGVyfTwvc3Ryb25nPlxuICAgICAgICA8c21hbGw+e2dldHRleHQoXCJSYW5rXCIpfTwvc21hbGw+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYW5rLXBvc3RzLWNvdW50ZWRcIj5cbiAgICAgICAgPHN0cm9uZz57dGhpcy5wcm9wcy51c2VyLm1ldGEuc2NvcmV9PC9zdHJvbmc+XG4gICAgICAgIDxzbWFsbD57Z2V0dGV4dChcIlJhbmtlZCBwb3N0c1wiKX08L3NtYWxsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFuay1wb3N0cy10b3RhbFwiPlxuICAgICAgICA8c3Ryb25nPnt0aGlzLnByb3BzLnVzZXIucG9zdHN9PC9zdHJvbmc+XG4gICAgICAgIDxzbWFsbD57Z2V0dGV4dChcIlRvdGFsIHBvc3RzXCIpfTwvc21hbGw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBBdmF0YXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvYXZhdGFyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgKiBhcyByYW5kb20gZnJvbSAnbWlzYWdvL3V0aWxzL3JhbmRvbSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYWN0aXZlLXBvc3RlcnMtbGlzdFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwibGVhZCB1aS1wcmV2aWV3LXBhcmFncmFwaFwiPlxuICAgICAgICAgIHtyYW5kb20ucmFuZ2UoMywgNCkubWFwKChpKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gPHNwYW4ga2V5PXtpfSBjbGFzc05hbWU9XCJ1aS1wcmV2aWV3LXRleHRcIiBzdHlsZT17e3dpZHRoOiByYW5kb20uaW50KDUwLCAxMjApICsgXCJweFwifX0+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgIH0pfVxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhY3RpdmUtcG9zdGVycyB1aS1wcmV2aWV3XCI+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAgICAgIHtyYW5kb20ucmFuZ2UoNSwgMTApLm1hcCgoaSwgY291bnRlcikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gPGxpIGtleT17aX0gY2xhc3NOYW1lPVwibGlzdC1ncm91cC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYW5rLXVzZXItYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPEF2YXRhciBzaXplPVwiNTBcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYW5rLXVzZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXNlci1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIml0ZW0tdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ1aS1wcmV2aWV3LXRleHRcIiBzdHlsZT17e3dpZHRoOiByYW5kb20uaW50KDMwLCA4MCkgKyBcInB4XCJ9fT4mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ1c2VyLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzdGF0dXMtaWNvbiB1aS1wcmV2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3RhdHVzLWxhYmVsIHVpLXByZXZpZXcgaGlkZGVuLXhzIGhpZGRlbi1zbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyYW5rLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidWktcHJldmlldy10ZXh0XCIgc3R5bGU9e3t3aWR0aDogcmFuZG9tLmludCgzMCwgNTApICsgXCJweFwifX0+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidXNlci10aXRsZSBoaWRkZW4teHMgaGlkZGVuLXNtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInVpLXByZXZpZXctdGV4dFwiIHN0eWxlPXt7d2lkdGg6IHJhbmRvbS5pbnQoMzAsIDUwKSArIFwicHhcIn19PiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFuay1wb3NpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidWktcHJldmlldy10ZXh0XCIgc3R5bGU9e3t3aWR0aDogXCIzMHB4XCJ9fT4mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD57Z2V0dGV4dChcIlJhbmtcIil9PC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFuay1wb3N0cy1jb3VudGVkXCI+XG4gICAgICAgICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ1aS1wcmV2aWV3LXRleHRcIiBzdHlsZT17e3dpZHRoOiBcIjMwcHhcIn19PiZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPntnZXR0ZXh0KFwiUmFua2VkIHBvc3RzXCIpfTwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJhbmstcG9zdHMtdG90YWxcIj5cbiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInVpLXByZXZpZXctdGV4dFwiIHN0eWxlPXt7d2lkdGg6IFwiMzBweFwifX0+Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+e2dldHRleHQoXCJUb3RhbCBwb3N0c1wiKX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPjtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IExpc3RJdGVtIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJzL2FjdGl2ZS1wb3N0ZXJzL2xpc3QtaXRlbSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldExlYWRNZXNzYWdlKCkge1xuICAgIGxldCBtZXNzYWdlID0gbmdldHRleHQoXG4gICAgICAgIFwiJShwb3N0ZXJzKXMgbW9zdCBhY3RpdmUgcG9zdGVyIGZyb20gbGFzdCAlKGRheXMpcyBkYXlzLlwiLFxuICAgICAgICBcIiUocG9zdGVycylzIG1vc3QgYWN0aXZlIHBvc3RlcnMgZnJvbSBsYXN0ICUoZGF5cylzIGRheXMuXCIsXG4gICAgICAgIHRoaXMucHJvcHMuY291bnQpO1xuXG4gICAgcmV0dXJuIGludGVycG9sYXRlKG1lc3NhZ2UsIHtcbiAgICAgIHBvc3RlcnM6IHRoaXMucHJvcHMuY291bnQsXG4gICAgICBkYXlzOiB0aGlzLnByb3BzLnRyYWNrZWRQZXJpb2RcbiAgICB9LCB0cnVlKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwiYWN0aXZlLXBvc3RlcnMtbGlzdFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250YWluZXJcIj5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwibGVhZFwiPlxuICAgICAgICAgIHt0aGlzLmdldExlYWRNZXNzYWdlKCl9XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFjdGl2ZS1wb3N0ZXJzIHVpLXJlYWR5XCI+XG4gICAgICAgICAgPHVsIGNsYXNzTmFtZT1cImxpc3QtZ3JvdXBcIj5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnVzZXJzLm1hcCgodXNlciwgaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gPExpc3RJdGVtIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuaz17dXNlci5yYW5rfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXI9e2kgKyAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17dXNlci5pZH0gLz47XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMaXN0RW1wdHkgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlcnMvYWN0aXZlLXBvc3RlcnMvbGlzdC1lbXB0eSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IExpc3RMb2FkaW5nIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJzL2FjdGl2ZS1wb3N0ZXJzL2xpc3QtbG9hZGluZyc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IExpc3QgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlcnMvYWN0aXZlLXBvc3RlcnMvbGlzdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnO1xuaW1wb3J0IHsgZGVoeWRyYXRlIH0gZnJvbSAnbWlzYWdvL3JlZHVjZXJzL3VzZXJzJztcbmltcG9ydCBwb2xscyBmcm9tICdtaXNhZ28vc2VydmljZXMvcG9sbHMnO1xuaW1wb3J0IHN0b3JlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zdG9yZSc7XG5pbXBvcnQgdGl0bGUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3BhZ2UtdGl0bGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgaWYgKG1pc2Fnby5oYXMoJ1VTRVJTJykpIHtcbiAgICAgIHRoaXMuaW5pdFdpdGhQcmVsb2FkZWREYXRhKG1pc2Fnby5wb3AoJ1VTRVJTJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRXaXRob3V0UHJlbG9hZGVkRGF0YSgpO1xuICAgIH1cblxuICAgIHRoaXMuc3RhcnRQb2xsaW5nKCk7XG4gIH1cblxuICBpbml0V2l0aFByZWxvYWRlZERhdGEoZGF0YSkge1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBpc0xvYWRlZDogdHJ1ZSxcblxuICAgICAgdHJhY2tlZFBlcmlvZDogZGF0YS50cmFja2VkX3BlcmlvZCxcbiAgICAgIGNvdW50OiBkYXRhLmNvdW50XG4gICAgfTtcblxuICAgIHN0b3JlLmRpc3BhdGNoKGRlaHlkcmF0ZShkYXRhLnJlc3VsdHMpKTtcbiAgfVxuXG4gIGluaXRXaXRob3V0UHJlbG9hZGVkRGF0YSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgaXNMb2FkZWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHN0YXJ0UG9sbGluZygpIHtcbiAgICBwb2xscy5zdGFydCh7XG4gICAgICBwb2xsOiAnYWN0aXZlLXBvc3RlcnMnLFxuICAgICAgdXJsOiBtaXNhZ28uZ2V0KCdVU0VSU19BUEknKSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbGlzdDogJ2FjdGl2ZSdcbiAgICAgIH0sXG4gICAgICBmcmVxdWVuY3k6IDkwICogMTAwMCxcbiAgICAgIHVwZGF0ZTogdGhpcy51cGRhdGVcbiAgICB9KTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgdXBkYXRlID0gKGRhdGEpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChkZWh5ZHJhdGUoZGF0YS5yZXN1bHRzKSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzTG9hZGVkOiB0cnVlLFxuXG4gICAgICB0cmFja2VkUGVyaW9kOiBkYXRhLnRyYWNrZWRfcGVyaW9kLFxuICAgICAgY291bnQ6IGRhdGEuY291bnRcbiAgICB9KTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aXRsZS5zZXQoe1xuICAgICAgdGl0bGU6IHRoaXMucHJvcHMucm91dGUuZXh0cmEubmFtZSxcbiAgICAgIHBhcmVudDogZ2V0dGV4dChcIlVzZXJzXCIpXG4gICAgfSk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBwb2xscy5zdG9wKCdhY3RpdmUtcG9zdGVycycpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmlzTG9hZGVkKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5jb3VudCA+IDApIHtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICByZXR1cm4gPExpc3QgdXNlcnM9e3RoaXMucHJvcHMudXNlcnN9XG4gICAgICAgICAgICAgICAgICAgICB0cmFja2VkUGVyaW9kPXt0aGlzLnN0YXRlLnRyYWNrZWRQZXJpb2R9XG4gICAgICAgICAgICAgICAgICAgICBjb3VudD17dGhpcy5zdGF0ZS5jb3VudH0gLz47XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIHJldHVybiA8TGlzdEVtcHR5IHRyYWNrZWRQZXJpb2Q9e3RoaXMuc3RhdGUudHJhY2tlZFBlcmlvZH0gLz47XG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8TGlzdExvYWRpbmcgLz47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH1cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5rIH0gZnJvbSAncmVhY3Qtcm91dGVyJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgTGkgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvbGknOyAvL2pzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IG1pc2FnbyBmcm9tICdtaXNhZ28vaW5kZXgnOyAvL2pzaGludCBpZ25vcmU6bGluZVxuXG4vLyBqc2hpbnQgaWdub3JlOnN0YXJ0XG5sZXQgbGlzdFVybCA9IGZ1bmN0aW9uKGJhc2VVcmwsIGxpc3QpIHtcbiAgbGV0IHVybCA9IGJhc2VVcmw7XG4gIGlmIChsaXN0LmNvbXBvbmVudCA9PT0gJ3JhbmsnKSB7XG4gICAgdXJsICs9IGxpc3Quc2x1ZztcbiAgfSBlbHNlIHtcbiAgICB1cmwgKz0gbGlzdC5jb21wb25lbnQ7XG4gIH1cbiAgcmV0dXJuIHVybCArICcvJztcbn07XG5cbmxldCBuYXZMaW5rcyA9IGZ1bmN0aW9uKGJhc2VVcmwsIGxpc3RzLCBoaWRlTmF2KSB7XG4gICAgcmV0dXJuIGxpc3RzLm1hcChmdW5jdGlvbihsaXN0KSB7XG4gICAgICBsZXQgdXJsID0gbGlzdFVybChiYXNlVXJsLCBsaXN0KTtcbiAgICAgIHJldHVybiA8TGkgcGF0aD17dXJsfVxuICAgICAgICAgICAgICAgICBrZXk9e3VybH0+XG4gICAgICAgIDxMaW5rIHRvPXt1cmx9IG9uQ2xpY2s9e2hpZGVOYXZ9PlxuICAgICAgICAgIHtsaXN0Lm5hbWV9XG4gICAgICAgIDwvTGluaz5cbiAgICAgIDwvTGk+O1xuICB9KTtcbn07XG4vLyBqc2hpbnQgaWdub3JlOmVuZFxuXG5leHBvcnQgY2xhc3MgVGFic05hdiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICAvLyBqc2hpbnQgaWdub3JlOnN0YXJ0XG4gICAgcmV0dXJuIDx1bCBjbGFzc05hbWU9XCJuYXYgbmF2LXBpbGxzXCI+XG4gICAgICB7bmF2TGlua3ModGhpcy5wcm9wcy5iYXNlVXJsLCB0aGlzLnByb3BzLmxpc3RzKX1cbiAgICA8L3VsPjtcbiAgICAvLyBqc2hpbnQgaWdub3JlOmVuZFxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wYWN0TmF2IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIC8vIGpzaGludCBpZ25vcmU6c3RhcnRcbiAgICByZXR1cm4gPHVsIGNsYXNzTmFtZT1cImRyb3Bkb3duLW1lbnVcIiByb2xlPVwibWVudVwiPlxuICAgICAge25hdkxpbmtzKHRoaXMucHJvcHMuYmFzZVVybCwgdGhpcy5wcm9wcy5saXN0cywgdGhpcy5wcm9wcy5oaWRlTmF2KX1cbiAgICA8L3VsPjtcbiAgICAvLyBqc2hpbnQgaWdub3JlOmVuZFxuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVc2Vyc0xpc3QgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlcnMtbGlzdC9yb290JyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2PlxuICAgICAgPFVzZXJzTGlzdCBpc0xvYWRlZD17ZmFsc2V9IGNvbHM9ezN9IHNob3dTdGF0dXM9e3RydWV9IC8+XG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUGFnZXIgZnJvbSAnbWlzYWdvL2NvbXBvbmVudHMvdXNlcnMvcmFuay9wYWdlcicgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgVXNlcnNMaXN0IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJzLWxpc3Qvcm9vdCcgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0UGFnZXIoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucGFnZXMgPiAxKSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPFBhZ2VyIHsuLi50aGlzLnByb3BzfSAvPlxuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICByZXR1cm4gPGRpdj5cbiAgICAgIDxVc2Vyc0xpc3QgdXNlcnM9e3RoaXMucHJvcHMudXNlcnN9XG4gICAgICAgICAgICAgICAgIHNob3dTdGF0dXM9e3RydWV9XG4gICAgICAgICAgICAgICAgIGNvbHM9ezN9XG4gICAgICAgICAgICAgICAgIGlzTG9hZGVkPXt0cnVlfSAvPlxuXG4gICAgICB7dGhpcy5nZXRQYWdlcigpfVxuICAgIDwvZGl2PjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXInOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCByZXNldFNjcm9sbCBmcm9tICdtaXNhZ28vdXRpbHMvcmVzZXQtc2Nyb2xsJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgZ2V0UHJldmlvdXNQYWdlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnByZXZpb3VzIHx8IHRoaXMucHJvcHMuZmlyc3QpIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIGxldCB1cmwgPSB0aGlzLnByb3BzLmJhc2VVcmw7XG4gICAgICBpZiAodGhpcy5wcm9wcy5wcmV2aW91cykge1xuICAgICAgICB1cmwgKz0gdGhpcy5wcm9wcy5wcmV2aW91cyArICcvJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxsaSBjbGFzc05hbWU9XCJwcmV2aW91c1wiPlxuICAgICAgICA8TGluayB0bz17dXJsfSBvbkNsaWNrPXtyZXNldFNjcm9sbH0+XG4gICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgYXJyb3dfYmFja1xuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC9saT47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXROZXh0UGFnZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5uZXh0KSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICBsZXQgdXJsID0gdGhpcy5wcm9wcy5iYXNlVXJsICsgdGhpcy5wcm9wcy5uZXh0ICsgJy8nO1xuICAgICAgcmV0dXJuIDxsaSBjbGFzc05hbWU9XCJuZXh0XCI+XG4gICAgICAgIDxMaW5rIHRvPXt1cmx9IG9uQ2xpY2s9e3Jlc2V0U2Nyb2xsfT5cbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29uXCI+XG4gICAgICAgICAgICBhcnJvd19mb3J3YXJkXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0xpbms+XG4gICAgICA8L2xpPjtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb2dlc3NCYXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8dWwgY2xhc3NOYW1lPVwicGFnZXItcHJvZ3Jlc3MtYmFyXCI+XG4gICAgICB7dGhpcy5wcm9wcy5wYWdlX3JhbmdlLm1hcCgocGFnZSkgPT4ge1xuICAgICAgICBsZXQgY2xhc3NOYW1lID0gcGFnZSA9PT0gdGhpcy5wcm9wcy5wYWdlID8gJ2FjdGl2ZScgOiBudWxsO1xuICAgICAgICBsZXQgdXJsID0gdGhpcy5wcm9wcy5iYXNlVXJsO1xuXG4gICAgICAgIGlmIChwYWdlID4gMSkge1xuICAgICAgICAgIHVybCArPSBwYWdlICsgJy8nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxsaSBrZXk9e3BhZ2V9IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgICAgICA8TGluayB0bz17dXJsfSBvbkNsaWNrPXtyZXNldFNjcm9sbH0+XG4gICAgICAgICAgICB7cGFnZX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvbGk+O1xuICAgICAgfSl9XG4gICAgPC91bD47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicGFnZXItdW5kZXJjb250ZW50XCI+XG4gICAgICA8bmF2PlxuICAgICAgICA8dWwgY2xhc3NOYW1lPVwicGFnZXJcIj5cbiAgICAgICAgICB7dGhpcy5nZXRQcmV2aW91c1BhZ2UoKX1cbiAgICAgICAgICB7dGhpcy5nZXROZXh0UGFnZSgpfVxuICAgICAgICA8L3VsPlxuICAgICAgICB7dGhpcy5nZXRQcm9nZXNzQmFyKCl9XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTGlzdCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy91c2Vycy9yYW5rL2xpc3QnIC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IExpc3RMb2FkaW5nIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJzL3JhbmsvbGlzdC1sb2FkaW5nJyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBtaXNhZ28gZnJvbSAnbWlzYWdvL2luZGV4JztcbmltcG9ydCB7IGRlaHlkcmF0ZSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy91c2Vycyc7XG5pbXBvcnQgcG9sbHMgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3BvbGxzJztcbmltcG9ydCBzdG9yZSBmcm9tICdtaXNhZ28vc2VydmljZXMvc3RvcmUnO1xuaW1wb3J0IHRpdGxlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9wYWdlLXRpdGxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIGlmIChtaXNhZ28uaGFzKCdVU0VSUycpKSB7XG4gICAgICB0aGlzLmluaXRXaXRoUHJlbG9hZGVkRGF0YShtaXNhZ28ucG9wKCdVU0VSUycpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0V2l0aG91dFByZWxvYWRlZERhdGEoKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXJ0UG9sbGluZyhwcm9wcy5wYXJhbXMucGFnZSB8fCAxKTtcbiAgfVxuXG4gIGluaXRXaXRoUHJlbG9hZGVkRGF0YShkYXRhKSB7XG4gICAgdGhpcy5zdGF0ZSA9IE9iamVjdC5hc3NpZ24oZGF0YSwge1xuICAgICAgaXNMb2FkZWQ6IHRydWVcbiAgICB9KTtcbiAgICBzdG9yZS5kaXNwYXRjaChkZWh5ZHJhdGUoZGF0YS5yZXN1bHRzKSk7XG4gIH1cblxuICBpbml0V2l0aG91dFByZWxvYWRlZERhdGEoKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGlzTG9hZGVkOiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBzdGFydFBvbGxpbmcocGFnZSkge1xuICAgIHBvbGxzLnN0YXJ0KHtcbiAgICAgIHBvbGw6ICdyYW5rLXVzZXJzJyxcbiAgICAgIHVybDogbWlzYWdvLmdldCgnVVNFUlNfQVBJJyksXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHJhbms6IHRoaXMucHJvcHMucm91dGUucmFuay5pZCxcbiAgICAgICAgcGFnZTogcGFnZVxuICAgICAgfSxcbiAgICAgIGZyZXF1ZW5jeTogOTAgKiAxMDAwLFxuICAgICAgdXBkYXRlOiB0aGlzLnVwZGF0ZVxuICAgIH0pO1xuICB9XG5cbiAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICB1cGRhdGUgPSAoZGF0YSkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKGRlaHlkcmF0ZShkYXRhLnJlc3VsdHMpKTtcblxuICAgIGRhdGEuaXNMb2FkZWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0U3RhdGUoZGF0YSk7XG4gIH07XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGl0bGUuc2V0KHtcbiAgICAgIHRpdGxlOiB0aGlzLnByb3BzLnJvdXRlLnJhbmsubmFtZSxcbiAgICAgIHBhZ2U6IHRoaXMucHJvcHMucGFyYW1zLnBhZ2UgfHwgbnVsbCxcbiAgICAgIHBhcmVudDogZ2V0dGV4dChcIlVzZXJzXCIpXG4gICAgfSk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBwb2xscy5zdG9wKCdyYW5rLXVzZXJzJyk7XG4gIH1cblxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIGlmICh0aGlzLnByb3BzLnBhcmFtcy5wYWdlICE9PSBuZXh0UHJvcHMucGFyYW1zLnBhZ2UpIHtcbiAgICAgIHRpdGxlLnNldCh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnByb3BzLnJvdXRlLnJhbmsubmFtZSxcbiAgICAgICAgcGFnZTogbmV4dFByb3BzLnBhcmFtcy5wYWdlIHx8IG51bGwsXG4gICAgICAgIHBhcmVudDogZ2V0dGV4dChcIlVzZXJzXCIpXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzTG9hZGVkOiBmYWxzZVxuICAgICAgfSk7XG5cbiAgICAgIHBvbGxzLnN0b3AoJ3JhbmstdXNlcnMnKTtcbiAgICAgIHRoaXMuc3RhcnRQb2xsaW5nKG5leHRQcm9wcy5wYXJhbXMucGFnZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnJvdXRlLnJhbmsuY3NzX2NsYXNzKSB7XG4gICAgICByZXR1cm4gJ3JhbmstdXNlcnMtbGlzdCByYW5rLXVzZXJzLScgKyB0aGlzLnByb3BzLnJvdXRlLnJhbmsuY3NzX2NsYXNzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ3JhbmstdXNlcnMtbGlzdCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmFua0Rlc2NyaXB0aW9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnJvdXRlLnJhbmsuZGVzY3JpcHRpb24pIHtcbiAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInJhbmstZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsZWFkXCIgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICBfX2h0bWw6IHRoaXMucHJvcHMucm91dGUucmFuay5kZXNjcmlwdGlvbi5odG1sXG4gICAgICAgIH19IC8+XG4gICAgICA8L2Rpdj47XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRDb21wb25lbnQoKSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuaXNMb2FkZWQpIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLmNvdW50ID4gMCkge1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICAgIGxldCBiYXNlVXJsID0gbWlzYWdvLmdldCgnVVNFUlNfTElTVF9VUkwnKSArIHRoaXMucHJvcHMucm91dGUucmFuay5zbHVnICsgJy8nO1xuICAgICAgICByZXR1cm4gPExpc3QgYmFzZVVybD17YmFzZVVybH1cbiAgICAgICAgICAgICAgICAgICAgIHVzZXJzPXt0aGlzLnByb3BzLnVzZXJzfVxuICAgICAgICAgICAgICAgICAgICAgey4uLnRoaXMuc3RhdGV9IC8+O1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgICByZXR1cm4gPHAgY2xhc3NOYW1lPVwibGVhZFwiPlxuICAgICAgICAgIHtnZXR0ZXh0KFwiVGhlcmUgYXJlIG5vIHVzZXJzIHdpdGggdGhpcyByYW5rIGF0IHRoZSBtb21lbnQuXCIpfVxuICAgICAgICA8L3A+O1xuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgICByZXR1cm4gPExpc3RMb2FkaW5nIC8+O1xuICAgICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17dGhpcy5nZXRDbGFzc05hbWUoKX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICB7dGhpcy5nZXRSYW5rRGVzY3JpcHRpb24oKX1cbiAgICAgICAge3RoaXMuZ2V0Q29tcG9uZW50KCl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgVGFic05hdiwgQ29tcGFjdE5hdiB9IGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJzL25hdnMnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBBY3RpdmVQb3N0ZXJzIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJzL2FjdGl2ZS1wb3N0ZXJzL3Jvb3QnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBSYW5rIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL3VzZXJzL3Jhbmsvcm9vdCc7XG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZHJvcGRvd246IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgdG9nZ2xlTmF2ID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlLmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJvcGRvd246IGZhbHNlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRyb3Bkb3duOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgaGlkZU5hdiA9ICgpID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGRyb3Bkb3duOiBmYWxzZVxuICAgIH0pO1xuICB9O1xuICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG4gIGdldFRvZ2dsZU5hdkNsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kcm9wZG93bikge1xuICAgICAgcmV0dXJuICdidG4gYnRuLWRlZmF1bHQgYnRuLWljb24gb3Blbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYnRuIGJ0bi1kZWZhdWx0IGJ0bi1pY29uJztcbiAgICB9XG4gIH1cblxuICBnZXRDb21wYWN0TmF2Q2xhc3NOYW1lKCkge1xuICAgIGlmICh0aGlzLnN0YXRlLmRyb3Bkb3duKSB7XG4gICAgICByZXR1cm4gJ2NvbXBhY3QtbmF2IG9wZW4nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2NvbXBhY3QtbmF2JztcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cInBhZ2UgcGFnZS11c2Vycy1saXN0c1wiPlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhZ2UtaGVhZGVyIHRhYmJlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuXG4gICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInB1bGwtbGVmdFwiPntnZXR0ZXh0KFwiVXNlcnNcIil9PC9oMT5cblxuICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1hbGlnbmVkIGJ0bi1pY29uIGJ0bi1kcm9wZG93bi10b2dnbGUgaGlkZGVuLW1kIGhpZGRlbi1sZ1wiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMudG9nZ2xlTmF2fVxuICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17dGhpcy5zdGF0ZS5kcm9wZG93biA/ICd0cnVlJyA6ICdmYWxzZSd9PlxuICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvblwiPlxuICAgICAgICAgICAgICBtZW51XG4gICAgICAgICAgICA8L2k+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFnZS10YWJzIGhpZGRlbi14cyBoaWRkZW4tc21cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuXG4gICAgICAgICAgICA8VGFic05hdiBsaXN0cz17bWlzYWdvLmdldCgnVVNFUlNfTElTVFMnKX1cbiAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw9e21pc2Fnby5nZXQoJ1VTRVJTX0xJU1RfVVJMJyl9IC8+XG5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXt0aGlzLmdldENvbXBhY3ROYXZDbGFzc05hbWUoKX0+XG5cbiAgICAgICAgPENvbXBhY3ROYXYgbGlzdHM9e21pc2Fnby5nZXQoJ1VTRVJTX0xJU1RTJyl9XG4gICAgICAgICAgICAgICAgICAgIGJhc2VVcmw9e21pc2Fnby5nZXQoJ1VTRVJTX0xJU1RfVVJMJyl9XG4gICAgICAgICAgICAgICAgICAgIGhpZGVOYXY9e3RoaXMuaGlkZU5hdn0gLz5cblxuICAgICAgPC9kaXY+XG5cbiAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVufVxuXG4gICAgPC9kaXY+O1xuICAgIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdChzdG9yZSkge1xuICByZXR1cm4ge1xuICAgICd0aWNrJzogc3RvcmUudGljay50aWNrLFxuICAgICd1c2VyJzogc3RvcmUuYXV0aC51c2VyLFxuICAgICd1c2Vycyc6IHN0b3JlLnVzZXJzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRocygpIHtcbiAgbGV0IHBhdGhzID0gW107XG5cbiAgbWlzYWdvLmdldCgnVVNFUlNfTElTVFMnKS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICBpZiAoaXRlbS5jb21wb25lbnQgPT09ICdyYW5rJykge1xuICAgICAgcGF0aHMucHVzaCh7XG4gICAgICAgIHBhdGg6IG1pc2Fnby5nZXQoJ1VTRVJTX0xJU1RfVVJMJykgKyBpdGVtLnNsdWcgKyAnLzpwYWdlLycsXG4gICAgICAgIGNvbXBvbmVudDogY29ubmVjdChzZWxlY3QpKFJhbmspLFxuICAgICAgICByYW5rOiBpdGVtXG4gICAgICB9KTtcbiAgICAgIHBhdGhzLnB1c2goe1xuICAgICAgICBwYXRoOiBtaXNhZ28uZ2V0KCdVU0VSU19MSVNUX1VSTCcpICsgaXRlbS5zbHVnICsgJy8nLFxuICAgICAgICBjb21wb25lbnQ6IGNvbm5lY3Qoc2VsZWN0KShSYW5rKSxcbiAgICAgICAgcmFuazogaXRlbVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpdGVtLmNvbXBvbmVudCA9PT0gJ2FjdGl2ZS1wb3N0ZXJzJyl7XG4gICAgICBwYXRocy5wdXNoKHtcbiAgICAgICAgcGF0aDogbWlzYWdvLmdldCgnVVNFUlNfTElTVF9VUkwnKSArIGl0ZW0uY29tcG9uZW50ICsgJy8nLFxuICAgICAgICBjb21wb25lbnQ6IGNvbm5lY3Qoc2VsZWN0KShBY3RpdmVQb3N0ZXJzKSxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGF0aHM7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGdldENsYXNzTmFtZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy52YWx1ZSkge1xuICAgICAgcmV0dXJuIFwiYnRuIGJ0bi15ZXMtbm8gYnRuLXllcy1uby1vblwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJidG4gYnRuLXllcy1ubyBidG4teWVzLW5vLW9mZlwiO1xuICAgIH1cbiAgfVxuXG4gIGdldEljb24oKSB7XG4gICAgaWYgKHRoaXMucHJvcHMudmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmljb25PbiB8fCAnY2hlY2tfYm94JztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaWNvbk9mZiB8fCAnY2hlY2tfYm94X291dGxpbmVfYmxhbmsnO1xuICAgIH1cbiAgfVxuXG4gIGdldExhYmVsKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5sYWJlbE9uIHx8IGdldHRleHQoXCJ5ZXNcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsT2ZmIHx8IGdldHRleHQoXCJub1wiKTtcbiAgICB9XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIHRvZ2dsZSA9ICgpID0+IHtcbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKHtcbiAgICAgIHRhcmdldDoge1xuICAgICAgICB2YWx1ZTogIXRoaXMucHJvcHMudmFsdWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICByZW5kZXIoKSB7XG4gICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgIHJldHVybiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMudG9nZ2xlfVxuICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17dGhpcy5nZXRDbGFzc05hbWUoKX1cbiAgICAgICAgICAgICAgICAgICBpZD17dGhpcy5wcm9wcy5pZCB8fCBudWxsfVxuICAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9e3RoaXMucHJvcHNbJ2FyaWEtZGVzY3JpYmVkYnknXSB8fCBudWxsfVxuICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkIHx8IGZhbHNlfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25cIj5cbiAgICAgICAge3RoaXMuZ2V0SWNvbigpfVxuICAgICAgPC9zcGFuPlxuICAgICAge3RoaXMuZ2V0TGFiZWwoKX1cbiAgICA8L2J1dHRvbj47XG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgfVxufSIsImltcG9ydCBPcmRlcmVkTGlzdCBmcm9tICdtaXNhZ28vdXRpbHMvb3JkZXJlZC1saXN0JztcblxuZXhwb3J0IGNsYXNzIE1pc2FnbyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2luaXRpYWxpemVycyA9IFtdO1xuICAgIHRoaXMuX2NvbnRleHQgPSB7fTtcbiAgfVxuXG4gIGFkZEluaXRpYWxpemVyKGluaXRpYWxpemVyKSB7XG4gICAgdGhpcy5faW5pdGlhbGl6ZXJzLnB1c2goe1xuICAgICAga2V5OiBpbml0aWFsaXplci5uYW1lLFxuXG4gICAgICBpdGVtOiBpbml0aWFsaXplci5pbml0aWFsaXplcixcblxuICAgICAgYWZ0ZXI6IGluaXRpYWxpemVyLmFmdGVyLFxuICAgICAgYmVmb3JlOiBpbml0aWFsaXplci5iZWZvcmVcbiAgICB9KTtcbiAgfVxuXG4gIGluaXQoY29udGV4dCkge1xuICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuXG4gICAgdmFyIGluaXRPcmRlciA9IG5ldyBPcmRlcmVkTGlzdCh0aGlzLl9pbml0aWFsaXplcnMpLm9yZGVyZWRWYWx1ZXMoKTtcbiAgICBpbml0T3JkZXIuZm9yRWFjaChpbml0aWFsaXplciA9PiB7XG4gICAgICBpbml0aWFsaXplcih0aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIGNvbnRleHQgYWNjZXNzb3JzXG4gIGhhcyhrZXkpIHtcbiAgICByZXR1cm4gISF0aGlzLl9jb250ZXh0W2tleV07XG4gIH1cblxuICBnZXQoa2V5LCBmYWxsYmFjaykge1xuICAgIGlmICh0aGlzLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29udGV4dFtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2sgfHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHBvcChrZXkpIHtcbiAgICBpZiAodGhpcy5oYXMoa2V5KSkge1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy5fY29udGV4dFtrZXldO1xuICAgICAgdGhpcy5fY29udGV4dFtrZXldID0gbnVsbDtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cblxuLy8gY3JlYXRlICBzaW5nbGV0b25cbnZhciBtaXNhZ28gPSBuZXcgTWlzYWdvKCk7XG5cbi8vIGV4cG9zZSBpdCBnbG9iYWxseVxuZ2xvYmFsLm1pc2FnbyA9IG1pc2FnbztcblxuLy8gYW5kIGV4cG9ydCBpdCBmb3IgdGVzdHMgYW5kIHN0dWZmXG5leHBvcnQgZGVmYXVsdCBtaXNhZ287XG4iLCJpbXBvcnQgeyBVUERBVEVfQVZBVEFSLCBVUERBVEVfVVNFUk5BTUUgfSBmcm9tICdtaXNhZ28vcmVkdWNlcnMvdXNlcnMnO1xuXG5leHBvcnQgdmFyIGluaXRpYWxTdGF0ZSA9IHtcbiAgc2lnbmVkSW46IGZhbHNlLFxuICBzaWduZWRPdXQ6IGZhbHNlXG59O1xuXG5leHBvcnQgY29uc3QgUEFUQ0hfVVNFUiA9ICdQQVRDSF9VU0VSJztcbmV4cG9ydCBjb25zdCBTSUdOX0lOID0gJ1NJR05fSU4nO1xuZXhwb3J0IGNvbnN0IFNJR05fT1VUID0gJ1NJR05fT1VUJztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoVXNlcihwYXRjaCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFBBVENIX1VTRVIsXG4gICAgcGF0Y2hcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25Jbih1c2VyKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogU0lHTl9JTixcbiAgICB1c2VyXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduT3V0KHNvZnQ9ZmFsc2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBTSUdOX09VVCxcbiAgICBzb2Z0XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGF1dGgoc3RhdGU9aW5pdGlhbFN0YXRlLCBhY3Rpb249bnVsbCkge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBQQVRDSF9VU0VSOlxuICAgICAgICBsZXQgbmV3U3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSk7XG4gICAgICAgIG5ld1N0YXRlLnVzZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS51c2VyLCBhY3Rpb24ucGF0Y2gpO1xuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG5cbiAgICBjYXNlIFNJR05fSU46XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgICAgc2lnbmVkSW46IGFjdGlvbi51c2VyXG4gICAgICB9KTtcblxuICAgIGNhc2UgU0lHTl9PVVQ6XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgICAgaXNBdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgICAgICAgaXNBbm9ueW1vdXM6IHRydWUsXG4gICAgICAgIHNpZ25lZE91dDogIWFjdGlvbi5zb2Z0XG4gICAgICB9KTtcblxuICAgIGNhc2UgVVBEQVRFX0FWQVRBUjpcbiAgICAgIGlmIChzdGF0ZS5pc0F1dGhlbnRpY2F0ZWQgJiYgc3RhdGUudXNlci5pZCA9PT0gYWN0aW9uLnVzZXJJZCkge1xuICAgICAgICBsZXQgbmV3U3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSk7XG4gICAgICAgIG5ld1N0YXRlLnVzZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS51c2VyLCB7XG4gICAgICAgICAgJ2F2YXRhcl9oYXNoJzogYWN0aW9uLmF2YXRhckhhc2hcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgIGNhc2UgVVBEQVRFX1VTRVJOQU1FOlxuICAgICAgaWYgKHN0YXRlLmlzQXV0aGVudGljYXRlZCAmJiBzdGF0ZS51c2VyLmlkID09PSBhY3Rpb24udXNlcklkKSB7XG4gICAgICAgIGxldCBuZXdTdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlKTtcbiAgICAgICAgbmV3U3RhdGUudXNlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnVzZXIsIHtcbiAgICAgICAgICB1c2VybmFtZTogYWN0aW9uLnVzZXJuYW1lLFxuICAgICAgICAgIHNsdWc6IGFjdGlvbi5zbHVnXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBVUERBVEVfQVZBVEFSLCBVUERBVEVfVVNFUk5BTUUsIGRlaHlkcmF0ZVN0YXR1cyB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy91c2Vycyc7XG5cbmV4cG9ydCBjb25zdCBERUhZRFJBVEVfUFJPRklMRSA9ICdERUhZRFJBVEVfUFJPRklMRSc7XG5leHBvcnQgY29uc3QgUEFUQ0hfUFJPRklMRSA9ICdQQVRDSF9QUk9GSUxFJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlaHlkcmF0ZShwcm9maWxlKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogREVIWURSQVRFX1BST0ZJTEUsXG4gICAgcHJvZmlsZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hQcm9maWxlKHBhdGNoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogUEFUQ0hfUFJPRklMRSxcbiAgICBwYXRjaFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhdXRoKHN0YXRlPXt9LCBhY3Rpb249bnVsbCkge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBERUhZRFJBVEVfUFJPRklMRTpcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBhY3Rpb24ucHJvZmlsZSwge1xuICAgICAgICBqb2luZWRfb246IG1vbWVudChhY3Rpb24ucHJvZmlsZS5qb2luZWRfb24pLFxuICAgICAgICBzdGF0dXM6IGRlaHlkcmF0ZVN0YXR1cyhhY3Rpb24ucHJvZmlsZS5zdGF0dXMpXG4gICAgICB9KTtcblxuICAgIGNhc2UgUEFUQ0hfUFJPRklMRTpcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgYWN0aW9uLnBhdGNoKTtcblxuICAgIGNhc2UgVVBEQVRFX0FWQVRBUjpcbiAgICAgIGlmIChzdGF0ZS5pZCA9PT0gYWN0aW9uLnVzZXJJZCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgICAgICBhdmF0YXJfaGFzaDogYWN0aW9uLmF2YXRhckhhc2hcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICBjYXNlIFVQREFURV9VU0VSTkFNRTpcbiAgICAgIGlmIChzdGF0ZS5pZCA9PT0gYWN0aW9uLnVzZXJJZCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgICAgICB1c2VybmFtZTogYWN0aW9uLnVzZXJuYW1lLFxuICAgICAgICAgIHNsdWc6IGFjdGlvbi5zbHVnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuIiwiZXhwb3J0IHZhciBpbml0aWFsU3RhdGUgPSB7XG4gIHR5cGU6ICdpbmZvJyxcbiAgbWVzc2FnZTogJycsXG4gIGlzVmlzaWJsZTogZmFsc2Vcbn07XG5cbmV4cG9ydCBjb25zdCBTSE9XX1NOQUNLQkFSID0gJ1NIT1dfU05BQ0tCQVInO1xuZXhwb3J0IGNvbnN0IEhJREVfU05BQ0tCQVIgPSAnSElERV9TTkFDS0JBUic7XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93U25hY2tiYXIobWVzc2FnZSwgdHlwZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFNIT1dfU05BQ0tCQVIsXG4gICAgbWVzc2FnZSxcbiAgICBtZXNzYWdlVHlwZTogdHlwZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGlkZVNuYWNrYmFyKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEhJREVfU05BQ0tCQVJcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc25hY2tiYXIoc3RhdGU9aW5pdGlhbFN0YXRlLCBhY3Rpb249bnVsbCkge1xuICBpZiAoYWN0aW9uLnR5cGUgPT09IFNIT1dfU05BQ0tCQVIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogYWN0aW9uLm1lc3NhZ2VUeXBlLFxuICAgICAgbWVzc2FnZTogYWN0aW9uLm1lc3NhZ2UsXG4gICAgICBpc1Zpc2libGU6IHRydWVcbiAgICB9O1xuICB9IGVsc2UgaWYgKGFjdGlvbi50eXBlID09PSBISURFX1NOQUNLQkFSKSB7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7XG4gICAgICAgIGlzVmlzaWJsZTogZmFsc2VcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiIsImV4cG9ydCB2YXIgaW5pdGlhbFN0YXRlID0ge1xuICB0aWNrOiAwXG59O1xuXG5leHBvcnQgY29uc3QgVElDSyA9ICdUSUNLJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRvVGljaygpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBUSUNLXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRpY2soc3RhdGU9aW5pdGlhbFN0YXRlLCBhY3Rpb249bnVsbCkge1xuICBpZiAoYWN0aW9uLnR5cGUgPT09IFRJQ0spIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIHtcbiAgICAgICAgdGljazogc3RhdGUudGljayArIDFcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiIsImltcG9ydCB7IFVQREFURV9BVkFUQVIsIFVQREFURV9VU0VSTkFNRSB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy91c2Vycyc7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuZXhwb3J0IGNvbnN0IEFERF9OQU1FX0NIQU5HRSA9ICdBRERfTkFNRV9DSEFOR0UnO1xuZXhwb3J0IGNvbnN0IEFQUEVORF9ISVNUT1JZID0gJ0FQUEVORF9ISVNUT1JZJztcbmV4cG9ydCBjb25zdCBERUhZRFJBVEVfSElTVE9SWSA9ICdERUhZRFJBVEVfSElTVE9SWSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGROYW1lQ2hhbmdlKGNoYW5nZSwgdXNlciwgY2hhbmdlZEJ5KSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQUREX05BTUVfQ0hBTkdFLFxuICAgIGNoYW5nZSxcbiAgICB1c2VyLFxuICAgIGNoYW5nZWRCeVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kKGl0ZW1zKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogQVBQRU5EX0hJU1RPUlksXG4gICAgaXRlbXM6IGl0ZW1zXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWh5ZHJhdGUoaXRlbXMpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBERUhZRFJBVEVfSElTVE9SWSxcbiAgICBpdGVtczogaXRlbXNcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlcm5hbWUoc3RhdGU9W10sIGFjdGlvbj1udWxsKSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIEFERF9OQU1FX0NIQU5HRTpcbiAgICAgIGxldCBuZXdTdGF0ZSA9IHN0YXRlLnNsaWNlKCk7XG4gICAgICBuZXdTdGF0ZS51bnNoaWZ0KHtcbiAgICAgICAgaWQ6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLCAvLyBqdXN0IHNtYWxsIGhheCBmb3IgZ2V0dGluZyBpZFxuICAgICAgICBjaGFuZ2VkX2J5OiBhY3Rpb24uY2hhbmdlZEJ5LFxuICAgICAgICBjaGFuZ2VkX2J5X3VzZXJuYW1lOiBhY3Rpb24uY2hhbmdlZEJ5LnVzZXJuYW1lLFxuICAgICAgICBjaGFuZ2VkX29uOiBtb21lbnQoKSxcbiAgICAgICAgbmV3X3VzZXJuYW1lOiBhY3Rpb24uY2hhbmdlLnVzZXJuYW1lLFxuICAgICAgICBvbGRfdXNlcm5hbWU6IGFjdGlvbi51c2VyLnVzZXJuYW1lXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXdTdGF0ZTtcblxuICAgIGNhc2UgQVBQRU5EX0hJU1RPUlk6XG4gICAgICByZXR1cm4gc3RhdGUuY29uY2F0KGFjdGlvbi5pdGVtcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwge1xuICAgICAgICAgIGNoYW5nZWRfb246IG1vbWVudChpdGVtLmNoYW5nZWRfb24pXG4gICAgICAgIH0pO1xuICAgICAgfSkpO1xuXG4gICAgY2FzZSBERUhZRFJBVEVfSElTVE9SWTpcbiAgICAgIHJldHVybiBhY3Rpb24uaXRlbXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGl0ZW0sIHtcbiAgICAgICAgICBjaGFuZ2VkX29uOiBtb21lbnQoaXRlbS5jaGFuZ2VkX29uKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgY2FzZSBVUERBVEVfQVZBVEFSOlxuICAgICAgcmV0dXJuIHN0YXRlLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIGl0ZW0gPSBPYmplY3QuYXNzaWduKHt9LCBpdGVtKTtcbiAgICAgICAgaWYgKGl0ZW0uY2hhbmdlZF9ieSAmJiBpdGVtLmNoYW5nZWRfYnkuaWQgPT09IGFjdGlvbi51c2VySWQpIHtcbiAgICAgICAgICBpdGVtLmNoYW5nZWRfYnkgPSBPYmplY3QuYXNzaWduKHt9LCBpdGVtLmNoYW5nZWRfYnksIHtcbiAgICAgICAgICAgICdhdmF0YXJfaGFzaCc6IGFjdGlvbi5hdmF0YXJIYXNoXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH0pO1xuXG4gICAgY2FzZSBVUERBVEVfVVNFUk5BTUU6XG4gICAgICByZXR1cm4gc3RhdGUubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgaXRlbSA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pO1xuICAgICAgICBpZiAoaXRlbS5jaGFuZ2VkX2J5ICYmIGl0ZW0uY2hhbmdlZF9ieS5pZCA9PT0gYWN0aW9uLnVzZXJJZCkge1xuICAgICAgICAgIGl0ZW0uY2hhbmdlZF9ieSA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0uY2hhbmdlZF9ieSwge1xuICAgICAgICAgICAgJ3VzZXJuYW1lJzogYWN0aW9uLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ3NsdWcnOiBhY3Rpb24uc2x1Z1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pO1xuICAgICAgfSk7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59IiwiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5leHBvcnQgY29uc3QgQVBQRU5EX1VTRVJTID0gJ0FQUEVORF9VU0VSUyc7XG5leHBvcnQgY29uc3QgREVIWURSQVRFX1VTRVJTID0gJ0RFSFlEUkFURV9VU0VSUyc7XG5leHBvcnQgY29uc3QgVVBEQVRFX0FWQVRBUiA9ICdVUERBVEVfQVZBVEFSJztcbmV4cG9ydCBjb25zdCBVUERBVEVfVVNFUk5BTUUgPSAnVVBEQVRFX1VTRVJOQU1FJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZChpdGVtcykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IEFQUEVORF9VU0VSUyxcbiAgICBpdGVtc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVoeWRyYXRlKGl0ZW1zKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogREVIWURSQVRFX1VTRVJTLFxuICAgIGl0ZW1zXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWh5ZHJhdGVTdGF0dXMoc3RhdHVzKSB7XG4gIGlmIChzdGF0dXMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdHVzLCB7XG4gICAgICBsYXN0X2NsaWNrOiBzdGF0dXMubGFzdF9jbGljayA/IG1vbWVudChzdGF0dXMubGFzdF9jbGljaykgOiBudWxsLFxuICAgICAgYmFubmVkX3VudGlsOiBzdGF0dXMuYmFubmVkX3VudGlsID8gbW9tZW50KHN0YXR1cy5iYW5uZWRfdW50aWwpIDogbnVsbFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVBdmF0YXIodXNlciwgYXZhdGFySGFzaCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFVQREFURV9BVkFUQVIsXG4gICAgdXNlcklkOiB1c2VyLmlkLFxuICAgIGF2YXRhckhhc2hcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVVzZXJuYW1lKHVzZXIsIHVzZXJuYW1lLCBzbHVnKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogVVBEQVRFX1VTRVJOQU1FLFxuICAgIHVzZXJJZDogdXNlci5pZCxcbiAgICB1c2VybmFtZSxcbiAgICBzbHVnXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZXIoc3RhdGU9W10sIGFjdGlvbj1udWxsKSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIEFQUEVORF9VU0VSUzpcbiAgICAgIHJldHVybiBzdGF0ZS5jb25jYXQoYWN0aW9uLml0ZW1zLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBpdGVtLCB7XG4gICAgICAgICAgam9pbmVkX29uOiBtb21lbnQoaXRlbS5qb2luZWRfb24pLFxuICAgICAgICAgIHN0YXR1czogZGVoeWRyYXRlU3RhdHVzKGl0ZW0uc3RhdHVzKVxuICAgICAgICB9KTtcbiAgICAgIH0pKTtcblxuICAgIGNhc2UgREVIWURSQVRFX1VTRVJTOlxuICAgICAgcmV0dXJuIGFjdGlvbi5pdGVtcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSwge1xuICAgICAgICAgIGpvaW5lZF9vbjogbW9tZW50KGl0ZW0uam9pbmVkX29uKSxcbiAgICAgICAgICBzdGF0dXM6IGRlaHlkcmF0ZVN0YXR1cyhpdGVtLnN0YXR1cylcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGNhc2UgVVBEQVRFX0FWQVRBUjpcbiAgICAgIHJldHVybiBzdGF0ZS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICBpdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSk7XG4gICAgICAgIGlmIChpdGVtLmlkID09PSBhY3Rpb24udXNlcklkKSB7XG4gICAgICAgICAgaXRlbS5hdmF0YXJfaGFzaCA9IGFjdGlvbi5hdmF0YXJIYXNoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn0iLCJleHBvcnQgY2xhc3MgQWpheCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2Nvb2tpZU5hbWUgPSBudWxsO1xuICAgIHRoaXMuX2NzcmZUb2tlbiA9IG51bGw7XG4gICAgdGhpcy5fbG9ja3MgPSB7fTtcbiAgfVxuXG4gIGluaXQoY29va2llTmFtZSkge1xuICAgIHRoaXMuX2Nvb2tpZU5hbWUgPSBjb29raWVOYW1lO1xuICAgIHRoaXMuX2NzcmZUb2tlbiA9IHRoaXMuZ2V0Q3NyZlRva2VuKCk7XG4gIH1cblxuICBnZXRDc3JmVG9rZW4oKSB7XG4gICAgaWYgKGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKHRoaXMuX2Nvb2tpZU5hbWUpICE9PSAtMSkge1xuICAgICAgbGV0IGNvb2tpZVJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLl9jb29raWVOYW1lICsgJ1xcPShbXjtdKiknKTtcbiAgICAgIGxldCBjb29raWUgPSBkb2N1bWVudC5jb29raWUubWF0Y2goY29va2llUmVnZXgpWzBdO1xuICAgICAgcmV0dXJuIGNvb2tpZSA/IGNvb2tpZS5zcGxpdCgnPScpWzFdIDogbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdChtZXRob2QsIHVybCwgZGF0YSkge1xuICAgIGxldCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBsZXQgeGhyID0ge1xuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnWC1DU1JGVG9rZW4nOiBzZWxmLl9jc3JmVG9rZW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiAoZGF0YSA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogbnVsbCksXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLThcIixcbiAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcblxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgfSxcblxuICAgICAgICBlcnJvcjogZnVuY3Rpb24oanFYSFIpIHtcbiAgICAgICAgICBsZXQgcmVqZWN0aW9uID0ganFYSFIucmVzcG9uc2VKU09OIHx8IHt9O1xuXG4gICAgICAgICAgcmVqZWN0aW9uLnN0YXR1cyA9IGpxWEhSLnN0YXR1cztcblxuICAgICAgICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSAwKSB7XG4gICAgICAgICAgICByZWplY3Rpb24uZGV0YWlsID0gZ2V0dGV4dChcIkxvc3QgY29ubmVjdGlvbiB3aXRoIGFwcGxpY2F0aW9uLlwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICBpZiAoIXJlamVjdGlvbi5kZXRhaWwgfHwgcmVqZWN0aW9uLmRldGFpbCA9PT0gJ05PVCBGT1VORCcpIHtcbiAgICAgICAgICAgICAgcmVqZWN0aW9uLmRldGFpbCA9IGdldHRleHQoXCJBY3Rpb24gbGluayBpcyBpbnZhbGlkLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gNTAwICYmICFyZWplY3Rpb24uZGV0YWlsKSB7XG4gICAgICAgICAgICByZWplY3Rpb24uZGV0YWlsID0gZ2V0dGV4dChcIlVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQuXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdGlvbi5zdGF0dXNUZXh0ID0ganFYSFIuc3RhdHVzVGV4dDtcblxuICAgICAgICAgIHJlamVjdChyZWplY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICAkLmFqYXgoeGhyKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCh1cmwsIHBhcmFtcywgbG9jaykge1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHVybCArPSAnPycgKyAkLnBhcmFtKHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKGxvY2spIHtcbiAgICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgICAgLy8gdXBkYXRlIHVybCBpbiBleGlzdGluZyBsb2NrP1xuICAgICAgaWYgKHRoaXMuX2xvY2tzW2xvY2tdKSB7XG4gICAgICAgIHRoaXMuX2xvY2tzW2xvY2tdLnVybCA9IHVybDtcbiAgICAgIH1cblxuICAgICAgLy8gaW1tZWRpYXRlbHkgZGVyZWZlcmVuY2UgcHJvbWlzZSBoYW5kbGVycyB3aXRob3V0IGRvaW5nIGFueXRoaW5nXG4gICAgICAvLyB3ZSBhcmUgYWxyZWFkeSB3YWl0aW5nIGZvciBleGlzdGluZyByZXNwb25zZSB0byByZXNvbHZlXG4gICAgICBpZiAodGhpcy5fbG9ja3NbbG9ja10gJiYgdGhpcy5fbG9ja3NbbG9ja10ud2FpdGVyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGhlbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAvLyByZXR1cm4gcHJvbWlzZSB0aGF0IHdpbGwgYmVnaW4gd2hlbiBvcmlnaW5hbCBvbmUgcmVzb2x2ZXNcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fbG9ja3NbbG9ja10gJiYgdGhpcy5fbG9ja3NbbG9ja10ud2FpdCkge1xuICAgICAgICB0aGlzLl9sb2Nrc1tsb2NrXS53YWl0ZXIgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBsZXQgd2FpdCA9IGZ1bmN0aW9uKHVybCkge1xuICAgICAgICAgICAgLy8ga2VlcCB3YWl0aW5nIG9uIHByb21pc2VcbiAgICAgICAgICAgIGlmIChzZWxmLl9sb2Nrc1tsb2NrXS53YWl0KSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHdhaXQodXJsKTtcbiAgICAgICAgICAgICAgfSwgMzAwKTtcblxuICAgICAgICAgICAgLy8gcG9sbCBmb3IgbmV3IHVybFxuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxmLl9sb2Nrc1tsb2NrXS51cmwgIT09IHVybCkge1xuICAgICAgICAgICAgICB3YWl0KHNlbGYuX2xvY2tzW2xvY2tdLnVybCk7XG5cbiAgICAgICAgICAgIC8vIGFqYXggYmFja2VuZCBmb3IgcmVzcG9uc2VcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNlbGYuX2xvY2tzW2xvY2tdLndhaXRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICBzZWxmLnJlcXVlc3QoJ0dFVCcsIHNlbGYuX2xvY2tzW2xvY2tdLnVybCkudGhlbihmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuX2xvY2tzW2xvY2tdLnVybCA9PT0gdXJsKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzZWxmLl9sb2Nrc1tsb2NrXS53YWl0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgd2FpdChzZWxmLl9sb2Nrc1tsb2NrXS51cmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSwgZnVuY3Rpb24ocmVqZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuX2xvY2tzW2xvY2tdLnVybCA9PT0gdXJsKSB7XG4gICAgICAgICAgICAgICAgICByZWplY3QocmVqZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgc2VsZi5fbG9ja3NbbG9ja10ud2FpdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIHdhaXQoc2VsZi5fbG9ja3NbbG9ja10udXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHdhaXQodXJsKTtcbiAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9KTtcblxuICAgICAgLy8gc2V0dXAgbmV3IGxvY2sgd2l0aG91dCB3YWl0ZXJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvY2tzW2xvY2tdID0ge1xuICAgICAgICAgIHVybCxcbiAgICAgICAgICB3YWl0OiB0cnVlLFxuICAgICAgICAgIHdhaXRlcjogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgc2VsZi5yZXF1ZXN0KCdHRVQnLCB1cmwpLnRoZW4oZnVuY3Rpb24oZGF0YSkge1xuICAgICAgICAgICAgc2VsZi5fbG9ja3NbbG9ja10ud2FpdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNlbGYuX2xvY2tzW2xvY2tdLnVybCA9PT0gdXJsKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZnVuY3Rpb24ocmVqZWN0aW9uKSB7XG4gICAgICAgICAgICBzZWxmLl9sb2Nrc1tsb2NrXS53YWl0ID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoc2VsZi5fbG9ja3NbbG9ja10udXJsID09PSB1cmwpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KHJlamVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdHRVQnLCB1cmwpO1xuICAgIH1cbiAgfVxuXG4gIHBvc3QodXJsLCBkYXRhKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUE9TVCcsIHVybCwgZGF0YSk7XG4gIH1cblxuICBwYXRjaCh1cmwsIGRhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQQVRDSCcsIHVybCwgZGF0YSk7XG4gIH1cblxuICBwdXQodXJsLCBkYXRhKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUFVUJywgdXJsLCBkYXRhKTtcbiAgfVxuXG4gIGRlbGV0ZSh1cmwpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdERUxFVEUnLCB1cmwpO1xuICB9XG5cbiAgdXBsb2FkKHVybCwgZGF0YSwgcHJvZ3Jlc3MpIHtcbiAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgbGV0IHhociA9IHtcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1gtQ1NSRlRva2VuJzogc2VsZi5fY3NyZlRva2VuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgY29udGVudFR5cGU6IGZhbHNlLFxuICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXG5cbiAgICAgICAgeGhyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICBsZXQgeGhyID0gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgIHhoci51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcihcInByb2dyZXNzXCIsIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgICAgaWYgKGV2dC5sZW5ndGhDb21wdXRhYmxlKSB7XG4gICAgICAgICAgICAgIHByb2dyZXNzKE1hdGgucm91bmQoZXZ0LmxvYWRlZCAvIGV2dC50b3RhbCAqIDEwMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4geGhyO1xuICAgICAgICB9LFxuXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGpxWEhSKSB7XG4gICAgICAgICAgbGV0IHJlamVjdGlvbiA9IGpxWEhSLnJlc3BvbnNlSlNPTiB8fCB7fTtcblxuICAgICAgICAgIHJlamVjdGlvbi5zdGF0dXMgPSBqcVhIUi5zdGF0dXM7XG5cbiAgICAgICAgICBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gMCkge1xuICAgICAgICAgICAgcmVqZWN0aW9uLmRldGFpbCA9IGdldHRleHQoXCJMb3N0IGNvbm5lY3Rpb24gd2l0aCBhcHBsaWNhdGlvbi5cIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgaWYgKCFyZWplY3Rpb24uZGV0YWlsIHx8IHJlamVjdGlvbi5kZXRhaWwgPT09ICdOT1QgRk9VTkQnKSB7XG4gICAgICAgICAgICAgIHJlamVjdGlvbi5kZXRhaWwgPSBnZXR0ZXh0KFwiQWN0aW9uIGxpbmsgaXMgaW52YWxpZC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlamVjdGlvbi5zdGF0dXMgPT09IDUwMCAmJiAhcmVqZWN0aW9uLmRldGFpbCkge1xuICAgICAgICAgICAgcmVqZWN0aW9uLmRldGFpbCA9IGdldHRleHQoXCJVbmtub3duIGVycm9yIGhhcyBvY2N1cmVkLlwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3Rpb24uc3RhdHVzVGV4dCA9IGpxWEhSLnN0YXR1c1RleHQ7XG5cbiAgICAgICAgICByZWplY3QocmVqZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgJC5hamF4KHhocik7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IEFqYXgoKTtcbiIsImltcG9ydCB7IHNpZ25Jbiwgc2lnbk91dCB9IGZyb20gJ21pc2Fnby9yZWR1Y2Vycy9hdXRoJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBBdXRoIHtcbiAgaW5pdChzdG9yZSwgbG9jYWwsIG1vZGFsKSB7XG4gICAgdGhpcy5fc3RvcmUgPSBzdG9yZTtcbiAgICB0aGlzLl9sb2NhbCA9IGxvY2FsO1xuICAgIHRoaXMuX21vZGFsID0gbW9kYWw7XG5cbiAgICAvLyB0ZWxsIG90aGVyIHRhYnMgd2hhdCBhdXRoIHN0YXRlIGlzIGJlY2F1c2Ugd2UgYXJlIG1vc3QgY3VycmVudCB3aXRoIGl0XG4gICAgdGhpcy5zeW5jU2Vzc2lvbigpO1xuXG4gICAgLy8gbGlzdGVuIGZvciBvdGhlciB0YWJzIHRvIHRlbGwgdXMgdGhhdCBzdGF0ZSBjaGFuZ2VkXG4gICAgdGhpcy53YXRjaFN0YXRlKCk7XG4gIH1cblxuICBzeW5jU2Vzc2lvbigpIHtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLl9zdG9yZS5nZXRTdGF0ZSgpLmF1dGg7XG4gICAgaWYgKHN0YXRlLmlzQXV0aGVudGljYXRlZCkge1xuICAgICAgdGhpcy5fbG9jYWwuc2V0KCdhdXRoJywge1xuICAgICAgICBpc0F1dGhlbnRpY2F0ZWQ6IHRydWUsXG4gICAgICAgIHVzZXJuYW1lOiBzdGF0ZS51c2VyLnVzZXJuYW1lXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9jYWwuc2V0KCdhdXRoJywge1xuICAgICAgICBpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB3YXRjaFN0YXRlKCkge1xuICAgIHRoaXMuX2xvY2FsLndhdGNoKCdhdXRoJywgKG5ld1N0YXRlKSA9PiB7XG4gICAgICBpZiAobmV3U3RhdGUuaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKHNpZ25Jbih7XG4gICAgICAgICAgdXNlcm5hbWU6IG5ld1N0YXRlLnVzZXJuYW1lXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKHNpZ25PdXQoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fbW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgc2lnbkluKHVzZXIpIHtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChzaWduSW4odXNlcikpO1xuICAgIHRoaXMuX2xvY2FsLnNldCgnYXV0aCcsIHtcbiAgICAgIGlzQXV0aGVudGljYXRlZDogdHJ1ZSxcbiAgICAgIHVzZXJuYW1lOiB1c2VyLnVzZXJuYW1lXG4gICAgfSk7XG4gICAgdGhpcy5fbW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgc2lnbk91dCgpIHtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChzaWduT3V0KCkpO1xuICAgIHRoaXMuX2xvY2FsLnNldCgnYXV0aCcsIHtcbiAgICAgIGlzQXV0aGVudGljYXRlZDogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLl9tb2RhbC5oaWRlKCk7XG4gIH1cblxuICBzb2Z0U2lnbk91dCgpIHtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChzaWduT3V0KHRydWUpKTtcbiAgICB0aGlzLl9sb2NhbC5zZXQoJ2F1dGgnLCB7XG4gICAgICBpc0F1dGhlbnRpY2F0ZWQ6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5fbW9kYWwuaGlkZSgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBBdXRoKCk7IiwiLyogZ2xvYmFsIGdyZWNhcHRjaGEgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IEZvcm1Hcm91cCBmcm9tICdtaXNhZ28vY29tcG9uZW50cy9mb3JtLWdyb3VwJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2FwdGNoYSB7XG4gIGluaXQoY29udGV4dCwgYWpheCwgaW5jbHVkZSwgc25hY2tiYXIpIHtcbiAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLl9hamF4ID0gYWpheDtcbiAgICB0aGlzLl9pbmNsdWRlID0gaW5jbHVkZTtcbiAgICB0aGlzLl9zbmFja2JhciA9IHNuYWNrYmFyO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb0NhcHRjaGEgZXh0ZW5kcyBCYXNlQ2FwdGNoYSB7XG4gIGxvYWQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcbiAgICAgIC8vIGltbWVkaWF0ZWx5IHJlc29sdmUgYXMgd2UgZG9uJ3QgaGF2ZSBhbnl0aGluZyB0byB2YWxpZGF0ZVxuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdG9yKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29tcG9uZW50KCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBRQUNhcHRjaGEgZXh0ZW5kcyBCYXNlQ2FwdGNoYSB7XG4gIGxvYWQoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBzZWxmLl9hamF4LmdldChzZWxmLl9jb250ZXh0LmdldCgnQ0FQVENIQV9BUElfVVJMJykpLnRoZW4oXG4gICAgICBmdW5jdGlvbihkYXRhKSB7XG4gICAgICAgIHNlbGYucXVlc3Rpb24gPSBkYXRhLnF1ZXN0aW9uO1xuICAgICAgICBzZWxmLmhlbHBUZXh0ID0gZGF0YS5oZWxwX3RleHQ7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIGZ1bmN0aW9uKCkge1xuICAgICAgICBzZWxmLl9zbmFja2Jhci5lcnJvcihnZXR0ZXh0KFwiRmFpbGVkIHRvIGxvYWQgQ0FQVENIQS5cIikpO1xuICAgICAgICByZWplY3QoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdG9yKCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgY29tcG9uZW50KGt3YXJncykge1xuICAgIHJldHVybiA8Rm9ybUdyb3VwIGxhYmVsPXt0aGlzLnF1ZXN0aW9ufSBmb3I9XCJpZF9jYXB0Y2hhXCJcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbENsYXNzPXtrd2FyZ3MubGFiZWxDbGFzcyB8fCBcImNvbC1zbS00XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbENsYXNzPXtrd2FyZ3MuY29udHJvbENsYXNzIHx8IFwiY29sLXNtLThcIn1cbiAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uPXtrd2FyZ3MuZm9ybS5zdGF0ZS5lcnJvcnMuY2FwdGNoYX1cbiAgICAgICAgICAgICAgICAgICAgICBoZWxwVGV4dD17dGhpcy5oZWxwVGV4dCB8fCBudWxsfT5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiaWRfY2FwdGNoYVwiIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImlkX2NhcHRjaGFfc3RhdHVzXCJcbiAgICAgICAgICAgICBkaXNhYmxlZD17a3dhcmdzLmZvcm0uc3RhdGUuaXNMb2FkaW5nfVxuICAgICAgICAgICAgIG9uQ2hhbmdlPXtrd2FyZ3MuZm9ybS5iaW5kSW5wdXQoJ2NhcHRjaGEnKX1cbiAgICAgICAgICAgICB2YWx1ZT17a3dhcmdzLmZvcm0uc3RhdGUuY2FwdGNoYX0gLz5cbiAgICA8L0Zvcm1Hcm91cD47XG4gIH1cbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbn1cblxuXG5leHBvcnQgY2xhc3MgUmVDYXB0Y2hhQ29tcG9uZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgZ3JlY2FwdGNoYS5yZW5kZXIoJ3JlY2FwdGNoYScsIHtcbiAgICAgICdzaXRla2V5JzogdGhpcy5wcm9wcy5zaXRlS2V5LFxuICAgICAgJ2NhbGxiYWNrJzogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIC8vIGZpcmUgZmFrZXkgZXZlbnQgdG8gYmluZGluZ1xuICAgICAgICB0aGlzLnByb3BzLmJpbmRpbmcoe1xuICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgdmFsdWU6IHJlc3BvbnNlXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgcmV0dXJuIDxkaXYgaWQ9XCJyZWNhcHRjaGFcIiAvPjtcbiAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZUNhcHRjaGEgZXh0ZW5kcyBCYXNlQ2FwdGNoYSB7XG4gIGxvYWQoKSB7XG4gICAgdGhpcy5faW5jbHVkZS5pbmNsdWRlKCdodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanMnLCB0cnVlKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICB2YXIgd2FpdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodHlwZW9mIGdyZWNhcHRjaGEgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHdhaXQoKTtcbiAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHdhaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhbGlkYXRvcigpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gIGNvbXBvbmVudChrd2FyZ3MpIHtcbiAgICByZXR1cm4gPEZvcm1Hcm91cCBsYWJlbD17Z2V0dGV4dChcIkNhcHRjaGFcIil9IGZvcj1cImlkX2NhcHRjaGFcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQ2xhc3M9e2t3YXJncy5sYWJlbENsYXNzIHx8IFwiY29sLXNtLTRcIn1cbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9sQ2xhc3M9e2t3YXJncy5jb250cm9sQ2xhc3MgfHwgXCJjb2wtc20tOFwifVxuICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb249e2t3YXJncy5mb3JtLnN0YXRlLmVycm9ycy5jYXB0Y2hhfVxuICAgICAgICAgICAgICAgICAgICAgIGhlbHBUZXh0PXtnZXR0ZXh0KFwiUGxlYXNlIHNvbHZlIHRoZSBxdWljayB0ZXN0LlwiKX0+XG4gICAgICA8UmVDYXB0Y2hhQ29tcG9uZW50IHNpdGVLZXk9e3RoaXMuX2NvbnRleHQuZ2V0KCdTRVRUSU5HUycpLnJlY2FwdGNoYV9zaXRlX2tleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZz17a3dhcmdzLmZvcm0uYmluZElucHV0KCdjYXB0Y2hhJyl9IC8+XG4gICAgPC9Gb3JtR3JvdXA+O1xuICB9XG4gIC8qIGpzaGludCBpZ25vcmU6ZW5kICovXG59XG5cbmV4cG9ydCBjbGFzcyBDYXB0Y2hhIHtcbiAgaW5pdChjb250ZXh0LCBhamF4LCBpbmNsdWRlLCBzbmFja2Jhcikge1xuICAgIHN3aXRjaChjb250ZXh0LmdldCgnU0VUVElOR1MnKS5jYXB0Y2hhX3R5cGUpIHtcbiAgICAgIGNhc2UgJ25vJzpcbiAgICAgICAgdGhpcy5fY2FwdGNoYSA9IG5ldyBOb0NhcHRjaGEoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3FhJzpcbiAgICAgICAgdGhpcy5fY2FwdGNoYSA9IG5ldyBRQUNhcHRjaGEoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3JlJzpcbiAgICAgICAgdGhpcy5fY2FwdGNoYSA9IG5ldyBSZUNhcHRjaGEoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5fY2FwdGNoYS5pbml0KGNvbnRleHQsIGFqYXgsIGluY2x1ZGUsIHNuYWNrYmFyKTtcbiAgfVxuXG4gIC8vIGFjY2Vzc29ycyBmb3IgdW5kZXJseWluZyBzdHJhdGVneVxuXG4gIGxvYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhcHRjaGEubG9hZCgpO1xuICB9XG5cbiAgdmFsaWRhdG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9jYXB0Y2hhLnZhbGlkYXRvcigpO1xuICB9XG5cbiAgY29tcG9uZW50KGt3YXJncykge1xuICAgIHJldHVybiB0aGlzLl9jYXB0Y2hhLmNvbXBvbmVudChrd2FyZ3MpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBDYXB0Y2hhKCk7IiwiZXhwb3J0IGNsYXNzIEluY2x1ZGUge1xuICBpbml0KHN0YXRpY1VybCkge1xuICAgIHRoaXMuX3N0YXRpY1VybCA9IHN0YXRpY1VybDtcbiAgICB0aGlzLl9pbmNsdWRlZCA9IFtdO1xuICB9XG5cbiAgaW5jbHVkZShzY3JpcHQsIHJlbW90ZT1mYWxzZSkge1xuICAgIGlmICh0aGlzLl9pbmNsdWRlZC5pbmRleE9mKHNjcmlwdCkgPT09IC0xKSB7XG4gICAgICB0aGlzLl9pbmNsdWRlZC5wdXNoKHNjcmlwdCk7XG4gICAgICB0aGlzLl9pbmNsdWRlKHNjcmlwdCwgcmVtb3RlKTtcbiAgICB9XG4gIH1cblxuICBfaW5jbHVkZShzY3JpcHQsIHJlbW90ZSkge1xuICAgICQuYWpheCh7XG4gICAgICB1cmw6ICghcmVtb3RlID8gdGhpcy5fc3RhdGljVXJsIDogJycpICsgc2NyaXB0LFxuICAgICAgY2FjaGU6IHRydWUsXG4gICAgICBkYXRhVHlwZTogJ3NjcmlwdCdcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgSW5jbHVkZSgpOyIsImxldCBzdG9yYWdlID0gd2luZG93LmxvY2FsU3RvcmFnZTtcblxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZSB7XG4gIGluaXQocHJlZml4KSB7XG4gICAgdGhpcy5fcHJlZml4ID0gcHJlZml4O1xuICAgIHRoaXMuX3dhdGNoZXJzID0gW107XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc3RvcmFnZScsIChlKSA9PiB7XG4gICAgICBsZXQgbmV3VmFsdWVKc29uID0gSlNPTi5wYXJzZShlLm5ld1ZhbHVlKTtcbiAgICAgIHRoaXMuX3dhdGNoZXJzLmZvckVhY2goZnVuY3Rpb24od2F0Y2hlcikge1xuICAgICAgICBpZiAod2F0Y2hlci5rZXkgPT09IGUua2V5ICYmIGUub2xkVmFsdWUgIT09IGUubmV3VmFsdWUpIHtcbiAgICAgICAgICB3YXRjaGVyLmNhbGxiYWNrKG5ld1ZhbHVlSnNvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICBzdG9yYWdlLnNldEl0ZW0odGhpcy5fcHJlZml4ICsga2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9XG5cbiAgZ2V0KGtleSkge1xuICAgIGxldCBpdGVtU3RyaW5nID0gc3RvcmFnZS5nZXRJdGVtKHRoaXMuX3ByZWZpeCArIGtleSk7XG4gICAgaWYgKGl0ZW1TdHJpbmcpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW1TdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB3YXRjaChrZXksIGNhbGxiYWNrKSB7XG4gICAgdGhpcy5fd2F0Y2hlcnMucHVzaCh7XG4gICAgICBrZXk6IHRoaXMuX3ByZWZpeCArIGtleSxcbiAgICAgIGNhbGxiYWNrOiBjYWxsYmFja1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBMb2NhbFN0b3JhZ2UoKTsiLCJpbXBvcnQgbW91bnQgZnJvbSAnbWlzYWdvL3V0aWxzL21vdW50LWNvbXBvbmVudCc7XG5cbmV4cG9ydCBjbGFzcyBNb2JpbGVOYXZiYXJEcm9wZG93biB7XG4gIGluaXQoZWxlbWVudCkge1xuICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuX2NvbXBvbmVudCA9IG51bGw7XG4gIH1cblxuICBzaG93KGNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLl9jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgIG1vdW50KGNvbXBvbmVudCwgdGhpcy5fZWxlbWVudC5pZCk7XG4gICAgICAkKHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKCdvcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgc2hvd0Nvbm5lY3RlZChuYW1lLCBjb21wb25lbnQpIHtcbiAgICBpZiAodGhpcy5fY29tcG9uZW50ID09PSBuYW1lKSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY29tcG9uZW50ID0gbmFtZTtcbiAgICAgIG1vdW50KGNvbXBvbmVudCwgdGhpcy5fZWxlbWVudC5pZCwgdHJ1ZSk7XG4gICAgICAkKHRoaXMuX2VsZW1lbnQpLmFkZENsYXNzKCdvcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgaGlkZSgpIHtcbiAgICAkKHRoaXMuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKCdvcGVuJyk7XG4gICAgdGhpcy5fY29tcG9uZW50ID0gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgTW9iaWxlTmF2YmFyRHJvcGRvd24oKTtcbiIsImltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IG1vdW50IGZyb20gJ21pc2Fnby91dGlscy9tb3VudC1jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgTW9kYWwge1xuICBpbml0KGVsZW1lbnQpIHtcbiAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDtcblxuICAgIHRoaXMuX21vZGFsID0gJChlbGVtZW50KS5tb2RhbCh7c2hvdzogZmFsc2V9KTtcblxuICAgIHRoaXMuX21vZGFsLm9uKCdoaWRkZW4uYnMubW9kYWwnLCAoKSA9PiB7XG4gICAgICBSZWFjdERPTS51bm1vdW50Q29tcG9uZW50QXROb2RlKHRoaXMuX2VsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgc2hvdyhjb21wb25lbnQpIHtcbiAgICBtb3VudChjb21wb25lbnQsIHRoaXMuX2VsZW1lbnQuaWQpO1xuICAgIHRoaXMuX21vZGFsLm1vZGFsKCdzaG93Jyk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuX21vZGFsLm1vZGFsKCdoaWRlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IE1vZGFsKCk7XG4iLCJleHBvcnQgY2xhc3MgUGFnZVRpdGxlIHtcbiAgaW5pdChmb3J1bU5hbWUpIHtcbiAgICB0aGlzLl9mb3J1bU5hbWUgPSBmb3J1bU5hbWU7XG4gIH1cblxuICBzZXQodGl0bGUpIHtcbiAgICBpZiAodHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJykge1xuICAgICAgdGl0bGUgPSB7dGl0bGU6IHRpdGxlfTtcbiAgICB9XG5cbiAgICBsZXQgZmluYWxUaXRsZSA9IHRpdGxlLnRpdGxlO1xuXG4gICAgaWYgKHRpdGxlLnBhZ2UpIHtcbiAgICAgIGxldCBwYWdlTGFiZWwgPSBpbnRlcnBvbGF0ZShnZXR0ZXh0KCdwYWdlOiAlKHBhZ2UpcycpLCB7XG4gICAgICAgIHBhZ2U6IHRpdGxlLnBhZ2VcbiAgICAgIH0sIHRydWUpO1xuXG4gICAgICBmaW5hbFRpdGxlICs9ICcgKCcgKyBwYWdlTGFiZWwgKyAnKSc7XG4gICAgfVxuXG4gICAgaWYgKHRpdGxlLnBhcmVudCkge1xuICAgICAgZmluYWxUaXRsZSArPSAnIHwgJyArIHRpdGxlLnBhcmVudDtcbiAgICB9XG5cbiAgICBkb2N1bWVudC50aXRsZSA9IGZpbmFsVGl0bGUgKyAnIHwgJyArIHRoaXMuX2ZvcnVtTmFtZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgUGFnZVRpdGxlKCk7XG4iLCJleHBvcnQgY2xhc3MgUG9sbHMge1xuICBpbml0KGFqYXgsIHNuYWNrYmFyKSB7XG4gICAgdGhpcy5fYWpheCA9IGFqYXg7XG4gICAgdGhpcy5fc25hY2tiYXIgPSBzbmFja2JhcjtcblxuICAgIHRoaXMuX3BvbGxzID0ge307XG4gIH1cblxuICBzdGFydChrd2FyZ3MpIHtcbiAgICBsZXQgcG9vbFNlcnZlciA9ICgpID0+IHtcbiAgICAgIHRoaXMuX3BvbGxzW2t3YXJncy5wb2xsXSA9IGt3YXJncztcblxuICAgICAgdGhpcy5fYWpheC5nZXQoa3dhcmdzLnVybCwga3dhcmdzLmRhdGEgfHwgbnVsbCkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBrd2FyZ3MudXBkYXRlKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuX3BvbGxzW2t3YXJncy5wb2xsXS50aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoXG4gICAgICAgICAgcG9vbFNlcnZlciwga3dhcmdzLmZyZXF1ZW5jeSk7XG4gICAgICB9LCAocmVqZWN0aW9uKSA9PiB7XG4gICAgICAgIGlmIChrd2FyZ3MuZXJyb3IpIHtcbiAgICAgICAgICBrd2FyZ3MuZXJyb3IocmVqZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9zbmFja2Jhci5hcGlFcnJvcihyZWplY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcG9vbFNlcnZlcigpO1xuICB9XG5cbiAgc3RvcChwb2xsSWQpIHtcbiAgICBpZiAodGhpcy5fcG9sbHNbcG9sbElkXSkge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9wb2xsc1twb2xsSWRdLnRpbWVvdXQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgUG9sbHMoKTtcbiIsImltcG9ydCB7IHNob3dTbmFja2JhciwgaGlkZVNuYWNrYmFyIH0gZnJvbSAnbWlzYWdvL3JlZHVjZXJzL3NuYWNrYmFyJztcblxuY29uc3QgSElERV9BTklNQVRJT05fTEVOR1RIID0gMzAwO1xuY29uc3QgTUVTU0FHRV9TSE9XX0xFTkdUSCA9IDUwMDA7XG5cbmV4cG9ydCBjbGFzcyBTbmFja2JhciB7XG4gIGluaXQoc3RvcmUpIHtcbiAgICB0aGlzLl9zdG9yZSA9IHN0b3JlO1xuICAgIHRoaXMuX3RpbWVvdXQgPSBudWxsO1xuICB9XG5cbiAgYWxlcnQobWVzc2FnZSwgdHlwZSkge1xuICAgIGlmICh0aGlzLl90aW1lb3V0KSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpO1xuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goaGlkZVNuYWNrYmFyKCkpO1xuXG4gICAgICB0aGlzLl90aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl90aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5hbGVydChtZXNzYWdlLCB0eXBlKTtcbiAgICAgIH0sIEhJREVfQU5JTUFUSU9OX0xFTkdUSCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKHNob3dTbmFja2JhcihtZXNzYWdlLCB0eXBlKSk7XG4gICAgICB0aGlzLl90aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChoaWRlU25hY2tiYXIoKSk7XG4gICAgICAgIHRoaXMuX3RpbWVvdXQgPSBudWxsO1xuICAgICAgfSwgTUVTU0FHRV9TSE9XX0xFTkdUSCk7XG4gICAgfVxuICB9XG5cbiAgLy8gc2hvcnRoYW5kcyBmb3IgbWVzc2FnZSB0eXBlc1xuXG4gIGluZm8obWVzc2FnZSkge1xuICAgIHRoaXMuYWxlcnQobWVzc2FnZSwgJ2luZm8nKTtcbiAgfVxuXG4gIHN1Y2Nlc3MobWVzc2FnZSkge1xuICAgIHRoaXMuYWxlcnQobWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcbiAgfVxuXG4gIHdhcm5pbmcobWVzc2FnZSkge1xuICAgIHRoaXMuYWxlcnQobWVzc2FnZSwgJ3dhcm5pbmcnKTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2UpIHtcbiAgICB0aGlzLmFsZXJ0KG1lc3NhZ2UsICdlcnJvcicpO1xuICB9XG5cbiAgLy8gc2hvcnRoYW5kIGZvciBhcGkgZXJyb3JzXG5cbiAgYXBpRXJyb3IocmVqZWN0aW9uKSB7XG4gICAgbGV0IG1lc3NhZ2UgPSByZWplY3Rpb24uZGV0YWlsO1xuXG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICBpZiAocmVqZWN0aW9uLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgIG1lc3NhZ2UgPSBnZXR0ZXh0KFwiQWN0aW9uIGxpbmsgaXMgaW52YWxpZC5cIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gZ2V0dGV4dChcIlVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQuXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZWplY3Rpb24uc3RhdHVzID09PSA0MDMgJiYgbWVzc2FnZSA9PT0gXCJQZXJtaXNzaW9uIGRlbmllZFwiKSB7XG4gICAgICBtZXNzYWdlID0gZ2V0dGV4dChcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi5cIik7XG4gICAgfVxuXG4gICAgdGhpcy5lcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgU25hY2tiYXIoKTtcbiIsImltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycywgY3JlYXRlU3RvcmUgfSBmcm9tICdyZWR1eCc7XG5cbmV4cG9ydCBjbGFzcyBTdG9yZVdyYXBwZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9zdG9yZSA9IG51bGw7XG4gICAgdGhpcy5fcmVkdWNlcnMgPSB7fTtcbiAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSB7fTtcbiAgfVxuXG4gIGFkZFJlZHVjZXIobmFtZSwgcmVkdWNlciwgaW5pdGlhbFN0YXRlKSB7XG4gICAgdGhpcy5fcmVkdWNlcnNbbmFtZV0gPSByZWR1Y2VyO1xuICAgIHRoaXMuX2luaXRpYWxTdGF0ZVtuYW1lXSA9IGluaXRpYWxTdGF0ZTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy5fc3RvcmUgPSBjcmVhdGVTdG9yZShcbiAgICAgIGNvbWJpbmVSZWR1Y2Vycyh0aGlzLl9yZWR1Y2VycyksIHRoaXMuX2luaXRpYWxTdGF0ZSk7XG4gIH1cblxuICBnZXRTdG9yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmU7XG4gIH1cblxuICAvLyBTdG9yZSBBUElcblxuICBnZXRTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuZ2V0U3RhdGUoKTtcbiAgfVxuXG4gIGRpc3BhdGNoKGFjdGlvbikge1xuICAgIHJldHVybiB0aGlzLl9zdG9yZS5kaXNwYXRjaChhY3Rpb24pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBTdG9yZVdyYXBwZXIoKTtcbiIsIi8qIGdsb2JhbCB6eGN2Ym4gKi9cbmV4cG9ydCBjbGFzcyBaeGN2Ym4ge1xuICBpbml0KGluY2x1ZGUpIHtcbiAgICB0aGlzLl9pbmNsdWRlID0gaW5jbHVkZTtcbiAgfVxuXG4gIHNjb3JlUGFzc3dvcmQocGFzc3dvcmQsIGlucHV0cykge1xuICAgIC8vIDAtNCBzY29yZSwgdGhlIG1vcmUgdGhlIHN0cm9uZ2VyIHBhc3N3b3JkXG4gICAgcmV0dXJuIHp4Y3ZibihwYXNzd29yZCwgaW5wdXRzKS5zY29yZTtcbiAgfVxuXG4gIGxvYWQoKSB7XG4gICAgaWYgKHR5cGVvZiB6eGN2Ym4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMuX2luY2x1ZGUuaW5jbHVkZSgnbWlzYWdvL2pzL3p4Y3Zibi5qcycpO1xuICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmdQcm9taXNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9sb2FkZWRQcm9taXNlKCk7XG4gICAgfVxuICB9XG5cbiAgX2xvYWRpbmdQcm9taXNlKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICB2YXIgd2FpdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodHlwZW9mIHp4Y3ZibiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgd2FpdCgpO1xuICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgd2FpdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgX2xvYWRlZFByb21pc2UoKSB7XG4gICAgLy8gd2UgaGF2ZSBhbHJlYWR5IGxvYWRlZCB6eGN2Ym4uanMsIHJlc29sdmUgYXdheSFcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBaeGN2Ym4oKTsiLCJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IFByb3ZpZGVyLCBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBCYW5uZWRQYWdlIGZyb20gJ21pc2Fnby9jb21wb25lbnRzL2Jhbm5lZC1wYWdlJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5pbXBvcnQgbWlzYWdvIGZyb20gJ21pc2Fnby9pbmRleCc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJzsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG5cbi8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbmxldCBzZWxlY3QgPSBmdW5jdGlvbihzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUudGljaztcbn07XG5cbmxldCBSZWRyYXdlZEJhbm5lZFBhZ2UgPSBjb25uZWN0KHNlbGVjdCkoQmFubmVkUGFnZSk7XG4vKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihiYW4sIGNoYW5nZVN0YXRlKSB7XG4gIFJlYWN0RE9NLnJlbmRlcihcbiAgICAvKiBqc2hpbnQgaWdub3JlOnN0YXJ0ICovXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZS5nZXRTdG9yZSgpfT5cbiAgICAgIDxSZWRyYXdlZEJhbm5lZFBhZ2UgbWVzc2FnZT17YmFuLm1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZXM9e2Jhbi5leHBpcmVzX29uID8gbW9tZW50KGJhbi5leHBpcmVzX29uKSA6IG51bGx9IC8+XG4gICAgPC9Qcm92aWRlcj4sXG4gICAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS1tb3VudCcpXG4gICk7XG5cbiAgaWYgKHR5cGVvZiBjaGFuZ2VTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgY2hhbmdlU3RhdGUpIHtcbiAgICBsZXQgZm9ydW1OYW1lID0gbWlzYWdvLmdldCgnU0VUVElOR1MnKS5mb3J1bV9uYW1lO1xuICAgIGRvY3VtZW50LnRpdGxlID0gZ2V0dGV4dChcIllvdSBhcmUgYmFubmVkXCIpICsgJyB8ICcgKyBmb3J1bU5hbWU7XG4gICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBcIlwiLCBtaXNhZ28uZ2V0KCdCQU5ORURfVVJMJykpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obGlzdCwgcm93V2lkdGgsIHBhZGRpbmc9ZmFsc2UpIHtcbiAgbGV0IHJvd3MgPSBbXTtcbiAgbGV0IHJvdyA9IFtdO1xuXG4gIGxpc3QuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgcm93LnB1c2goZWxlbWVudCk7XG4gICAgaWYgKHJvdy5sZW5ndGggPT09IHJvd1dpZHRoKSB7XG4gICAgICByb3dzLnB1c2gocm93KTtcbiAgICAgIHJvdyA9IFtdO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gcGFkIHJvdyB0byByZXF1aXJlZCBsZW5ndGg/XG4gIGlmIChwYWRkaW5nICE9PSBmYWxzZSAmJiByb3cubGVuZ3RoID4gMCAmJiByb3cubGVuZ3RoIDwgcm93V2lkdGgpIHtcbiAgICBmb3IgKGxldCBpID0gcm93Lmxlbmd0aDsgaSA8IHJvd1dpZHRoOyBpICsrKSB7XG4gICAgICByb3cucHVzaChwYWRkaW5nKTtcbiAgICB9XG4gIH1cblxuICBpZiAocm93Lmxlbmd0aCkge1xuICAgIHJvd3MucHVzaChyb3cpO1xuICB9XG5cbiAgcmV0dXJuIHJvd3M7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYnl0ZXMpIHtcbiAgaWYgKGJ5dGVzID4gMTAwMCAqIDEwMDAgKiAxMDAwKSB7XG4gICAgcmV0dXJuIChNYXRoLnJvdW5kKGJ5dGVzICogMTAwIC8gKDEwMDAgKiAxMDAwICogMTAwMCkpIC8gMTAwKSArICcgR0InO1xuICB9IGVsc2UgaWYgKGJ5dGVzID4gMTAwMCAqIDEwMDApIHtcbiAgICByZXR1cm4gKE1hdGgucm91bmQoYnl0ZXMgKiAxMDAgLyAoMTAwMCAqIDEwMDApKSAvIDEwMCkgKyAnIE1CJztcbiAgfSBlbHNlIGlmIChieXRlcyA+IDEwMDApIHtcbiAgICByZXR1cm4gKE1hdGgucm91bmQoYnl0ZXMgKiAxMDAgLyAxMDAwKSAvIDEwMCkgKyAnIEtCJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKE1hdGgucm91bmQoYnl0ZXMgKiAxMDApIC8gMTAwKSArICcgQic7XG4gIH1cbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdyZWFjdC1yZWR1eCc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuaW1wb3J0IHN0b3JlIGZyb20gJ21pc2Fnby9zZXJ2aWNlcy9zdG9yZSc7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihDb21wb25lbnQsIHJvb3RFbGVtZW50SWQsIGNvbm5lY3RlZD10cnVlKSB7XG4gIGxldCByb290RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHJvb3RFbGVtZW50SWQpO1xuXG4gIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgbGV0IGZpbmFsQ29tcG9uZW50ID0gQ29tcG9uZW50LnByb3BzID8gQ29tcG9uZW50IDogPENvbXBvbmVudCAvPjtcbiAgLyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuICBpZiAocm9vdEVsZW1lbnQpIHtcbiAgICBpZiAoY29ubmVjdGVkKSB7XG4gICAgICBSZWFjdERPTS5yZW5kZXIoXG4gICAgICAgIC8qIGpzaGludCBpZ25vcmU6c3RhcnQgKi9cbiAgICAgICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZS5nZXRTdG9yZSgpfT5cbiAgICAgICAgICB7ZmluYWxDb21wb25lbnR9XG4gICAgICAgIDwvUHJvdmlkZXI+LFxuICAgICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgICAgICByb290RWxlbWVudFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyoganNoaW50IGlnbm9yZTpzdGFydCAqL1xuICAgICAgUmVhY3RET00ucmVuZGVyKGZpbmFsQ29tcG9uZW50LCByb290RWxlbWVudCk7XG4gICAgICAvKiBqc2hpbnQgaWdub3JlOmVuZCAqL1xuICAgIH1cbiAgfVxufVxuIiwiY2xhc3MgT3JkZXJlZExpc3Qge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1zKSB7XG4gICAgICB0aGlzLmlzT3JkZXJlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcyB8fCBbXTtcbiAgICB9XG5cbiAgICBhZGQoa2V5LCBpdGVtLCBvcmRlcikge1xuICAgICAgdGhpcy5faXRlbXMucHVzaCh7XG4gICAgICAgIGtleToga2V5LFxuICAgICAgICBpdGVtOiBpdGVtLFxuXG4gICAgICAgIGFmdGVyOiBvcmRlciA/IG9yZGVyLmFmdGVyIHx8IG51bGwgOiBudWxsLFxuICAgICAgICBiZWZvcmU6IG9yZGVyID8gb3JkZXIuYmVmb3JlIHx8IG51bGwgOiBudWxsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5faXRlbXNbaV0ua2V5ID09PSBrZXkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNbaV0uaXRlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaGFzKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0KGtleSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YWx1ZXMoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhbHVlcy5wdXNoKHRoaXMuX2l0ZW1zW2ldLml0ZW0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG5cbiAgICBvcmRlcih2YWx1ZXNfb25seSkge1xuICAgICAgaWYgKCF0aGlzLmlzT3JkZXJlZCkge1xuICAgICAgICB0aGlzLl9pdGVtcyA9IHRoaXMuX29yZGVyKHRoaXMuX2l0ZW1zKTtcbiAgICAgICAgdGhpcy5pc09yZGVyZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWVzX29ubHkgfHwgdHlwZW9mIHZhbHVlc19vbmx5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBvcmRlcmVkVmFsdWVzKCkge1xuICAgICAgcmV0dXJuIHRoaXMub3JkZXIodHJ1ZSk7XG4gICAgfVxuXG4gICAgX29yZGVyKHVub3JkZXJlZCkge1xuICAgICAgLy8gSW5kZXggb2YgdW5vcmRlcmVkIGl0ZW1zXG4gICAgICB2YXIgaW5kZXggPSBbXTtcbiAgICAgIHVub3JkZXJlZC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIGluZGV4LnB1c2goaXRlbS5rZXkpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIE9yZGVyZWQgaXRlbXNcbiAgICAgIHZhciBvcmRlcmVkID0gW107XG4gICAgICB2YXIgb3JkZXJpbmcgPSBbXTtcblxuICAgICAgLy8gRmlyc3QgcGFzczogcmVnaXN0ZXIgaXRlbXMgdGhhdFxuICAgICAgLy8gZG9uJ3Qgc3BlY2lmeSB0aGVpciBvcmRlclxuICAgICAgdW5vcmRlcmVkLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaWYgKCFpdGVtLmFmdGVyICYmICFpdGVtLmJlZm9yZSkge1xuICAgICAgICAgIG9yZGVyZWQucHVzaChpdGVtKTtcbiAgICAgICAgICBvcmRlcmluZy5wdXNoKGl0ZW0ua2V5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNlY29uZCBwYXNzOiByZWdpc3RlciBpdGVtcyB0aGF0XG4gICAgICAvLyBzcGVjaWZ5IHRoZWlyIGJlZm9yZSB0byBcIl9lbmRcIlxuICAgICAgdW5vcmRlcmVkLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgaWYgKGl0ZW0uYmVmb3JlID09PSBcIl9lbmRcIikge1xuICAgICAgICAgIG9yZGVyZWQucHVzaChpdGVtKTtcbiAgICAgICAgICBvcmRlcmluZy5wdXNoKGl0ZW0ua2V5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRoaXJkIHBhc3M6IGtlZXAgaXRlcmF0aW5nIGl0ZW1zXG4gICAgICAvLyB1bnRpbCB3ZSBoaXQgaXRlcmF0aW9ucyBsaW1pdCBvciBmaW5pc2hcbiAgICAgIC8vIG9yZGVyaW5nIGxpc3RcbiAgICAgIGZ1bmN0aW9uIGluc2VydEl0ZW0oaXRlbSkge1xuICAgICAgICB2YXIgaW5zZXJ0QXQgPSAtMTtcbiAgICAgICAgaWYgKG9yZGVyaW5nLmluZGV4T2YoaXRlbS5rZXkpID09PSAtMSkge1xuICAgICAgICAgIGlmIChpdGVtLmFmdGVyKSB7XG4gICAgICAgICAgICBpbnNlcnRBdCA9IG9yZGVyaW5nLmluZGV4T2YoaXRlbS5hZnRlcik7XG4gICAgICAgICAgICBpZiAoaW5zZXJ0QXQgIT09IC0xKSB7XG4gICAgICAgICAgICAgIGluc2VydEF0ICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmJlZm9yZSkge1xuICAgICAgICAgICAgaW5zZXJ0QXQgPSBvcmRlcmluZy5pbmRleE9mKGl0ZW0uYmVmb3JlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaW5zZXJ0QXQgIT09IC0xKSB7XG4gICAgICAgICAgICBvcmRlcmVkLnNwbGljZShpbnNlcnRBdCwgMCwgaXRlbSk7XG4gICAgICAgICAgICBvcmRlcmluZy5zcGxpY2UoaW5zZXJ0QXQsIDAsIGl0ZW0ua2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIGl0ZXJhdGlvbnMgPSAyMDA7XG4gICAgICB3aGlsZSAoaXRlcmF0aW9ucyA+IDAgJiYgaW5kZXgubGVuZ3RoICE9PSBvcmRlcmluZy5sZW5ndGgpIHtcbiAgICAgICAgaXRlcmF0aW9ucyAtPSAxO1xuICAgICAgICB1bm9yZGVyZWQuZm9yRWFjaChpbnNlcnRJdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yZGVyZWQ7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0IGRlZmF1bHQgT3JkZXJlZExpc3Q7XG4iLCJleHBvcnQgZnVuY3Rpb24gaW50KG1pbiwgbWF4KSB7XG4gIHJldHVybiBNYXRoLmZsb29yKChNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSkgKyBtaW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5nZShtaW4sIG1heCkge1xuICBsZXQgYXJyYXkgPSBuZXcgQXJyYXkoaW50KG1pbiwgbWF4KSk7XG4gIGZvcihsZXQgaT0wOyBpPGFycmF5Lmxlbmd0aDsgaSsrKXtcbiAgICBhcnJheVtpXSA9IGk7XG4gIH1cblxuICByZXR1cm4gYXJyYXk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbn0iLCIvLyBqc2hpbnQgaWdub3JlOnN0YXJ0XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ3JlYWN0LXJvdXRlcic7XG5pbXBvcnQgY3JlYXRlSGlzdG9yeSBmcm9tICdoaXN0b3J5L2xpYi9jcmVhdGVCcm93c2VySGlzdG9yeSc7XG5pbXBvcnQgc3RvcmUgZnJvbSAnbWlzYWdvL3NlcnZpY2VzL3N0b3JlJztcblxuY29uc3Qgcm9vdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS1tb3VudCcpO1xuY29uc3QgaGlzdG9yeSA9IG5ldyBjcmVhdGVIaXN0b3J5KCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgbGV0IHJvdXRlcyA9IHtcbiAgICBjb21wb25lbnQ6IG9wdGlvbnMuY29tcG9uZW50LFxuICAgIGNoaWxkUm91dGVzOiBbXG4gICAgICB7XG4gICAgICAgIHBhdGg6IG9wdGlvbnMucm9vdCxcbiAgICAgICAgb25FbnRlcjogZnVuY3Rpb24obmV4dFN0YXRlLCByZXBsYWNlU3RhdGUpIHtcbiAgICAgICAgICByZXBsYWNlU3RhdGUobnVsbCwgb3B0aW9ucy5wYXRoc1swXS5wYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0uY29uY2F0KG9wdGlvbnMucGF0aHMubWFwKGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH0pKVxuICB9O1xuXG4gIFJlYWN0RE9NLnJlbmRlcihcbiAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlLmdldFN0b3JlKCl9PlxuICAgICAgPFJvdXRlciByb3V0ZXM9e3JvdXRlc30gaGlzdG9yeT17aGlzdG9yeX0gLz5cbiAgICA8L1Byb3ZpZGVyPixcbiAgICByb290RWxlbWVudFxuICApO1xufVxuIiwiY29uc3QgRU1BSUwgPSAvXigoW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSsoXFwuW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSspKil8KFxcXCIuK1xcXCIpKUAoKFtePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl0rXFwuKStbXjw+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 a(){c=!1,i.length?l=i.concat(l):f=-1,l.length&&r()}function r(){if(!c){var e=setTimeout(a);c=!0;for(var t=l.length;t;){for(i=l,l=[];++f<t;)i&&i[f].run();f=-1,t=l.length}i=null,c=!1,clearTimeout(e)}}function o(e,t){this.fun=e,this.array=t}function s(){}var i,u=t.exports={},l=[],c=!1,f=-1;u.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new o(e,t)),1!==l.length||c||setTimeout(r,0)},o.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=s,u.addListener=s,u.once=s,u.off=s,u.removeListener=s,u.removeAllListeners=s,u.emit=s,u.binding=function(e){throw new Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(e){throw new Error("process.chdir is not supported")},u.umask=function(){return 0}},{}],2:[function(e,t,n){(function(t){"use strict";function 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("../../../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[e]}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}},{key:"pop",value:function(e){if(this.has(e)){var t=this._context[e];return this._context[e]=null,t}}}]),e}(),l=new u;t.misago=l,n["default"]=l}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../../misago/frontend/src/utils/ordered-list":151}],3:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/ajax"),u=a(i);s["default"].addInitializer({name:"ajax",initializer:r})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/ajax":135}],4:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){u["default"].init(d["default"],m["default"],c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/auth"),u=a(i),l=e("../../../../misago/frontend/src/services/modal"),c=a(l),f=e("../../../../misago/frontend/src/services/store"),d=a(f),p=e("../../../../misago/frontend/src/services/local-storage"),m=a(p);s["default"].addInitializer({name:"auth",initializer:r,after:"store"})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/auth":136,"../../../../misago/frontend/src/services/local-storage":139,"../../../../misago/frontend/src/services/modal":141,"../../../../misago/frontend/src/services/store":145}],5:[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"],d["default"],m["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/ajax"),u=a(i),l=e("../../../../misago/frontend/src/services/captcha"),c=a(l),f=e("../../../../misago/frontend/src/services/include"),d=a(f),p=e("../../../../misago/frontend/src/services/snackbar"),m=a(p);s["default"].addInitializer({name:"captcha",initializer:r})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/ajax":135,"../../../../misago/frontend/src/services/captcha":137,"../../../../misago/frontend/src/services/include":138,"../../../../misago/frontend/src/services/snackbar":144}],6:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){(0,f["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("../../../../../misago/frontend/src/index"),i=a(s),u=e("../../../../../misago/frontend/src/components/auth-message"),l=a(u),c=e("../../../../../misago/frontend/src/utils/mount-component"),f=a(c);i["default"].addInitializer({name:"component:auth-message",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/components/auth-message":53,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150,"react-redux":"react-redux"}],7:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){e.has("BAN_MESSAGE")&&(0,u["default"])(e.get("BAN_MESSAGE"),!1)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/utils/banned-page"),u=a(i);s["default"].addInitializer({name:"component:baned-page",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/banned-page":147}],8:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){e.has("CATEGORIES")&&(0,f["default"])((0,o.connect)(s.select)(i["default"]),"page-mount")}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("react-redux"),s=e("../../../../../misago/frontend/src/components/categories/root"),i=a(s),u=e("../../../../../misago/frontend/src/index"),l=a(u),c=e("../../../../../misago/frontend/src/utils/mount-component"),f=a(c);l["default"].addInitializer({name:"component:reset-password-form",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/components/categories/root":61,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150,"react-redux":"react-redux"}],9:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){e.has("USER_OPTIONS")&&(0,c["default"])({root:u["default"].get("USERCP_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../misago/frontend/src/components/options/root"),s=a(o),i=e("../../../../../misago/frontend/src/index"),u=a(i),l=e("../../../../../misago/frontend/src/utils/routed-component"),c=a(l);u["default"].addInitializer({name:"component:options",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/components/options/root":80,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/routed-component":154}],10:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){e.has("PROFILE")&&e.has("PROFILE_PAGES")&&(0,f["default"])({root:l["default"].get("PROFILE").absolute_url,component:(0,o.connect)(s.select)(i["default"]),paths:(0,s.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("react-redux"),s=e("../../../../../misago/frontend/src/components/profile/root"),i=a(s),u=e("../../../../../misago/frontend/src/index"),l=a(u),c=e("../../../../../misago/frontend/src/utils/routed-component"),f=a(c);l["default"].addInitializer({name:"component:profile",initializer:r,after:"reducer:profile-dehydrate"})},{"../../../../../misago/frontend/src/components/profile/root":97,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/routed-component":154,"react-redux":"react-redux"}],11:[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("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/components/request-activation-link"),u=a(i),l=e("../../../../../misago/frontend/src/utils/mount-component"),c=a(l);s["default"].addInitializer({name:"component:request-activation-link",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/components/request-activation-link":101,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150}],12:[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("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/components/request-password-reset"),u=a(i),l=e("../../../../../misago/frontend/src/utils/mount-component"),c=a(l);s["default"].addInitializer({name:"component:request-password-reset",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/components/request-password-reset":102,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150}],13:[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("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/components/reset-password-form"),u=a(i),l=e("../../../../../misago/frontend/src/utils/mount-component"),c=a(l);s["default"].addInitializer({name:"component:reset-password-form",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/components/reset-password-form":103,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150}],14:[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("../../../../../misago/frontend/src/index"),i=a(s),u=e("../../../../../misago/frontend/src/components/snackbar"),l=e("../../../../../misago/frontend/src/utils/mount-component"),c=a(l);i["default"].addInitializer({name:"component:snackbar",initializer:r,after:"snackbar"})},{"../../../../../misago/frontend/src/components/snackbar":107,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150,"react-redux":"react-redux"}],15:[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("../../../../../misago/frontend/src/index"),i=a(s),u=e("../../../../../misago/frontend/src/components/user-menu/root"),l=e("../../../../../misago/frontend/src/utils/mount-component"),c=a(l);i["default"].addInitializer({name:"component:user-menu",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/components/user-menu/root":109,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/mount-component":150,"react-redux":"react-redux"}],16:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){e.has("USERS_LISTS")&&(0,c["default"])({root:u["default"].get("USERS_LIST_URL"),component:s["default"],paths:(0,o.paths)()})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../misago/frontend/src/components/users/root"),s=a(o),i=e("../../../../../misago/frontend/src/index"),u=a(i),l=e("../../../../../misago/frontend/src/utils/routed-component"),c=a(l);u["default"].addInitializer({name:"component:users",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/components/users/root":126,"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/utils/routed-component":154}],17:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/include"),u=a(i);s["default"].addInitializer({name:"include",initializer:r})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/include":138}],18:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/local-storage"),u=a(i);s["default"].addInitializer({name:"local-storage",initializer:r})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/local-storage":139}],19:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/mobile-navbar-dropdown"),u=a(i);s["default"].addInitializer({name:"dropdown",initializer:r,before:"store"})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/mobile-navbar-dropdown":140}],20:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/modal"),u=a(i);s["default"].addInitializer({name:"modal",initializer:r,before:"store"})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/modal":141}],21:[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("../../../../misago/frontend/src/index"),u=a(i);u["default"].addInitializer({name:"moment",initializer:r})},{"../../../../misago/frontend/src/index":128,moment:"moment"}],22:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){u["default"].init(e.get("SETTINGS").forum_name)}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/page-title"),u=a(i);s["default"].addInitializer({name:"page-title",initializer:r})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/page-title":142}],23:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){d["default"].init(u["default"],c["default"])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/ajax"),u=a(i),l=e("../../../../misago/frontend/src/services/snackbar"),c=a(l),f=e("../../../../misago/frontend/src/services/polls"),d=a(f);s["default"].addInitializer({name:"polls",initializer:r})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/ajax":135,"../../../../misago/frontend/src/services/polls":143,"../../../../misago/frontend/src/services/snackbar":144}],24:[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("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/reducers/auth"),u=a(i),l=e("../../../../../misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:auth",initializer:r,before:"store"})},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/auth":129,"../../../../../misago/frontend/src/services/store":145}],25:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){s["default"].has("PROFILE")&&l["default"].dispatch((0,i.dehydrate)(s["default"].get("PROFILE")))}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/reducers/profile"),u=e("../../../../../misago/frontend/src/services/store"),l=a(u);s["default"].addInitializer({name:"reducer:profile-dehydrate",initializer:r,after:"store"})},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/profile":130,"../../../../../misago/frontend/src/services/store":145}],26:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){c["default"].addReducer("profile",u["default"],{})}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/reducers/profile"),u=a(i),l=e("../../../../../misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:profile",initializer:r,before:"store"})},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/profile":130,"../../../../../misago/frontend/src/services/store":145}],27:[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("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/reducers/snackbar"),u=a(i),l=e("../../../../../misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:snackbar",initializer:r,before:"store"})},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/snackbar":131,"../../../../../misago/frontend/src/services/store":145}],28:[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("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/reducers/tick"),u=a(i),l=e("../../../../../misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:tick",initializer:r,before:"store"})},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/tick":132,"../../../../../misago/frontend/src/services/store":145}],29:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){c["default"].addReducer("username-history",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/reducers/username-history"),u=a(i),l=e("../../../../../misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:username-history",initializer:r,before:"store"})},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/username-history":133,"../../../../../misago/frontend/src/services/store":145}],30:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){c["default"].addReducer("users",u["default"],[])}Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=r;var o=e("../../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../../misago/frontend/src/reducers/users"),u=a(i),l=e("../../../../../misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"reducer:users",initializer:r,before:"store"})},{"../../../../../misago/frontend/src/index":128,"../../../../../misago/frontend/src/reducers/users":134,"../../../../../misago/frontend/src/services/store":145}],31:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/snackbar"),u=a(i),l=e("../../../../misago/frontend/src/services/store"),c=a(l);s["default"].addInitializer({name:"snackbar",initializer:r,after:"store"})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/snackbar":144,"../../../../misago/frontend/src/services/store":145}],32:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/store"),u=a(i);s["default"].addInitializer({name:"store",initializer:r,before:"_end"})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/store":145}],33:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/reducers/tick"),u=e("../../../../misago/frontend/src/services/store"),l=a(u),c=5e4;s["default"].addInitializer({name:"tick-start",initializer:r,after:"store"})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/reducers/tick":132,"../../../../misago/frontend/src/services/store":145}],34:[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("../../../../misago/frontend/src/index"),s=a(o),i=e("../../../../misago/frontend/src/services/include"),u=a(i),l=e("../../../../misago/frontend/src/services/zxcvbn"),c=a(l);s["default"].addInitializer({name:"zxcvbn",initializer:r})},{"../../../../misago/frontend/src/index":128,"../../../../misago/frontend/src/services/include":138,"../../../../misago/frontend/src/services/zxcvbn":146}],35:[function(e,t,n){function a(e){return null===e||void 0===e}function r(e){return e&&"object"==typeof e&&"number"==typeof e.length?"function"!=typeof e.copy||"function"!=typeof e.slice?!1:e.length>0&&"number"!=typeof e[0]?!1:!0:!1}function o(e,t,n){var o,c;if(a(e)||a(t))return!1;if(e.prototype!==t.prototype)return!1;if(u(e))return u(t)?(e=s.call(e),t=s.call(t),l(e,t,n)):!1;if(r(e)){if(!r(t))return!1;if(e.length!==t.length)return!1;for(o=0;o<e.length;o++)if(e[o]!==t[o])return!1;return!0}try{var f=i(e),d=i(t)}catch(p){return!1}if(f.length!=d.length)return!1;for(f.sort(),d.sort(),o=f.length-1;o>=0;o--)if(f[o]!=d[o])return!1;for(o=f.length-1;o>=0;o--)if(c=f[o],!l(e[c],t[c],n))return!1;return typeof e==typeof t}var s=Array.prototype.slice,i=e("./lib/keys.js"),u=e("./lib/is_arguments.js"),l=t.exports=function(e,t,n){return n||(n={}),e===t?!0:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?n.strict?e===t:e==t:o(e,t,n)}},{"./lib/is_arguments.js":36,"./lib/keys.js":37}],36:[function(e,t,n){function a(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function r(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();n=t.exports=o?a:r,n.supported=a,n.unsupported=r},{}],37:[function(e,t,n){function a(e){var t=[];for(var n in e)t.push(n);return t}n=t.exports="function"==typeof Object.keys?Object.keys:a,n.shim=a},{}],38:[function(e,t,n){"use strict";n.__esModule=!0;var a="PUSH";n.PUSH=a;var r="REPLACE";n.REPLACE=r;var o="POP";n.POP=o,n["default"]={PUSH:a,REPLACE:r,POP:o}},{}],39:[function(e,t,n){"use strict";function a(e,t,n){function a(){s=!0,n.apply(this,arguments)}function r(){s||(e>o?t.call(this,o++,r,a):a.apply(this,arguments))}var o=0,s=!1;r()}n.__esModule=!0,n.loopAsync=a},{}],40:[function(e,t,n){(function(t){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){return l+e}function o(e,n){try{window.sessionStorage.setItem(r(e),JSON.stringify(n))}catch(a){if(a.name===f)return void("production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to save state; sessionStorage is not available due to security settings"):void 0);if(a.name===c&&0===window.sessionStorage.length)return void("production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to save state; sessionStorage is not available in Safari private mode"):void 0);throw a}}function s(e){var n=void 0;try{n=window.sessionStorage.getItem(r(e))}catch(a){if(a.name===f)return"production"!==t.env.NODE_ENV?u["default"](!1,"[history] Unable to read state; sessionStorage is not available due to security settings"):void 0,null}if(n)try{return JSON.parse(n)}catch(a){}return null}n.__esModule=!0,n.saveState=o,n.readState=s;var i=e("warning"),u=a(i),l="@@History/",c="QuotaExceededError",f="SecurityError"}).call(this,e("_process"))},{_process:1,warning:52}],41:[function(e,t,n){"use strict";function a(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function r(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on"+t,n)}function o(){return window.location.href.split("#")[1]||""}function s(e){window.location.replace(window.location.pathname+window.location.search+"#"+e)}function i(){return window.location.pathname+window.location.search+window.location.hash}function u(e){e&&window.history.go(e)}function l(e,t){t(window.confirm(e))}function c(){var e=navigator.userAgent;return-1===e.indexOf("Android 2.")&&-1===e.indexOf("Android 4.0")||-1===e.indexOf("Mobile Safari")||-1!==e.indexOf("Chrome")||-1!==e.indexOf("Windows Phone")?-1!==e.indexOf("CriOS")?!1:window.history&&"pushState"in window.history:!1}function f(){var e=navigator.userAgent;return-1===e.indexOf("Firefox")}n.__esModule=!0,n.addEventListener=a,n.removeEventListener=r,n.getHashPath=o,n.replaceHashPath=s,n.getWindowPath=i,n.go=u,n.getUserConfirmation=l,n.supportsHistory=c,n.supportsGoWithoutReloadUsingHash=f},{}],42:[function(e,t,n){"use strict";n.__esModule=!0;var a=!("undefined"==typeof window||!window.document||!window.document.createElement);n.canUseDOM=a},{}],43:[function(e,t,n){(function(a){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(){function e(e){e=e||window.history.state||{};var t=f.getWindowPath(),n=e,a=n.key,r=void 0;a?r=d.readState(a):(r=null,a=_.createKey(),b&&window.history.replaceState(s({},e,{key:a}),null,t));var o=g["default"](t);return _.createLocation(s({},o,{state:r}),void 0,a)}function t(t){function n(t){void 0!==t.state&&a(e(t.state))}var a=t.transitionTo;return f.addEventListener(window,"popstate",n),function(){f.removeEventListener(window,"popstate",n)}}function n(e){var t=e.basename,n=e.pathname,a=e.search,r=e.hash,o=e.state,s=e.action,i=e.key;if(s!==l.POP){d.saveState(i,o);var u=(t||"")+n+a+r,c={key:i};if(s===l.PUSH){if(y)return window.location.href=u,!1;window.history.pushState(c,null,u)}else{if(y)return window.location.replace(u),!1;window.history.replaceState(c,null,u)}}}function r(e){1===++w&&(E=t(_));var n=_.listenBefore(e);return function(){n(),0===--w&&E()}}function o(e){1===++w&&(E=t(_));var n=_.listen(e);return function(){n(),0===--w&&E()}}function i(e){1===++w&&(E=t(_)),_.registerTransitionHook(e)}function p(e){_.unregisterTransitionHook(e),0===--w&&E()}var h=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];c.canUseDOM?void 0:"production"!==a.env.NODE_ENV?u["default"](!1,"Browser history needs a DOM"):u["default"](!1);var v=h.forceRefresh,b=f.supportsHistory(),y=!b||v,_=m["default"](s({},h,{getCurrentLocation:e,finishTransition:n,saveState:d.saveState})),w=0,E=void 0;return s({},_,{listenBefore:r,listen:o,registerTransitionHook:i,unregisterTransitionHook:p})}n.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},i=e("invariant"),u=r(i),l=e("./Actions"),c=e("./ExecutionEnvironment"),f=e("./DOMUtils"),d=e("./DOMStateStorage"),p=e("./createDOMHistory"),m=r(p),h=e("./parsePath"),g=r(h);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./Actions":38,"./DOMStateStorage":40,"./DOMUtils":41,"./ExecutionEnvironment":42,"./createDOMHistory":44,"./parsePath":49,_process:1,invariant:51}],44:[function(e,t,n){(function(a){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e){function t(e){return l.canUseDOM?void 0:"production"!==a.env.NODE_ENV?u["default"](!1,"DOM history needs a DOM"):u["default"](!1),n.listen(e)}var n=d["default"](s({getUserConfirmation:c.getUserConfirmation},e,{go:c.go}));return s({},n,{listen:t})}n.__esModule=!0;var s=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},i=e("invariant"),u=r(i),l=e("./ExecutionEnvironment"),c=e("./DOMUtils"),f=e("./createHistory"),d=r(f);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./DOMUtils":41,"./ExecutionEnvironment":42,"./createHistory":45,_process:1,invariant:51}],45:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){return Math.random().toString(36).substr(2,e)}function o(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.key===t.key&&l["default"](e.state,t.state)}function s(){function e(e){return U.push(e),function(){U=U.filter(function(t){return t!==e})}}function t(){return H&&H.action===f.POP?D.indexOf(H.key):B?D.indexOf(B.key):-1}function n(e){var n=t();B=e,B.action===f.PUSH?D=[].concat(D.slice(0,n+1),[B.key]):B.action===f.REPLACE&&(D[n]=B.key),z.forEach(function(e){e(B)})}function a(e){
+if(z.push(e),B)e(B);else{var t=M();D=[t.key],n(t)}return function(){z=z.filter(function(t){return t!==e})}}function s(e,t){c.loopAsync(U.length,function(t,n,a){h["default"](U[t],e,function(e){null!=e?a(e):n()})},function(e){A&&"string"==typeof e?A(e,function(e){t(e!==!1)}):t(e!==!1)})}function u(e){B&&o(B,e)||(H=e,s(e,function(t){if(H===e)if(t){if(e.action===f.PUSH){var a=w(B),r=w(e);r===a&&(e.action=f.REPLACE)}T(e)!==!1&&n(e)}else if(B&&e.action===f.POP){var o=D.indexOf(B.key),s=D.indexOf(e.key);-1!==o&&-1!==s&&R(o-s)}}))}function l(e){u(O(e,f.PUSH,b()))}function d(e){u(O(e,f.REPLACE,b()))}function m(){R(-1)}function g(){R(1)}function b(){return r(I)}function w(e){if(null==e||"string"==typeof e)return e;var t=e.pathname,n=e.search,a=e.hash,r=t;return n&&(r+=n),a&&(r+=a),r}function E(e){return w(e)}function O(e,t){var n=arguments.length<=2||void 0===arguments[2]?b():arguments[2];return"object"==typeof t&&("string"==typeof e&&(e=v["default"](e)),e=i({},e,{state:t}),t=n,n=arguments[3]||b()),p["default"](e,t,n)}function k(e){B?(N(B,e),n(B)):N(M(),e)}function N(e,t){e.state=i({},e.state,t),L(e.key,e.state)}function x(e){-1===U.indexOf(e)&&U.push(e)}function j(e){U=U.filter(function(t){return t!==e})}function P(e,t){"string"==typeof t&&(t=v["default"](t)),l(i({state:e},t))}function S(e,t){"string"==typeof t&&(t=v["default"](t)),d(i({state:e},t))}var C=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],M=C.getCurrentLocation,T=C.finishTransition,L=C.saveState,R=C.go,I=C.keyLength,A=C.getUserConfirmation;"number"!=typeof I&&(I=_);var U=[],D=[],z=[],B=void 0,H=void 0;return{listenBefore:e,listen:a,transitionTo:u,push:l,replace:d,go:R,goBack:m,goForward:g,createKey:b,createPath:w,createHref:E,createLocation:O,setState:y["default"](k,"setState is deprecated; use location.key to save state instead"),registerTransitionHook:y["default"](x,"registerTransitionHook is deprecated; use listenBefore instead"),unregisterTransitionHook:y["default"](j,"unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead"),pushState:y["default"](P,"pushState is deprecated; use push instead"),replaceState:y["default"](S,"replaceState is deprecated; use replace instead")}}n.__esModule=!0;var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},u=e("deep-equal"),l=a(u),c=e("./AsyncUtils"),f=e("./Actions"),d=e("./createLocation"),p=a(d),m=e("./runTransitionHook"),h=a(m),g=e("./parsePath"),v=a(g),b=e("./deprecate"),y=a(b),_=6;n["default"]=s,t.exports=n["default"]},{"./Actions":38,"./AsyncUtils":39,"./createLocation":46,"./deprecate":47,"./parsePath":49,"./runTransitionHook":50,"deep-equal":35}],46:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(){var e=arguments.length<=0||void 0===arguments[0]?"/":arguments[0],t=arguments.length<=1||void 0===arguments[1]?s.POP:arguments[1],n=arguments.length<=2||void 0===arguments[2]?null:arguments[2],a=arguments.length<=3||void 0===arguments[3]?null:arguments[3];"string"==typeof e&&(e=u["default"](e)),"object"==typeof t&&(e=o({},e,{state:t}),t=n||s.POP,n=a);var r=e.pathname||"/",i=e.search||"",l=e.hash||"",c=e.state||null;return{pathname:r,search:i,hash:l,state:c,action:t,key:n}}n.__esModule=!0;var o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},s=e("./Actions"),i=e("./parsePath"),u=a(i);n["default"]=r,t.exports=n["default"]},{"./Actions":38,"./parsePath":49}],47:[function(e,t,n){"use strict";function a(e){return e}n.__esModule=!0,n["default"]=a,t.exports=n["default"]},{}],48:[function(e,t,n){"use strict";function a(e){var t=e.match(/^https?:\/\/[^\/]*/);return null==t?e:e.substring(t[0].length)}n.__esModule=!0,n["default"]=a,t.exports=n["default"]},{}],49:[function(e,t,n){(function(a){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e){var t=l["default"](e),n="",r="";"production"!==a.env.NODE_ENV?i["default"](e===t,'A path must be pathname + search + hash only, not a fully qualified URL like "%s"',e):void 0;var o=t.indexOf("#");-1!==o&&(r=t.substring(o),t=t.substring(0,o));var s=t.indexOf("?");return-1!==s&&(n=t.substring(s),t=t.substring(0,s)),""===t&&(t="/"),{pathname:t,search:n,hash:r}}n.__esModule=!0;var s=e("warning"),i=r(s),u=e("./extractPath"),l=r(u);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{"./extractPath":48,_process:1,warning:52}],50:[function(e,t,n){(function(a){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,n){var r=e(t,n);e.length<2?n(r):"production"!==a.env.NODE_ENV?i["default"](void 0===r,'You should not "return" in a transition hook with a callback argument; call the callback instead'):void 0}n.__esModule=!0;var s=e("warning"),i=r(s);n["default"]=o,t.exports=n["default"]}).call(this,e("_process"))},{_process:1,warning:52}],51:[function(e,t,n){"use strict";var a=function(e,t,n,a,r,o,s,i){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,a,r,o,s,i],c=0;u=new Error(t.replace(/%s/g,function(){return l[c++]})),u.name="Invariant Violation"}throw u.framesToPop=1,u}};t.exports=a},{}],52:[function(e,t,n){"use strict";var a=function(){};t.exports=a},{}],53:[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),f=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"]=f},{react:"react"}],54:[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/",f=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"]=f},{react:"react"}],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")}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"),f=a(c),d=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?f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.message.html}}):f["default"].createElement("p",{className:"lead"},this.props.message.plain)}},{key:"getExpirationMessage",value:function(){if(this.props.expires){if(this.props.expires.isAfter((0,l["default"])())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.props.expires.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.props.expires.fromNow()},!0);return f["default"].createElement("abbr",{title:e},t)}return gettext("This ban has expired.")}return gettext("This ban is permanent.")}},{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-error page-error-banned"},f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"message-panel"},f["default"].createElement("div",{className:"message-icon"},f["default"].createElement("span",{className:"material-icon"},"highlight_off")),f["default"].createElement("div",{className:"message-body"},this.getReasonMessage(),f["default"].createElement("p",{className:"message-footnote"},this.getExpirationMessage())))))}}]),t}(f["default"].Component);n["default"]=d},{moment:"moment",react:"react"}],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")}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"),f=a(c),d=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(f["default"],null):null)}}]),t}(l["default"].Component);n["default"]=d,d.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},{"./loader":71,react:"react"}],57:[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("./last-activity"),f=a(c),d=e("./read-icon"),p=a(d),m=e("./stats"),h=a(m),g=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.category.css_class?"panel panel-default panel-category panel-category-"+this.props.category.css_class:"panel panel-default panel-category"}},{key:"getHeadingClassName",value:function(){return this.props.category.subcategories.length?"panel-heading":"panel-heading heading-alone"}},{key:"getCategoryDescription",value:function(){return this.props.category.description?l["default"].createElement("div",{className:"panel-body category-description",dangerouslySetInnerHTML:{__html:this.props.category.description.html}}):null}},{key:"getSubcategoryClass",value:function(e){return e.css_class?"list-group-item category-subcategory subcategory-"+e.css_class:"list-group-item category-subcategory"}},{key:"getSubcategoryDescription",value:function(e){return e.description?l["default"].createElement("div",{className:"subcategory-description",dangerouslySetInnerHTML:{__html:e.description.html}}):null}},{key:"getSubcategorySubcategoryClass",value:function(e){return e.css_class?"subcategory subcategory-"+e.css_class:"subcategory"}},{key:"getSubcategorySubcategories",value:function(e){var t=this;return e.subcategories.length?l["default"].createElement("ul",{className:"list-inline subcategory-subcategories"},e.subcategories.map(function(e){return l["default"].createElement("li",{key:e.id},l["default"].createElement("a",{href:e.absolute_url,className:t.getSubcategorySubcategoryClass(e)},e.name))})):null}},{key:"getSubcategories",value:function(){var e=this;return this.props.category.subcategories.length?l["default"].createElement("ul",{className:"list-group category-subcategories"},this.props.category.subcategories.map(function(t){return l["default"].createElement("li",{className:e.getSubcategoryClass(t),key:t.id},l["default"].createElement("div",{className:"title-row"},l["default"].createElement("h4",null,l["default"].createElement(p["default"],{category:t}),l["default"].createElement("a",{href:t.absolute_url,className:"item-title"},t.name)),l["default"].createElement(h["default"],{category:t})),l["default"].createElement(f["default"],{category:t}),e.getSubcategoryDescription(t),e.getSubcategorySubcategories(t))})):null}},{key:"render",value:function(){return l["default"].createElement("div",{id:"panel-category-"+this.props.category.id,className:this.getClassName()},l["default"].createElement("div",{className:this.getHeadingClassName()},l["default"].createElement("div",{className:"panel-heading-inblock"},l["default"].createElement("div",{className:"panel-heading-top-row"},l["default"].createElement("h3",{className:"panel-title"},l["default"].createElement(p["default"],{category:this.props.category}),l["default"].createElement("a",{href:this.props.category.absolute_url,className:"item-title"},this.props.category.name)),l["default"].createElement(h["default"],{category:this.props.category})),l["default"].createElement(f["default"],{category:this.props.category}))),this.getCategoryDescription(),this.getSubcategories())}}]),t}(l["default"].Component);n["default"]=g},{"./last-activity":59,"./read-icon":60,"./stats":62,react:"react"}],58:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}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:"message-panel"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},gettext("No categories are available.")),l["default"].createElement("p",null,gettext("No categories are currently defined or you don't have permission to see them."))))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],59:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}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:"getLastPoster",value:function(){return this.props.category.last_poster_url?l["default"].createElement("a",{href:this.props.category.last_poster_url,className:"item-title"},this.props.category.last_poster_name):l["default"].createElement("span",{className:"item-title"},this.props.category.last_poster_name)}},{key:"getThreadDetails",value:function(){return[l["default"].createElement("li",{className:"thread-title",key:"title"},l["default"].createElement("a",{href:this.props.category.last_thread_url,className:"item-title"},this.props.category.last_thread_title)),l["default"].createElement("li",{className:"poster-name",key:"poster"},this.getLastPoster()),l["default"].createElement("li",{className:"thread-date",key:"date"},l["default"].createElement("abbr",{title:this.props.category.last_post_on.format("LL, LT")},this.props.category.last_post_on.fromNow()))]}},{key:"getLastActivity",value:function(){return this.props.category.acl.can_browse?this.props.category.acl.can_see_all_threads?this.props.category.last_thread_title?this.getThreadDetails():l["default"].createElement("li",{className:"thread-message"},l["default"].createElement("span",{className:"material-icon"},"error_outline"),gettext("This category is empty.")):l["default"].createElement("li",{className:"thread-message"},l["default"].createElement("span",{className:"material-icon"},"info_outline"),gettext("This category is private. You can see only your own threads within it.")):l["default"].createElement("li",{className:"thread-message"},l["default"].createElement("span",{className:"material-icon"},"highlight_off"),gettext("This category is protected. You can't browse it's contents."))}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"list-inline category-last-activity"},this.getLastActivity())}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],60:[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:"getClassName",value:function(){return this.props.category.is_read?"material-icon read-status item-read":"material-icon read-status item-new"}},{key:"getTitle",value:function(){return this.props.category.is_closed?this.props.category.is_read?gettext("This category has no new posts. (closed)"):gettext("This category has new posts. (closed)"):this.props.category.is_read?gettext("This category has no new posts."):gettext("This category has new posts.")}},{key:"getIcon",value:function(){return this.props.category.is_closed?this.props.category.is_read?"lock_outline":"lock":this.props.category.is_read?"chat_bubble_outline":"chat_bubble"}},{key:"render",value:function(){return l["default"].createElement("span",{className:this.getClassName(),title:this.getTitle()},this.getIcon())}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],61:[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{tick:e.tick.tick}}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("moment"),c=a(l),f=e("react"),d=a(f),p=e("./category"),m=a(p),h=e("./empty-message"),g=a(h),v=e("../../index"),b=a(v),y=e("../../services/polls"),_=a(y),w=function O(e){return Object.assign({},e,{last_post_on:e.last_post_on?(0,c["default"])(e.last_post_on):null,subcategories:e.subcategories.map(O)})},E=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){n.setState({categories:e.map(w)})},n.state={categories:b["default"].get("CATEGORIES").map(w)},n.startPolling(b["default"].get("CATEGORIES_API")),n}return s(t,e),u(t,[{key:"startPolling",value:function(e){_["default"].start({poll:"categories",url:e,frequency:18e4,update:this.update})}},{key:"getClassName",value:function(){return this.state.categories.length?"page page-categories":"page page-categories page-message"}},{key:"getHeading",value:function(){return b["default"].get("CATEGORIES_ON_INDEX")?b["default"].get("SETTINGS").forum_name:gettext("Categories")}},{key:"getCategoriesList",value:function(){return this.state.categories.length?d["default"].createElement("div",{className:"categories-list"},this.state.categories.map(function(e){return d["default"].createElement(m["default"],{category:e,key:e.id})})):d["default"].createElement(g["default"],null)}},{key:"render",value:function(){return d["default"].createElement("div",{className:this.getClassName()},d["default"].createElement("div",{className:"page-header"},d["default"].createElement("div",{className:"container"},d["default"].createElement("h1",null,this.getHeading()))),d["default"].createElement("div",{className:"container"},this.getCategoriesList()))}}]),t}(d["default"].Component);n["default"]=E},{"../../index":128,"../../services/polls":143,"./category":57,"./empty-message":58,moment:"moment",react:"react"}],62:[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:"getThreadsCount",value:function(){var e=ngettext("%(threads)s thread","%(threads)s threads",this.props.category.threads);return interpolate(e,{threads:this.props.category.threads},!0)}},{key:"getPostsCount",value:function(){var e=ngettext("%(posts)s post","%(posts)s posts",this.props.category.posts);return interpolate(e,{posts:this.props.category.posts},!0)}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"list-inline category-stats"},l["default"].createElement("li",{className:"category-threads"},this.getThreadsCount()),l["default"].createElement("li",{className:"category-posts"},this.getPostsCount()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],63:[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"),f=(a(c),e("../button")),d=a(f),p=e("../../services/ajax"),m=a(p),h=e("../../services/snackbar"),g=a(h),v=$("base").attr("href")+"user-avatar",b=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.cropAvatar=function(){if(n.state.isLoading)return!1;n.setState({isLoading:!0});var e=n.props.upload?"crop_tmp":"crop_org",t=$(".crop-form");m["default"].post(n.props.user.api_url.avatar,{avatar:e,crop:{offset:t.cropit("offset"),zoom:t.cropit("zoom")}}).then(function(e){n.props.onComplete(e.avatar_hash,e.options),g["default"].success(e.detail)},function(e){400===e.status?(g["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)})},n.state={isLoading:!1},n}return s(t,e),i(t,[{key:"getAvatarSize",value:function(){return this.props.upload?this.props.options.crop_tmp.size:this.props.options.crop_org.size}},{key:"getAvatarSecret",value:function(){return this.props.upload?this.props.options.crop_tmp.secret:this.props.options.crop_org.secret}},{key:"getAvatarHash",value:function(){return this.props.upload||this.props.user.avatar_hash}},{key:"getImagePath",value:function(){return[v,this.getAvatarSecret()+":"+this.getAvatarHash(),this.props.user.id+".png"].join("/")}},{key:"componentDidMount",value:function(){var e=this,t=$(".crop-form");t.width(this.getAvatarSize()),t.cropit({width:this.getAvatarSize(),height:this.getAvatarSize(),imageState:{src:this.getImagePath()},onImageLoaded:function(){if(e.props.upload){var n=t.cropit("zoom"),a=t.cropit("imageSize");if(a.width>a.height){var r=a.width*n,o=(r-e.getAvatarSize())/-2;t.cropit("offset",{x:o,y:0})}else if(a.width<a.height){var s=a.height*n,i=(s-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}}else{var u=e.props.options.crop_org.crop;u&&(t.cropit("zoom",u.zoom),t.cropit("offset",{x:u.x,y:u.y}))}}})}},{key:"componentWillUnmount",value:function(){$(".crop-form").cropit("disable")}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement("div",{
+className:"modal-body modal-avatar-crop"},l["default"].createElement("div",{className:"crop-form"},l["default"].createElement("div",{className:"cropit-image-preview"}),l["default"].createElement("input",{type:"range",className:"cropit-image-zoom-input"}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(d["default"],{onClick:this.cropAvatar,loading:this.state.isLoading,className:"btn-primary btn-block"},this.props.upload?gettext("Set avatar"):gettext("Crop image")),l["default"].createElement(d["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel")))))}}]),t}(l["default"].Component);n["default"]=b},{"../../services/ajax":135,"../../services/snackbar":144,"../avatar":54,"../button":56,react:"react"}],64:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0}),n.Gallery=n.GalleryItem=void 0;var u=e("react"),l=a(u),c=e("../button"),f=a(c),d=e("../../index"),p=a(d),m=e("../../services/ajax"),h=a(m),g=e("../../services/snackbar"),v=a(g),b=e("../../utils/batch"),y=a(b),_=n.GalleryItem=function(e){function t(){var e,n,a,s;r(this,t);for(var i=arguments.length,u=Array(i),l=0;i>l;l++)u[l]=arguments[l];return n=a=o(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(u))),a.select=function(){a.props.select(a.props.image)},s=n,o(a,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.selection===this.props.image?this.props.disabled?"btn btn-avatar btn-disabled avatar-selected":"btn btn-avatar avatar-selected":this.props.disabled?"btn btn-avatar btn-disabled":"btn btn-avatar"}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},l["default"].createElement("img",{src:p["default"].get("MEDIA_URL")+this.props.image}))}}]),t}(l["default"].Component),w=n.Gallery=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"avatars-gallery"},l["default"].createElement("h3",null,this.props.name),l["default"].createElement("div",{className:"avatars-gallery-images"},(0,y["default"])(this.props.images,4,null).map(function(t,n){return l["default"].createElement("div",{className:"row",key:n},t.map(function(t,n){return l["default"].createElement("div",{className:"col-xs-3",key:n},t?l["default"].createElement(_,{image:t,disabled:e.props.disabled,select:e.props.select,selection:e.props.selection}):l["default"].createElement("div",{className:"blank-avatar"}))}))})))}}]),t}(l["default"].Component),E=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.select=function(e){n.setState({selection:e})},n.save=function(){return n.state.isLoading?!1:(n.setState({isLoading:!0}),void h["default"].post(n.props.user.api_url.avatar,{avatar:"galleries",image:n.state.selection}).then(function(e){n.setState({isLoading:!1}),v["default"].success(e.detail),n.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(v["default"].error(e.detail),n.setState({isLoading:!1})):n.props.showError(e)}))},n.state={selection:null,isLoading:!1},n}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",null,l["default"].createElement("div",{className:"modal-body modal-avatar-gallery"},this.props.options.galleries.map(function(t,n){return l["default"].createElement(w,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select,key:n})})),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(f["default"],{onClick:this.save,loading:this.state.isLoading,disabled:!this.state.selection,className:"btn-primary btn-block"},this.state.selection?gettext("Save choice"):gettext("Select avatar")),l["default"].createElement(f["default"],{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},gettext("Cancel"))))))}}]),t}(l["default"].Component);n["default"]=E},{"../../index":128,"../../services/ajax":135,"../../services/snackbar":144,"../../utils/batch":148,"../button":56,react:"react"}],65:[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"),f=a(c),d=e("../button"),p=a(d),m=e("../loader"),h=a(m),g=e("../../services/ajax"),v=a(g),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 v["default"].post(this.props.user.api_url.avatar,{avatar:e}).then(function(e){t.setState({isLoading:!1}),y["default"].success(e.detail),t.props.onComplete(e.avatar_hash,e.options)},function(e){400===e.status?(y["default"].error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))}},{key:"getGravatarButton",value:function(){return this.props.options.gravatar?l["default"].createElement(p["default"],{onClick:this.setGravatar,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gravatar"},gettext("Download my Gravatar")):null}},{key:"getCropButton",value:function(){return this.props.options.crop_org?l["default"].createElement(p["default"],{onClick:this.props.showCrop,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-crop"},gettext("Re-crop uploaded image")):null}},{key:"getUploadButton",value:function(){return this.props.options.upload?l["default"].createElement(p["default"],{onClick:this.props.showUpload,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-upload"},gettext("Upload new image")):null}},{key:"getGalleryButton",value:function(){return this.props.options.galleries?l["default"].createElement(p["default"],{onClick:this.props.showGallery,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gallery"},gettext("Pick avatar from gallery")):null}},{key:"getAvatarPreview",value:function(){var e={id:this.props.user.id,avatar_hash:this.props.options.avatar_hash};return this.state.isLoading?l["default"].createElement("div",{className:"avatar-preview preview-loading"},l["default"].createElement(f["default"],{user:e,size:"200"}),l["default"].createElement(h["default"],null)):l["default"].createElement("div",{className:"avatar-preview"},l["default"].createElement(f["default"],{user:e,size:"200"}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-index"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-5"},this.getAvatarPreview()),l["default"].createElement("div",{className:"col-md-7"},this.getGravatarButton(),l["default"].createElement(p["default"],{onClick:this.setGenerated,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-generate"},gettext("Generate my individual avatar")),this.getCropButton(),this.getUploadButton(),this.getGalleryButton())))}}]),t}(l["default"].Component);n["default"]=_},{"../../services/ajax":135,"../../services/snackbar":144,"../avatar":54,"../button":56,"../loader":71,react:"react"}],66:[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),f=e("./index"),d=a(f),p=e("./crop"),m=a(p),h=e("./upload"),g=a(h),v=e("./gallery"),b=a(v),y=e("../modal-loader"),_=a(y),w=e("../../reducers/users"),E=e("../../services/ajax"),O=a(E),k=e("../../services/store"),N=a(k),x=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),j=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:d["default"]})},a.showUpload=function(){a.setState({component:g["default"]})},a.showCrop=function(){a.setState({component:m["default"]})},a.showGallery=function(){a.setState({component:b["default"]})},a.completeFlow=function(e,t){N["default"].dispatch((0,w.updateAvatar)(a.props.user,e)),a.setState({component:d["default"],options:t})},s=n,o(a,s)}return s(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this;O["default"].get(this.props.user.api_url.avatar).then(function(t){e.setState({component:d["default"],options:t,error:null})},function(t){e.showError(t)})}},{key:"getBody",value:function(){return this.state?this.state.error?c["default"].createElement(x,{message:this.state.error.detail,reason:this.state.error.reason}):c["default"].createElement(this.state.component,{options:this.state.options,user:this.props.user,onComplete:this.completeFlow,showError:this.showError,showIndex:this.showIndex,showCrop:this.showCrop,showUpload:this.showUpload,showGallery:this.showGallery}):c["default"].createElement(_["default"],null)}},{key:"getClassName",value:function(){return this.state&&this.state.error?"modal-dialog modal-message modal-change-avatar":"modal-dialog modal-change-avatar"}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName(),role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Change your avatar"))),this.getBody()))}}]),t}(c["default"].Component);n["default"]=j},{"../../reducers/users":134,"../../services/ajax":135,"../../services/store":145,"../modal-loader":72,"./crop":63,"./gallery":64,"./index":65,"./upload":67,react:"react"}],67:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();Object.defineProperty(n,"__esModule",{value:!0});var u=e("react"),l=a(u),c=e("./crop"),f=a(c),d=e("../button"),p=a(d),m=e("../../services/ajax"),h=a(m),g=e("../../services/snackbar"),v=a(g),b=e("../../utils/file-size"),y=a(b),_=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.pickFile=function(){document.getElementById("avatar-hidden-upload").click()},n.uploadFile=function(){var e=document.getElementById("avatar-hidden-upload").files[0],t=n.validateFile(e);if(t)return void v["default"].error(t);n.setState({image:e,preview:URL.createObjectURL(e),progress:0});var a=new FormData;a.append("avatar","upload"),a.append("image",e),h["default"].upload(n.props.user.api_url.avatar,a,function(e){n.setState({progress:e})}).then(function(e){n.setState({options:e.options,uploaded:e.detail}),v["default"].info(gettext("Your image has been uploaded and you may now crop it."))},function(e){400===e.status?(v["default"].error(e.detail),n.setState({isLoading:!1,image:null,progress:0})):n.props.showError(e)})},n.state={image:null,preview:null,progress:0,uploaded:null},n}return s(t,e),i(t,[{key:"validateFile",value:function(e){if(e.size>this.props.options.upload.limit)return interpolate(gettext("Selected file is too big. (%(filesize)s)"),{filesize:(0,y["default"])(e.size)},!0);var t=gettext("Selected file type is not supported.");if(-1===this.props.options.upload.allowed_mime_types.indexOf(e.type))return t;var n=!1,a=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map(function(e){a.substr(-1*e.length)===e&&(n=!0)}),n?!1:t}},{key:"getUploadRequirements",value:function(e){var t=e.allowed_extensions.map(function(e){return e.substr(1)});return interpolate(gettext("%(files)s files smaller than %(limit)s"),{files:t.join(", "),limit:(0,y["default"])(e.limit)},!0)}},{key:"getUploadButton",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement(p["default"],{className:"btn-pick-file",onClick:this.pickFile},l["default"].createElement("div",{className:"material-icon"},"input"),gettext("Select file")),l["default"].createElement("p",{className:"text-muted"},this.getUploadRequirements(this.props.options.upload)))}},{key:"getUploadProgressLabel",value:function(){return interpolate(gettext("%(progress)s % complete"),{progress:this.state.progress},!0)}},{key:"getUploadProgress",value:function(){return l["default"].createElement("div",{className:"modal-body modal-avatar-upload"},l["default"].createElement("div",{className:"upload-progress"},l["default"].createElement("img",{src:this.state.preview}),l["default"].createElement("div",{className:"progress"},l["default"].createElement("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},l["default"].createElement("span",{className:"sr-only"},this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return l["default"].createElement("div",null,l["default"].createElement("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("div",{className:"col-md-6 col-md-offset-3"},l["default"].createElement(p["default"],{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},gettext("Cancel")))))}},{key:"renderCrop",value:function(){return l["default"].createElement(f["default"],{options:this.state.options,user:this.props.user,upload:this.state.uploaded,onComplete:this.props.onComplete,showError:this.props.showError,showIndex:this.props.showIndex})}},{key:"render",value:function(){return this.state.uploaded?this.renderCrop():this.renderUpload()}}]),t}(l["default"].Component);n["default"]=_},{"../../services/ajax":135,"../../services/snackbar":144,"../../utils/file-size":149,"../button":56,"./crop":63,react:"react"}],68:[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"}],69:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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});var l=e("react"),c=a(l),f=e("../utils/validators"),d=e("../services/snackbar"),p=a(d),m=(0,f.required)(),h=function(e){function t(){var e,n,a,i;o(this,t);for(var u=arguments.length,l=Array(u),c=0;u>c;c++)l[c]=arguments[c];return n=a=s(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(l))),a.bindInput=function(e){return function(t){var n=r({},e,t.target.value),o=a.state.errors||{};o[e]=a.validateField(e,n[e]),n.errors=o,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})}},i=n,s(a,i)}return i(t,e),u(t,[{key:"validate",value:function(){var e={};if(!this.state.validators)return e;var t={required:this.state.validators.required||this.state.validators,optional:this.state.validators.optional||{}},n=[];for(var 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=[];if(!this.state.validators)return n;var a={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},r=m(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){p["default"].apiError(e)}}]),t}(c["default"].Component);n["default"]=h},{"../services/snackbar":144,"../utils/validators":155,react:"react"}],70:[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:"isActive",value:function(){return this.props.path?0===document.location.pathname.indexOf(this.props.path):!1}},{key:"getClassName",value:function(){return this.isActive()?(this.props.className||"")+" "+(this.props.activeClassName||"active"):this.props.className||""}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},this.props.children)}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],71:[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:this.props.className||"loader"},l["default"].createElement("div",{className:"loader-spinning-wheel"}))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],72:[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"),f=a(c),d=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(f["default"],null))}}]),t}(l["default"].Component);n["default"]=d},{"./loader":71,react:"react"}],73:[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("./panel-message"),f=a(c),d=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{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:"modal-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(f["default"]);n["default"]=d},{"./panel-message":85,react:"react"}],74:[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("../../panel-loader"),f=a(c),d=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:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"
+},gettext("Change username"))),l["default"].createElement(f["default"],null))}}]),t}(l["default"].Component);n["default"]=d},{"../../panel-loader":84,react:"react"}],75:[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("../../panel-message"),f=a(c),d=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelpText",value:function(){return this.props.options.next_on?interpolate(gettext("You will be able to change your username %(next_change)s."),{next_change:this.props.options.next_on.fromNow()},!0):gettext("You have used up available name changes.")}},{key:"render",value:function(){return l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),l["default"].createElement(f["default"],{message:gettext("You can't change your username at the moment."),helpText:this.getHelpText()}))}}]),t}(l["default"].Component);n["default"]=d},{"../../panel-message":85,react:"react"}],76:[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});var l=e("react"),c=r(l),f=e("../../button"),d=r(f),p=e("../../form"),m=r(p),h=e("../../form-group"),g=r(h),v=e("../../../services/ajax"),b=r(v),y=e("../../../services/snackbar"),_=r(y),w=e("../../../utils/validators"),E=a(w),O=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={username:"",validators:{username:[E.usernameContent(),E.usernameMinLength({username_length_min:e.options.length_min}),E.usernameMaxLength({username_length_max:e.options.length_max})]},isLoading:!1},n}return i(t,e),u(t,[{key:"getHelpText",value:function(){var e=[];if(this.props.options.changes_left>0){var t=ngettext("You can change your username %(changes_left)s more time.","You can change your username %(changes_left)s more times.",this.props.options.changes_left);e.push(interpolate(t,{changes_left:this.props.options.changes_left},!0))}if(this.props.user.acl.name_changes_expire>0){var t=ngettext("Used changes redeem after %(name_changes_expire)s day.","Used changes redeem after %(name_changes_expire)s days.",this.props.user.acl.name_changes_expire);e.push(interpolate(t,{name_changes_expire:this.props.user.acl.name_changes_expire},!0))}return e.length?e.join(" "):null}},{key:"clean",value:function(){var e=this.validate();return e.username?(_["default"].error(e.username[0]),!1):this.state.username.trim()===this.props.user.username?(_["default"].info(gettext("Your new username is same as current one.")),!1):!0}},{key:"send",value:function(){return b["default"].post(this.props.user.api_url.username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),this.props.complete(e.username,e.slug,e.options)}},{key:"handleError",value:function(e){_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},c["default"].createElement("div",{className:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change username"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(g["default"],{label:gettext("New username"),"for":"id_username",labelClass:"col-sm-4",controlClass:"col-sm-8",helpText:this.getHelpText()},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change username")))))))}}]),t}(m["default"]);n["default"]=O},{"../../../services/ajax":135,"../../../services/snackbar":144,"../../../utils/validators":155,"../../button":56,"../../form":69,"../../form-group":68,react:"react"}],77:[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"),f=a(c),d=e("./form-loading"),p=a(d),m=e("./form-locked"),h=a(m),g=e("./form"),v=a(g),b=e("../../username-history"),y=a(b),_=e("../../../index"),w=a(_),E=e("../../../reducers/username-history"),O=e("../../../reducers/users"),k=e("../../../services/ajax"),N=a(k),x=e("../../../services/page-title"),j=a(x),P=e("../../../services/snackbar"),S=a(P),C=e("../../../services/store"),M=a(C),T=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.onComplete=function(e,t,a){n.setState({options:a}),M["default"].dispatch((0,E.addNameChange)({username:e,slug:t},n.props.user,n.props.user)),M["default"].dispatch((0,O.updateUsername)(n.props.user,e,t)),S["default"].success(gettext("Your username has been changed successfully."))},n.state={isLoaded:!1,options:null},n}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;j["default"].set({title:gettext("Change username"),parent:gettext("Change your options")}),Promise.all([N["default"].get(this.props.user.api_url.username),N["default"].get(w["default"].get("USERNAME_CHANGES_API"),{user:this.props.user.id})]).then(function(t){M["default"].dispatch((0,E.dehydrate)(t[1].results)),e.setState({isLoaded:!0,options:{changes_left:t[0].changes_left,length_min:t[0].length_min,length_max:t[0].length_max,next_on:t[0].next_on?(0,l["default"])(t[0].next_on):null}})})}},{key:"getChangeForm",value:function(){return this.state.isLoaded?this.state.options.changes_left>0?f["default"].createElement(v["default"],{user:this.props.user,options:this.state.options,complete:this.onComplete}):f["default"].createElement(h["default"],{options:this.state.options}):f["default"].createElement(p["default"],null)}},{key:"render",value:function(){return f["default"].createElement("div",null,this.getChangeForm(),f["default"].createElement(y["default"],{isLoaded:this.state.isLoaded,changes:this.props["username-history"]}))}}]),t}(f["default"].Component);n["default"]=T},{"../../../index":128,"../../../reducers/username-history":133,"../../../reducers/users":134,"../../../services/ajax":135,"../../../services/page-title":142,"../../../services/snackbar":144,"../../../services/store":145,"../../username-history":112,"./form":76,"./form-loading":74,"./form-locked":75,moment:"moment",react:"react"}],78:[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("../button"),f=a(c),d=e("../form"),p=a(d),m=e("../form-group"),h=a(m),g=e("../select"),v=a(g),b=e("../yes-no-switch"),y=a(b),_=e("../../reducers/auth"),w=e("../../services/ajax"),E=a(w),O=e("../../services/page-title"),k=a(O),N=e("../../services/snackbar"),x=a(N),j=e("../../services/store"),P=a(j),S=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,is_hiding_presence:e.user.is_hiding_presence,limits_private_thread_invites_to:e.user.limits_private_thread_invites_to,subscribe_to_started_threads:e.user.subscribe_to_started_threads,subscribe_to_replied_threads:e.user.subscribe_to_replied_threads,errors:{}},n.privateThreadInvitesChoices=[{value:0,icon:"help_outline",label:gettext("Everybody")},{value:1,icon:"done_all",label:gettext("Users I follow")},{value:2,icon:"highlight_off",label:gettext("Nobody")}],n.subscribeToChoices=[{value:0,icon:"bookmark_border",label:gettext("No")},{value:1,icon:"bookmark",label:gettext("Bookmark")},{value:2,icon:"mail",label:gettext("Bookmark with e-mail notification")}],n}return s(t,e),i(t,[{key:"send",value:function(){return E["default"].post(this.props.user.api_url.options,{is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})}},{key:"handleSuccess",value:function(){P["default"].dispatch((0,_.patchUser)({is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})),x["default"].success(gettext("Your forum options have been changed."))}},{key:"handleError",value:function(e){400===e.status?x["default"].error(gettext("Please reload page and try again.")):x["default"].apiError(e)}},{key:"componentDidMount",value:function(){k["default"].set({title:gettext("Forum options"),parent:gettext("Change your options")})}},{key:"render",value:function(){return l["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},l["default"].createElement("div",{className:"panel panel-default panel-form"},l["default"].createElement("div",{className:"panel-heading"},l["default"].createElement("h3",{className:"panel-title"},gettext("Change forum options"))),l["default"].createElement("div",{className:"panel-body"},l["default"].createElement("fieldset",null,l["default"].createElement("legend",null,gettext("Privacy settings")),l["default"].createElement(h["default"],{label:gettext("Hide my presence"),helpText:gettext("If you hide your presence, only members with permission to see hidden users will see when you are online."),"for":"id_is_hiding_presence",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(y["default"],{id:"id_is_hiding_presence",disabled:this.state.isLoading,iconOn:"visibility_off",iconOff:"visibility",labelOn:gettext("Hide my presence from other users"),labelOff:gettext("Show my presence to other users"),onChange:this.bindInput("is_hiding_presence"),value:this.state.is_hiding_presence})),l["default"].createElement(h["default"],{label:gettext("Private thread invitations"),"for":"id_limits_private_thread_invites_to",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(v["default"],{id:"id_limits_private_thread_invites_to",disabled:this.state.isLoading,onChange:this.bindInput("limits_private_thread_invites_to"),value:this.state.limits_private_thread_invites_to,choices:this.privateThreadInvitesChoices}))),l["default"].createElement("fieldset",null,l["default"].createElement("legend",null,gettext("Automatic subscriptions")),l["default"].createElement(h["default"],{label:gettext("Threads I start"),"for":"id_subscribe_to_started_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(v["default"],{id:"id_subscribe_to_started_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_started_threads"),value:this.state.subscribe_to_started_threads,choices:this.subscribeToChoices})),l["default"].createElement(h["default"],{label:gettext("Threads I reply to"),"for":"id_subscribe_to_replied_threads",labelClass:"col-sm-4",controlClass:"col-sm-8"},l["default"].createElement(v["default"],{id:"id_subscribe_to_replied_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_replied_threads"),value:this.state.subscribe_to_replied_threads,choices:this.subscribeToChoices})))),l["default"].createElement("div",{className:"panel-footer"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},l["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes")))))))}}]),t}(p["default"]);n["default"]=S},{"../../reducers/auth":129,"../../services/ajax":135,"../../services/page-title":142,"../../services/snackbar":144,"../../services/store":145,"../button":56,"../form":69,"../form-group":68,"../select":105,"../yes-no-switch":127,react:"react"}],79:[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.CompactNav=n.SideNav=void 0;var u=e("react"),l=a(u),c=e("react-router"),f=e("../li"),d=a(f),p=e("../../index");a(p),n.SideNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"list-group nav-side"},this.props.options.map(function(t){return l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name)}))}}]),t}(l["default"].Component),n.CompactNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){var e=this;return l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.props.options.map(function(t){return l["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name))}))}}]),t}(l["default"].Component)},{"../../index":128,"../li":70,react:"react","react-router":"react-router"}],80:[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{tick:e.tick.tick,user:e.auth.user,"username-history":e["username-history"]}}function u(){return[{path:w["default"].get("USERCP_URL")+"forum-options/",component:(0,d.connect)(i)(h["default"])},{path:w["default"].get("USERCP_URL")+"change-username/",component:(0,d.connect)(i)(v["default"])},{path:w["default"].get("USERCP_URL")+"sign-in-credentials/",component:(0,d.connect)(i)(y["default"])}]}var l=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,n.paths=u;var c=e("react"),f=a(c),d=e("react-redux"),p=e("./navs"),m=e("./forum-options"),h=a(m),g=e("./change-username/root"),v=a(g),b=e("./sign-in-credentials/root"),y=a(b),_=e("../../index"),w=a(_),E=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.toggleNav=function(){n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:!0})},n.hideNav=function(){n.setState({dropdown:!1})},n.state={dropdown:!1},n}return s(t,e),l(t,[{key:"getToggleNavClassName",value:function(){return this.state.dropdown?"btn btn-default btn-icon open":"btn btn-default btn-icon"}},{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}},{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-options"},f["default"].createElement("div",{className:"page-header"},f["default"].createElement("div",{className:"container"},f["default"].createElement("h1",{className:"pull-left"},gettext("Change your options")),f["default"].createElement("button",{className:"btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg",type:"button",onClick:this.toggleNav,"aria-haspopup":"true","aria-expanded":this.state.dropdown?"true":"false"},f["default"].createElement("i",{className:"material-icon"},"menu")))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(p.CompactNav,{options:w["default"].get("USER_OPTIONS"),baseUrl:w["default"].get("USERCP_URL"),hideNav:this.hideNav})),f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"row"},f["default"].createElement("div",{className:"col-md-3 hidden-xs hidden-sm"},f["default"].createElement(p.SideNav,{options:w["default"].get("USER_OPTIONS"),baseUrl:w["default"].get("USERCP_URL")})),f["default"].createElement("div",{className:"col-md-9"},this.props.children))))}}]),t}(f["default"].Component);n["default"]=E},{"../../index":128,"./change-username/root":77,"./forum-options":78,"./navs":79,"./sign-in-credentials/root":83,react:"react","react-redux":"react-redux"}],81:[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});var l=e("react"),c=r(l),f=e("../../button"),d=r(f),p=e("../../form"),m=r(p),h=e("../../form-group"),g=r(h),v=e("../../../services/ajax"),b=r(v),y=e("../../../services/snackbar"),_=r(y),w=e("../../../utils/validators"),E=a(w),O=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={new_email:"",password:"",validators:{new_email:[E.email()],password:[]},isLoading:!1},n}return i(t,e),u(t,[{key:"clean",value:function(){var e=this.validate(),t=[this.state.new_email.trim().length,this.state.password.trim().length];return-1!==t.indexOf(0)?(_["default"].error(gettext("Fill out all fields.")),!1):e.new_email?(_["default"].error(e.new_email[0]),!1):!0}},{key:"send",value:function(){return b["default"].post(this.props.user.api_url.change_email,{new_email:this.state.new_email,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_email:"",password:""}),_["default"].success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_email?_["default"].error(e.new_email):_["default"].error(e.password):_["default"].apiError(e)}},{key:"render",value:function(){return 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:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change e-mail address"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(g["default"],{label:gettext("New e-mail"),"for":"id_new_email",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"text",id:"id_new_email",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_email"),value:this.state.new_email})),c["default"].createElement("hr",null),c["default"].createElement(g["default"],{label:gettext("Your current password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change e-mail")))))))}}]),t}(m["default"]);n["default"]=O},{"../../../services/ajax":135,"../../../services/snackbar":144,"../../../utils/validators":155,"../../button":56,"../../form":69,"../../form-group":68,react:"react"}],82:[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});var l=e("react"),c=r(l),f=e("../../button"),d=r(f),p=e("../../form"),m=r(p),h=e("../../form-group"),g=r(h),v=e("../../../index"),b=r(v),y=e("../../../services/ajax"),_=r(y),w=e("../../../services/snackbar"),E=r(w),O=e("../../../utils/validators"),k=a(O),N=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={new_password:"",repeat_password:"",password:"",validators:{new_password:[k.passwordMinLength(b["default"].get("SETTINGS"))],repeat_password:[],password:[]},isLoading:!1},n}return i(t,e),u(t,[{key:"clean",value:function(){var e=this.validate(),t=[this.state.new_password.trim().length,this.state.repeat_password.trim().length,this.state.password.trim().length];return-1!==t.indexOf(0)?(E["default"].error(gettext("Fill out all fields.")),!1):e.new_password?(E["default"].error(e.new_password[0]),!1):this.state.new_password.trim()!==this.state.repeat_password.trim()?(E["default"].error(gettext("New passwords are different.")),!1):!0}},{key:"send",value:function(){return _["default"].post(this.props.user.api_url.change_password,{new_password:this.state.new_password,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_password:"",repeat_password:"",password:""}),E["default"].success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_password?E["default"].error(e.new_password):E["default"].error(e.password):E["default"].apiError(e)}},{key:"render",value:function(){return 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:"panel panel-default panel-form"},c["default"].createElement("div",{className:"panel-heading"},c["default"].createElement("h3",{className:"panel-title"},gettext("Change password"))),c["default"].createElement("div",{className:"panel-body"},c["default"].createElement(g["default"],{label:gettext("New password"),"for":"id_new_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_new_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_password"),value:this.state.new_password})),c["default"].createElement(g["default"],{label:gettext("Repeat password"),"for":"id_repeat_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_repeat_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("repeat_password"),value:this.state.repeat_password})),c["default"].createElement("hr",null),c["default"].createElement(g["default"],{label:gettext("Your current password"),"for":"id_password",labelClass:"col-sm-4",controlClass:"col-sm-8"},c["default"].createElement("input",{type:"password",id:"id_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement("div",{className:"panel-footer"},c["default"].createElement("div",{className:"row"},c["default"].createElement("div",{className:"col-sm-8 col-sm-offset-4"},c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change password")))))))}}]),t}(m["default"]);n["default"]=N},{"../../../index":128,"../../../services/ajax":135,"../../../services/snackbar":144,"../../../utils/validators":155,"../../button":56,"../../form":69,"../../form-group":68,react:"react"}],83:[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("./change-email"),f=a(c),d=e("./change-password"),p=a(d),m=e("../../../index"),h=a(m),g=e("../../../services/page-title"),v=a(g),b=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"componentDidMount",value:function(){v["default"].set({title:gettext("Change email or password"),parent:gettext("Change your options")})}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement(f["default"],{user:this.props.user}),l["default"].createElement(p["default"],{user:this.props.user}),l["default"].createElement("p",{className:"message-line"},l["default"].createElement("span",{className:"material-icon"},"warning"),l["default"].createElement("a",{
+href:h["default"].get("FORGOTTEN_PASSWORD_URL")},gettext("Change forgotten password"))))}}]),t}(l["default"].Component);n["default"]=b},{"../../../index":128,"../../../services/page-title":142,"./change-email":81,"./change-password":82,react:"react"}],84:[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"),f=a(c),d=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:"panel-body panel-body-loading"},l["default"].createElement(f["default"],{className:"loader loader-spaced"}))}}]),t}(l["default"].Component);n["default"]=d},{"./loader":71,react:"react"}],85:[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:"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:"panel-body panel-message-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},this.props.icon||"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.props.message),this.getHelpText()))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],86:[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"),f=a(c),d=n.STYLES=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],p=n.LABELS=[gettext("Entered password is very weak."),gettext("Entered password is weak."),gettext("Entered password is average."),gettext("Entered password is strong."),gettext("Entered password is very strong.")],m=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n._score=0,n._password=null,n._inputs=[],n}return s(t,e),i(t,[{key:"getScore",value:function(e,t){var n=this,a=!1;return e.trim()!==this._password&&(a=!0),t.length!==this._inputs.length?a=!0:t.map(function(e,t){e.trim()!==n._inputs[t]&&(a=!0)}),a&&(this._score=f["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 "+d[e],style:{width:20+20*e+"%"},role:"progress-bar","aria-valuenow":e,"aria-valuemin":"0","aria-valuemax":"4"},l["default"].createElement("span",{className:"sr-only"},p[e]))),l["default"].createElement("p",{className:"text-small"},p[e]))}}]),t}(l["default"].Component);n["default"]=m},{"../services/zxcvbn":146,react:"react"}],87:[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"),f=a(c),d=e("./follow-button"),p=a(d),m=e("./moderation/nav"),h=a(m),g=e("../user-status"),v=a(g),b=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getUserStatus",value:function(){return l["default"].createElement("li",{className:"user-status-display"},l["default"].createElement(v["default"],{user:this.props.profile,status:this.props.profile.status},l["default"].createElement(g.StatusIcon,{user:this.props.profile,status:this.props.profile.status}),l["default"].createElement(g.StatusLabel,{user:this.props.profile,status:this.props.profile.status,className:"status-label"})))}},{key:"getUserRank",value:function(){return this.props.profile.rank.is_tab?l["default"].createElement("li",{className:"user-rank"},l["default"].createElement("a",{href:this.props.profile.rank.absolute_url,className:"item-title"},this.props.profile.rank.name)):l["default"].createElement("li",{className:"user-rank"},l["default"].createElement("span",{className:"item-title"},this.props.profile.rank.name))}},{key:"getUserTitle",value:function(){return this.props.profile.title?l["default"].createElement("li",{className:"user-title"},this.props.profile.title):this.props.profile.rank.title?l["default"].createElement("li",{className:"user-title"},this.props.profile.rank.title):null}},{key:"getJoinedOn",value:function(){var e=interpolate(gettext("Joined on %(joined_on)s"),{joined_on:this.props.profile.joined_on.format("LL, LT")},!0),t=interpolate(gettext("Joined %(joined_on)s"),{joined_on:this.props.profile.joined_on.fromNow()},!0);return l["default"].createElement("li",{className:"user-joined-on"},l["default"].createElement("abbr",{title:e},t))}},{key:"getEmail",value:function(){return this.props.profile.email?l["default"].createElement("li",{className:"user-email"},l["default"].createElement("a",{href:"mailto:"+this.props.profile.email,className:"item-title"},this.props.profile.email)):null}},{key:"getFollowButton",value:function(){return this.props.profile.acl.can_follow?l["default"].createElement(p["default"],{className:"btn btn-aligned hidden-xs hidden-sm",profile:this.props.profile}):null}},{key:"getModerationButton",value:function(){return this.props.profile.acl.can_moderate?l["default"].createElement("div",{className:"btn-group btn-aligned hidden-xs hidden-sm"},l["default"].createElement("button",{className:"btn btn-default btn-moderate dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},l["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")),l["default"].createElement(h["default"],{profile:this.props.profile})):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"page-header"},l["default"].createElement("div",{className:"container"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},l["default"].createElement("h1",{className:"pull-left"},l["default"].createElement(f["default"],{user:this.props.profile,size:"100"}),l["default"].createElement("span",{className:"user-name"},this.props.profile.username)),this.getFollowButton(),this.getModerationButton(),l["default"].createElement("button",{className:"btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg",type:"button",onClick:this.props.toggleNav,"aria-haspopup":"true","aria-expanded":this.props.dropdown?"true":"false"},l["default"].createElement("i",{className:"material-icon"},"menu"))))),l["default"].createElement("div",{className:"header-stats"},l["default"].createElement("div",{className:"container"},l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-md-9 col-md-offset-3"},l["default"].createElement("ul",{className:"list-inline"},this.getUserStatus(),this.getUserRank(),this.getUserTitle(),this.getJoinedOn(),this.getEmail()))))))}}]),t}(l["default"].Component);n["default"]=b},{"../avatar":54,"../user-status":111,"./follow-button":89,"./moderation/nav":95,react:"react"}],88:[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"),f=a(c),d=e("../panel-loader"),p=a(d),m=e("../panel-message"),h=a(m),g=e("../../index"),v=a(g),b=e("../../services/polls"),y=a(b),_=e("../../services/page-title"),w=a(_),E=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){e.expires_on&&(e.expires_on=(0,l["default"])(e.expires_on)),n.setState({isLoaded:!0,error:null,ban:e})},n.error=function(e){n.setState({isLoaded:!0,error:e.detail,ban:null})},v["default"].has("PROFILE_BAN")?n.initWithPreloadedData(v["default"].pop("PROFILE_BAN")):n.initWithoutPreloadedData(),n.startPolling(e.profile.api_url.ban),n}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){e.expires_on&&(e.expires_on=(0,l["default"])(e.expires_on)),this.state={isLoaded:!0,ban:e}}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){y["default"].start({poll:"ban-details",url:e,frequency:9e4,update:this.update,error:this.error})}},{key:"componentDidMount",value:function(){w["default"].set({title:gettext("Ban details"),parent:this.props.profile.username})}},{key:"componentWillUnmount",value:function(){y["default"].stop("ban-details")}},{key:"getUserMessage",value:function(){return this.state.ban.user_message?f["default"].createElement("div",{className:"panel-body ban-message ban-user-message"},f["default"].createElement("h4",null,gettext("User-shown ban message")),f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.user_message.html}})):null}},{key:"getStaffMessage",value:function(){return this.state.ban.staff_message?f["default"].createElement("div",{className:"panel-body ban-message ban-staff-message"},f["default"].createElement("h4",null,gettext("Team-shown ban message")),f["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.staff_message.html}})):null}},{key:"getExpirationMessage",value:function(){if(this.state.ban.expires_on){if(this.state.ban.expires_on.isAfter((0,l["default"])())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.state.ban.expires_on.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.state.ban.expires_on.fromNow()},!0);return f["default"].createElement("abbr",{title:e},t)}return gettext("This ban has expired.")}return interpolate(gettext("%(username)s's ban is permanent."),{username:this.props.profile.username},!0)}},{key:"getPanelBody",value:function(){return this.state.ban?Object.keys(this.state.ban).length?f["default"].createElement("div",null,this.getUserMessage(),this.getStaffMessage(),f["default"].createElement("div",{className:"panel-body ban-expires"},f["default"].createElement("h4",null,gettext("Ban expiration")),f["default"].createElement("p",{className:"lead"},this.getExpirationMessage()))):f["default"].createElement("div",null,f["default"].createElement(h["default"],{message:gettext("No ban is active at the moment.")})):this.state.error?f["default"].createElement("div",null,f["default"].createElement(h["default"],{icon:"error_outline",message:this.state.error})):f["default"].createElement("div",null,f["default"].createElement(p["default"],null))}},{key:"render",value:function(){return f["default"].createElement("div",{className:"profile-ban-details"},f["default"].createElement("div",{className:"panel panel-default"},f["default"].createElement("div",{className:"panel-heading"},f["default"].createElement("h3",{className:"panel-title"},gettext("Ban details"))),this.getPanelBody()))}}]),t}(f["default"].Component);n["default"]=E},{"../../index":128,"../../services/page-title":142,"../../services/polls":143,"../panel-loader":84,"../panel-message":85,moment:"moment",react:"react"}],89:[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("../button"),f=a(c),d=e("../../reducers/profile"),p=e("../../services/ajax"),m=a(p),h=e("../../services/snackbar"),g=a(h),v=e("../../services/store"),b=a(v),y=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.action=function(){n.setState({isLoading:!0}),n.props.profile.is_followed?b["default"].dispatch((0,d.patchProfile)({is_followed:!1,followers:n.props.profile.followers-1})):b["default"].dispatch((0,d.patchProfile)({is_followed:!0,followers:n.props.profile.followers+1})),m["default"].post(n.props.profile.api_url.follow).then(function(e){n.setState({isLoading:!1}),b["default"].dispatch((0,d.patchProfile)(e))},function(e){n.setState({isLoading:!1}),g["default"].apiError(e)})},n.state={isLoading:!1},n}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.profile.is_followed?this.props.className+" btn-default btn-following":this.props.className+" btn-default btn-follow"}},{key:"getIcon",value:function(){return this.props.profile.is_followed?"favorite":"favorite_border"}},{key:"getLabel",value:function(){return this.props.profile.is_followed?gettext("Following"):gettext("Follow")}},{key:"render",value:function(){return l["default"].createElement(f["default"],{className:this.getClassName(),disabled:this.state.isLoading,onClick:this.action},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(l["default"].Component);n["default"]=y},{"../../reducers/profile":130,"../../services/ajax":135,"../../services/snackbar":144,"../../services/store":145,"../button":56,react:"react"}],90:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,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});var l=e("react"),c=a(l),f=e("../button"),d=a(f),p=e("../search"),m=a(p),h=e("../users-list/root"),g=a(h),v=e("../../index"),b=a(v),y=e("../../reducers/users"),_=e("../../services/ajax"),w=a(_),E=e("../../services/snackbar"),O=a(E),k=e("../../services/store"),N=a(k),x=e("../../services/page-title"),j=a(x),P=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.loadMore=function(){n.setState({isBusy:!0}),n.loadUsers(n.state.page+1,n.state.search)},n.search=function(e){n.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),n.loadUsers(1,e.target.value)},n.setSpecialProps(),b["default"].has(n.PRELOADED_DATA_KEY)?n.initWithPreloadedData(b["default"].pop(n.PRELOADED_DATA_KEY)):n.initWithoutPreloadedData(),n}return i(t,e),u(t,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWERS",this.TITLE=gettext("Followers"),this.API_FILTER="followers"}},{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},N["default"].dispatch((0,y.dehydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadUsers()}},{key:"loadUsers",value:function(){var e,t=this,n=arguments.length<=0||void 0===arguments[0]?1:arguments[0],a=arguments.length<=1||void 0===arguments[1]?null:arguments[1];w["default"].get(b["default"].get("USERS_API"),(e={},r(e,this.API_FILTER,this.props.profile.id),r(e,"name",a),r(e,"page",n||1),e),"user-"+this.API_FILTER).then(function(e){1===n?N["default"].dispatch((0,y.dehydrate)(e.results)):N["default"].dispatch((0,y.append)(e.results)),t.setState({isLoaded:!0,isBusy:!1,count:e.count,more:e.more,page:e.page,pages:e.pages})},function(e){O["default"].apiError(e)})}},{key:"componentDidMount",value:function(){j["default"].set({title:this.TITLE,parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var e=ngettext("You have %(users)s follower.","You have %(users)s followers.",this.state.count);return interpolate(e,{users:this.state.count},!0)}var e=ngettext("%(username)s has %(users)s follower.","%(username)s has %(users)s followers.",this.state.count);return interpolate(e,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You have no followers."):interpolate(gettext("%(username)s has no followers."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?c["default"].createElement("div",{className:"pager-more"},c["default"].createElement(d["default"],{loading:this.state.isBusy,onClick:this.loadMore},interpolate(gettext("Show more (%(more)s)"),{more:this.state.more},!0))):null}},{key:"getListBody",value:function(){return this.state.isLoaded&&0===this.state.count?c["default"].createElement("p",{className:"lead"},this.getEmptyMessage()):c["default"].createElement("div",null,c["default"].createElement(g["default"],{isLoaded:this.state.isLoaded,users:this.props.users,showRank:!0,cols:2}),this.getMoreButton())}},{key:"getClassName",value:function(){return"profile-"+this.API_FILTER}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("nav",{className:"toolbar"},c["default"].createElement("h3",{className:"toolbar-left"},this.getLabel()),c["default"].createElement(m["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),this.getListBody())}}]),t}(c["default"].Component);n["default"]=P},{"../../index":128,"../../reducers/users":134,"../../services/ajax":135,"../../services/page-title":142,"../../services/snackbar":144,"../../services/store":145,"../button":56,"../search":104,"../users-list/root":113,react:"react"}],91:[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),e("./followers")),c=a(l),f=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWS",this.TITLE=gettext("Follows"),this.API_FILTER="follows"}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var e=ngettext("You are following %(users)s user.","You are following %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}var e=ngettext("%(username)s is following %(users)s user.","%(username)s is following %(users)s users.",this.state.count);return interpolate(e,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You are not following any users."):interpolate(gettext("%(username)s is not following any users."),{username:this.props.profile.username},!0)}}]),t}(c["default"]);n["default"]=f},{"./followers":90,react:"react"}],92:[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("../../button"),f=a(c),d=e("../../form"),p=a(d),m=e("../../form-group"),h=a(m),g=e("../../modal-loader"),v=a(g),b=e("../../yes-no-switch"),y=a(b),_=e("../../modal-message"),w=a(_),E=e("../../../reducers/users"),O=e("../../../services/ajax"),k=a(O),N=e("../../../services/snackbar"),x=a(N),j=e("../../../services/store"),P=a(j),S=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoaded:!1,isLoading:!1,error:null,is_avatar_locked:"",avatar_lock_user_message:"",avatar_lock_staff_message:""},n}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;k["default"].get(this.props.profile.api_url.moderate_avatar).then(function(t){e.setState({isLoaded:!0,is_avatar_locked:t.is_avatar_locked,avatar_lock_user_message:t.avatar_lock_user_message,avatar_lock_staff_message:t.avatar_lock_staff_message})},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"clean",value:function(){return this.isValid()?!0:(x["default"].error(this.validate().username[0]),!1)}},{key:"send",value:function(){return k["default"].post(this.props.profile.api_url.moderate_avatar,{is_avatar_locked:this.state.is_avatar_locked,avatar_lock_user_message:this.state.avatar_lock_user_message,avatar_lock_staff_message:this.state.avatar_lock_staff_message})}},{key:"handleSuccess",value:function(e){P["default"].dispatch((0,E.updateAvatar)(this.props.profile,e.avatar_hash)),x["default"].success(gettext("Avatar controls have been changed."))}},{key:"getFormBody",value:function(){return l["default"].createElement("form",{onSubmit:this.handleSubmit},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement(h["default"],{label:gettext("Lock avatar"),helpText:gettext("Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one."),"for":"id_is_avatar_locked"},l["default"].createElement(y["default"],{id:"id_is_avatar_locked",disabled:this.state.isLoading,iconOn:"lock_outline",iconOff:"lock_open",labelOn:gettext("Disallow user from changing avatar"),labelOff:gettext("Allow user to change avatar"),onChange:this.bindInput("is_avatar_locked"),value:this.state.is_avatar_locked})),l["default"].createElement(h["default"],{label:gettext("User message"),helpText:gettext("Optional message for user explaining why he/she is prohibited form changing avatar."),"for":"id_avatar_lock_user_message"},l["default"].createElement("textarea",{id:"id_avatar_lock_user_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_user_message"),value:this.state.avatar_lock_user_message})),l["default"].createElement(h["default"],{label:gettext("Staff message"),helpText:gettext("Optional message for forum team members explaining why user is prohibited form changing avatar."),"for":"id_avatar_lock_staff_message"},l["default"].createElement("textarea",{id:"id_avatar_lock_staff_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_staff_message"),value:this.state.avatar_lock_staff_message}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Close")),l["default"].createElement(f["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Save changes"))))}},{key:"getModalBody",value:function(){return this.state.error?l["default"].createElement(w["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():l["default"].createElement(v["default"],null)}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-avatar-controls":"modal-dialog modal-avatar-controls"}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName(),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("Avatar controls"))),this.getModalBody()))}}]),t}(p["default"]);n["default"]=S},{"../../../reducers/users":134,"../../../services/ajax":135,"../../../services/snackbar":144,"../../../services/store":145,"../../button":56,"../../form":69,"../../form-group":68,"../../modal-loader":72,"../../modal-message":73,"../../yes-no-switch":127,react:"react"}],93:[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});var l=e("react"),c=r(l),f=e("../../button"),d=r(f),p=e("../../form"),m=r(p),h=e("../../form-group"),g=r(h),v=e("../../modal-loader"),b=r(v),y=e("../../modal-message"),_=r(y),w=e("../../../index"),E=r(w),O=e("../../../reducers/username-history"),k=e("../../../reducers/users"),N=e("../../../services/ajax"),x=r(N),j=e("../../../services/snackbar"),P=r(j),S=e("../../../services/store"),C=r(S),M=e("../../../utils/validators"),T=a(M),L=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoaded:!1,isLoading:!1,error:null,username:"",validators:{username:[T.usernameContent(),T.usernameMinLength(E["default"].get("SETTINGS")),T.usernameMaxLength(E["default"].get("SETTINGS"))]}},n}return i(t,e),u(t,[{key:"componentDidMount",value:function(){var e=this;x["default"].get(this.props.profile.api_url.moderate_username).then(function(){e.setState({isLoaded:!0})},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"clean",value:function(){return this.isValid()?!0:(P["default"].error(this.validate().username[0]),!1)}},{key:"send",value:function(){return x["default"].post(this.props.profile.api_url.moderate_username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),C["default"].dispatch((0,O.addNameChange)(e,this.props.profile,this.props.user)),C["default"].dispatch((0,k.updateUsername)(this.props.profile,e.username,e.slug)),P["default"].success(gettext("Username has been changed."))}},{key:"getFormBody",value:function(){return c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"modal-body"},c["default"].createElement(g["default"],{label:gettext("New username"),"for":"id_username"},c["default"].createElement("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),c["default"].createElement("div",{className:"modal-footer"},c["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Close")),c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Change username"))))}},{key:"getModalBody",value:function(){return this.state.error?c["default"].createElement(_["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():c["default"].createElement(b["default"],null)}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-rename-user":"modal-dialog modal-rename-user"}},{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 username"))),this.getModalBody()))}}]),t}(m["default"]);n["default"]=L},{"../../../index":128,"../../../reducers/username-history":133,"../../../reducers/users":134,"../../../services/ajax":135,"../../../services/snackbar":144,"../../../services/store":145,"../../../utils/validators":155,"../../button":56,"../../form":69,"../../form-group":68,"../../modal-loader":72,"../../modal-message":73,react:"react"}],94:[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("../../button"),f=a(c),d=e("../../form"),p=a(d),m=e("../../form-group"),h=a(m),g=e("../../modal-loader"),v=a(g),b=e("../../modal-message"),y=a(b),_=e("../../yes-no-switch"),w=a(_),E=e("../../../index"),O=a(E),k=e("../../../services/ajax"),N=a(k),x=e("../../../services/polls"),j=a(x),P=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.countdown=function(){window.setTimeout(function(){n.state.countdown>1?(n.setState({countdown:n.state.countdown-1}),n.countdown()):n.state.confirm||n.setState({confirm:!0})},1e3)},n.state={isLoaded:!1,isLoading:!1,isDeleted:!1,error:null,countdown:5,confirm:!1,with_content:!1},n}return s(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this;N["default"].get(this.props.profile.api_url["delete"]).then(function(){e.setState({isLoaded:!0}),e.countdown()},function(t){e.setState({isLoaded:!0,error:t.detail})})}},{key:"send",value:function(){return N["default"].post(this.props.profile.api_url["delete"],{with_content:this.state.with_content})}},{key:"handleSuccess",value:function(){j["default"].stop("user-profile"),this.state.with_content?this.setState({isDeleted:interpolate(gettext("%(username)s's account, threads, posts and other content has been deleted."),{username:this.props.profile.username},!0)}):this.setState({isDeleted:interpolate(gettext("%(username)s's account has been deleted and other content has been hidden."),{username:this.props.profile.username},!0)})}},{key:"getButtonLabel",value:function(){return this.state.confirm?interpolate(gettext("Delete %(username)s"),{username:this.props.profile.username},!0):interpolate(gettext("Please wait... (%(countdown)ss)"),{countdown:this.state.countdown},!0)}},{key:"getForm",value:function(){return l["default"].createElement("form",{onSubmit:this.handleSubmit,className:"form-horizontal"},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement(h["default"],{label:gettext("User content"),labelClass:"col-sm-4",controlClass:"col-sm-8","for":"id_with_content"},l["default"].createElement(w["default"],{id:"id_with_content",disabled:this.state.isLoading,labelOn:gettext("Delete together with user's account"),labelOff:gettext("Hide after deleting user's account"),onChange:this.bindInput("with_content"),value:this.state.with_content}))),l["default"].createElement("div",{className:"modal-footer"},l["default"].createElement("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},gettext("Cancel")),l["default"].createElement(f["default"],{className:"btn-danger",loading:this.state.isLoading,disabled:!this.state.confirm},this.getButtonLabel())))}},{key:"getDeletedBody",value:function(){return l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"message-icon"},l["default"].createElement("span",{className:"material-icon"},"info_outline")),l["default"].createElement("div",{className:"message-body"},l["default"].createElement("p",{className:"lead"},this.state.isDeleted),l["default"].createElement("p",null,l["default"].createElement("a",{href:O["default"].get("USERS_LIST_URL")},gettext("Return to users list")))))}},{key:"getModalBody",value:function(){return this.state.error?l["default"].createElement(y["default"],{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.state.isDeleted?this.getDeletedBody():this.getForm():l["default"].createElement(v["default"],null)}},{key:"getClassName",value:function(){return this.state.error||this.state.isDeleted?"modal-dialog modal-message modal-delete-account":"modal-dialog modal-delete-account"}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName(),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("Delete user account"))),this.getModalBody()))}}]),t}(p["default"]);n["default"]=P},{"../../../index":128,"../../../services/ajax":135,"../../../services/polls":143,"../../button":56,"../../form":69,"../../form-group":68,"../../modal-loader":72,"../../modal-message":73,"../../yes-no-switch":127,react:"react"}],95:[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("react-redux"),f=e("./avatar-controls"),d=a(f),p=e("./change-username"),m=a(p),h=e("./delete-account"),g=a(h),v=e("../../../services/modal"),b=a(v),y=function(e){return{tick:e.tick,user:e.auth,profile:e.profile}},_=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.showAvatarDialog=function(){b["default"].show((0,c.connect)(y)(d["default"]))},a.showRenameDialog=function(){b["default"].show((0,c.connect)(y)(m["default"]))},a.showDeleteDialog=function(){b["default"].show((0,c.connect)(y)(g["default"]))},s=n,o(a,s)}return s(t,e),i(t,[{key:"getAvatarButton",value:function(){return this.props.profile.acl.can_moderate_avatar?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showAvatarDialog},l["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Avatar controls"))):null}},{key:"getRenameButton",value:function(){return this.props.profile.acl.can_rename?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showRenameDialog},l["default"].createElement("span",{className:"material-icon"},"credit_card"),gettext("Change username"))):null}},{key:"getDeleteButton",value:function(){return this.props.profile.acl.can_delete?l["default"].createElement("li",null,l["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.showDeleteDialog},l["default"].createElement("span",{className:"material-icon"},"clear"),gettext("Delete account"))):null}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu dropdown-menu-right",role:"menu"},this.getAvatarButton(),this.getRenameButton(),this.getDeleteButton(),l["default"].createElement("li",{className:"divider hidden-md hidden-lg"}),l["default"].createElement("li",{className:"dropdown-buttons hidden-md hidden-lg"},l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleNav},l["default"].createElement("span",{className:"material-icon"},"menu"),gettext("Menu"))))}}]),t}(l["default"].Component);n["default"]=_},{"../../../services/modal":141,"./avatar-controls":92,"./change-username":93,"./delete-account":94,react:"react","react-redux":"react-redux"}],96:[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.CompactNav=n.SideNav=void 0;var u=e("react"),l=a(u),c=e("react-router"),f=e("../li"),d=a(f),p=e("./follow-button"),m=a(p),h=e("../../index"),g=(a(h),n.SideNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getMeta",value:function(e){return e?l["default"].createElement("span",{className:"badge"},this.props.profile[e.attr]):null}},{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"list-group nav-side"},this.props.pages.map(function(t){return l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active",key:t.component},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta))}))}}]),t}(l["default"].Component));n.CompactNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showSpecialOptions",value:function(){return this.props.profile.acl.can_follow||this.props.profile.acl.can_moderate}},{key:"getFollowButton",value:function(){return this.props.profile.acl.can_follow?l["default"].createElement(m["default"],{className:"btn btn-block",profile:this.props.profile}):null}},{key:"getModerationButton",value:function(){return this.props.profile.acl.can_moderate?l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.props.toggleModeration},l["default"].createElement("span",{className:"material-icon"},"tonality"),gettext("Moderation")):null}},{key:"getSpecialOptions",value:function(){return this.showSpecialOptions()?l["default"].createElement("li",{className:"dropdown-buttons"},this.getFollowButton(),this.getModerationButton()):null}},{key:"render",value:function(){var e=this;return l["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},this.getSpecialOptions(),this.showSpecialOptions()?l["default"].createElement("li",{className:"divider"}):null,this.props.pages.map(function(t){return l["default"].createElement(d["default"],{path:e.props.baseUrl+t.component+"/",key:t.component},l["default"].createElement(c.Link,{to:e.props.baseUrl+t.component+"/",onClick:e.props.hideNav},l["default"].createElement("span",{className:"material-icon"},t.icon),t.name,e.getMeta(t.meta)))}))}}]),t}(g)},{"../../index":128,"../li":70,"./follow-button":89,react:"react","react-router":"react-router"}],97:[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{tick:e.tick.tick,user:e.auth.user,users:e.users,profile:e.profile,"username-history":e["username-history"]}}function u(){var e=[];return S["default"].get("PROFILE_PAGES").forEach(function(t){e.push(Object.assign({},t,{path:S["default"].get("PROFILE").absolute_url+t.component+"/",component:(0,d.connect)(i)(U[t.component])}))}),e}var l=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,n.paths=u;var c=e("react"),f=a(c),d=e("react-redux"),p=e("../avatar"),m=a(p),h=e("./ban-details"),g=a(h),v=e("./followers"),b=a(v),y=e("./follows"),_=a(y),w=e("./username-history"),E=a(w),O=e("./Header"),k=a(O),N=e("./moderation/nav"),x=a(N),j=e("./navs"),P=e("../../index"),S=a(P),C=e("../../reducers/profile"),M=e("../../services/polls"),T=a(M),L=e("../../services/store"),R=a(L),I=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){R["default"].dispatch((0,C.dehydrate)(e))},n.toggleNav=function(){"pages"===n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:"pages"})},n.toggleModeration=function(){"moderation"===n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:"moderation"})},n.hideNav=function(){n.setState({dropdown:!1})},n.state={dropdown:!1},n.startPolling(e.profile.api_url.root),n}return s(t,e),l(t,[{key:"startPolling",value:function(e){T["default"].start({poll:"user-profile",url:e,frequency:9e4,update:this.update})}},{key:"getToggleNavClassName",value:function(){return this.state.dropdown?"btn btn-default btn-icon open":"btn btn-default btn-icon"}},{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}},{key:"getNavDropdown",value:function(){return"pages"===this.state.dropdown?f["default"].createElement(j.CompactNav,{pages:S["default"].get("PROFILE_PAGES"),baseUrl:S["default"].get("PROFILE").absolute_url,profile:this.props.profile,toggleModeration:this.toggleModeration,hideNav:this.hideNav}):"moderation"===this.state.dropdown?f["default"].createElement(x["default"],{profile:this.props.profile,toggleNav:this.toggleNav,hideNav:this.hideNav}):null}},{key:"getClassName",value:function(){var e="page page-user-profile";return e}},{key:"render",value:function(){return f["default"].createElement("div",{className:this.getClassName()},f["default"].createElement(k["default"],{user:this.props.user,profile:this.props.profile,toggleNav:this.toggleNav,toggleModeration:this.toggleModeration}),f["default"].createElement("div",{className:this.getCompactNavClassName()},this.getNavDropdown()),f["default"].createElement("div",{className:"container"},f["default"].createElement("div",{className:"row"},f["default"].createElement("div",{className:"col-md-3 hidden-xs hidden-sm"},f["default"].createElement("div",{className:"profile-side-avatar"},f["default"].createElement(m["default"],{user:this.props.profile,size:"400"})),f["default"].createElement(j.SideNav,{pages:S["default"].get("PROFILE_PAGES"),baseUrl:S["default"].get("PROFILE").absolute_url,profile:this.props.profile})),f["default"].createElement("div",{className:"col-md-9"},this.props.children))))}}]),t}(f["default"].Component);n["default"]=I;var A=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),l(t,[{key:"render",value:function(){return f["default"].createElement("div",{className:"container"},f["default"].createElement("p",null,"Hello, I'm placeholder for "+this.props.route.name))}}]),t}(f["default"].Component),U={posts:A,threads:A,followers:b["default"],follows:_["default"],"username-history":E["default"],"ban-details":g["default"]}},{"../../index":128,"../../reducers/profile":130,"../../services/polls":143,"../../services/store":145,"../avatar":54,"./Header":87,"./ban-details":88,"./followers":90,"./follows":91,"./moderation/nav":95,"./navs":96,"./username-history":98,react:"react","react-redux":"react-redux"}],98:[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("../button"),f=a(c),d=e("../search"),p=a(d),m=e("../username-history"),h=a(m),g=e("../../index"),v=a(g),b=e("../../reducers/username-history"),y=e("../../services/ajax"),_=a(y),w=e("../../services/snackbar"),E=a(w),O=e("../../services/store"),k=a(O),N=e("../../services/page-title"),x=a(N),j=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.loadMore=function(){n.setState({isBusy:!0}),n.loadChanges(n.state.page+1,n.state.search)},n.search=function(e){n.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),n.loadChanges(1,e.target.value)},v["default"].has("PROFILE_NAME_HISTORY")?n.initWithPreloadedData(v["default"].pop("PROFILE_NAME_HISTORY")):n.initWithoutPreloadedData(),n}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},k["default"].dispatch((0,b.dehydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadChanges()}},{key:"loadChanges",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?1:arguments[0],n=arguments.length<=1||void 0===arguments[1]?null:arguments[1];_["default"].get(v["default"].get("USERNAME_CHANGES_API"),{user:this.props.profile.id,search:n,page:t||1},"search-username-history").then(function(n){1===t?k["default"].dispatch((0,b.dehydrate)(n.results)):k["default"].dispatch((0,b.append)(n.results)),e.setState({isLoaded:!0,isBusy:!1,count:n.count,more:n.more,page:n.page,pages:n.pages})},function(e){E["default"].apiError(e)})}},{key:"componentDidMount",value:function(){x["default"].set({title:gettext("Username history"),parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(changes)s username change.","Found %(changes)s username changes.",this.state.count);return interpolate(e,{changes:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var e=ngettext("Your username was changed %(changes)s time.","Your username was changed %(changes)s times.",this.state.count);return interpolate(e,{changes:this.state.count},!0)}var e=ngettext("%(username)s's username was changed %(changes)s time.","%(username)s's username was changed %(changes)s times.",this.state.count);return interpolate(e,{username:this.props.profile.username,changes:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no username changes matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("No name changes have been recorded for your account."):interpolate(gettext("%(username)s's username was never changed."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?l["default"].createElement("div",{className:"pager-more"},l["default"].createElement(f["default"],{loading:this.state.isBusy,onClick:this.loadMore},interpolate(gettext("Show older (%(more)s)"),{more:this.state.more},!0))):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"profile-username-history"},l["default"].createElement("nav",{className:"toolbar"},l["default"].createElement("h3",{className:"toolbar-left"},this.getLabel()),l["default"].createElement(p["default"],{className:"toolbar-right",value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})),l["default"].createElement(h["default"],{isLoaded:this.state.isLoaded,emptyMessage:this.getEmptyMessage(),changes:this.props["username-history"]}),this.getMoreButton())}}]),t}(l["default"].Component);n["default"]=j},{"../../index":128,"../../reducers/username-history":133,"../../services/ajax":135,"../../services/page-title":142,"../../services/snackbar":144,"../../services/store":145,"../button":56,"../search":104,"../username-history":112,react:"react"}],99:[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"),f=a(c),d=e("./register.js"),p=a(d),m=e("../services/captcha"),h=a(m),g=e("../services/modal"),v=a(g),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?v["default"].show(p["default"]):(n.setState({isLoading:!0}),Promise.all([h["default"].load(),w["default"].load()]).then(function(){n.state.isLoaded||n.setState({isLoading:!1,isLoaded:!1}),v["default"].show(p["default"])}))},n.state={isLoading:!1,isLoaded:!1},n}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showRegisterModal,className:"btn "+this.getClassName(),disabled:this.state.isLoaded},gettext("Register"),this.state.isLoading?l["default"].createElement(f["default"],null):null)}}]),t}(l["default"].Component);n["default"]=E},{"../services/captcha":137,"../services/modal":141,"../services/snackbar":144,"../services/zxcvbn":146,"./loader":71,"./register.js":100,react:"react"}],100:[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),f=e("./button"),d=r(f),p=e("./form"),m=r(p),h=e("./form-group"),g=r(h),v=e("./password-strength"),b=r(v),y=e("../index"),_=r(y),w=e("../services/ajax"),E=r(w),O=e("../services/auth"),k=r(O),N=e("../services/captcha"),x=r(N),j=e("../services/modal"),P=r(j),S=e("../services/snackbar"),C=r(S),M=e("../utils/banned-page"),T=r(M),L=e("../utils/validators"),R=a(L),I=n.RegisterForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,username:"",email:"",password:"",captcha:"",validators:{username:[R.usernameContent(),R.usernameMinLength(_["default"].get("SETTINGS")),R.usernameMaxLength(_["default"].get("SETTINGS"))],email:[R.email()],password:[R.passwordMinLength(_["default"].get("SETTINGS"))],captcha:x["default"].validator()},errors:{}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(C["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)}),C["default"].error(gettext("Form contains errors."))):403===e.status&&e.ban?((0,T["default"])(e.ban),P["default"].hide()):C["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(g["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(g["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(g["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})),x["default"].component({form:this,labelClass:"col-sm-4",controlClass:"col-sm-8"})),c["default"].createElement("div",{className:"modal-footer"},this.getLegalFootNote(),c["default"].createElement(d["default"],{className:"btn-primary",loading:this.state.isLoading},gettext("Register account"))))))}}]),t}(m["default"]),A=n.RegisterComplete=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getLead",value:function(){return"user"===this.props.activation?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===this.props.activation?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):void 0}},{key:"getSubscript",value:function(){return"user"===this.props.activation?gettext("We have sent an e-mail to %(email)s with link that you have to click to activate your account."):"admin"===this.props.activation?gettext("We will send an e-mail to %(email)s when this takes place."):void 0}},{key:"render",value:function(){return c["default"].createElement("div",{className:"modal-dialog modal-message modal-register",role:"document"},c["default"].createElement("div",{className:"modal-content"},c["default"].createElement("div",{className:"modal-header"},c["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},c["default"].createElement("span",{"aria-hidden":"true"},"×")),c["default"].createElement("h4",{className:"modal-title"},gettext("Registration complete"))),c["default"].createElement("div",{className:"modal-body"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},interpolate(this.getLead(),{username:this.props.username},!0)),c["default"].createElement("p",null,interpolate(this.getSubscript(),{email:this.props.email},!0))))))}}]),t}(c["default"].Component),U=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.completeRegistration=function(e){"active"===e.activation?(P["default"].hide(),k["default"].signIn(e)):n.setState({complete:e})},n.state={complete:!1},n}return i(t,e),u(t,[{key:"render",value:function(){return this.state.complete?c["default"].createElement(A,{activation:this.state.complete.activation,username:this.state.complete.username,email:this.state.complete.email}):c["default"].createElement(I,{callback:this.completeRegistration})}}]),t}(c["default"].Component);n["default"]=U},{"../index":128,"../services/ajax":135,"../services/auth":136,"../services/captcha":137,"../services/modal":141,"../services/snackbar":144,"../utils/banned-page":147,"../utils/validators":155,"./button":56,"./form":69,"./form-group":68,"./password-strength":86,react:"react"}],101:[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),f=e("../index"),d=r(f),p=e("./button"),m=r(p),h=e("./form"),g=r(h),v=e("../services/ajax"),b=r(v),y=e("../services/snackbar"),_=r(y),w=e("../utils/validators"),E=a(w),O=e("../utils/banned-page"),k=r(O),N=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(d["default"].get("SEND_ACTIVATION_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["already_active","inactive_admin"].indexOf(e.code)>-1?_["default"].info(e.detail):403===e.status&&e.ban?(0,k["default"])(e.ban):_["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-activation-link"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),c["default"].createElement(m["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(g["default"]),x=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),j=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(x,{user:this.state.complete,callback:this.reset}):c["default"].createElement(N,{callback:this.complete})}}]),t}(c["default"].Component);n["default"]=j},{"../index":128,"../services/ajax":135,"../services/snackbar":144,"../utils/banned-page":147,"../utils/validators":155,"./button":56,"./form":69,react:"react"}],102:[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),f=e("react-dom"),d=r(f),p=e("../index"),m=r(p),h=e("./button"),g=r(h),v=e("./form"),b=r(v),y=e("../services/ajax"),_=r(y),w=e("../services/snackbar"),E=r(w),O=e("../utils/validators"),k=a(O),N=e("../utils/banned-page"),x=r(N),j=n.RequestResetForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,email:"",validators:{email:[k.email()]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(E["default"].error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return _["default"].post(m["default"].get("SEND_PASSWORD_RESET_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["inactive_user","inactive_admin"].indexOf(e.code)>-1?this.props.showInactivePage(e):403===e.status&&e.ban?(0,x["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(g["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Send link"))))}}]),t}(b["default"]),P=n.LinkSent=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getMessage",value:function(){return interpolate(gettext("Reset password link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-request-password-reset well-done"},c["default"].createElement("div",{className:"done-message"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",null,this.getMessage())),c["default"].createElement("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},gettext("Request another link"))))}}]),t}(c["default"].Component),S=n.AccountInactivePage=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?c["default"].createElement("p",null,c["default"].createElement("a",{href:m["default"].get("REQUEST_ACTIVATION_URL")},gettext("Activate your account."))):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-info page-forgotten-password-inactive"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"info_outline")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},gettext("Your account is inactive.")),c["default"].createElement("p",null,this.props.message),this.getActivateButton()))))}}]),t}(c["default"].Component),C=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){d["default"].render(c["default"].createElement(S,{activation:e.code,message:e.detail}),document.getElementById("page-mount"))}},{key:"render",value:function(){return this.state.complete?c["default"].createElement(P,{user:this.state.complete,callback:this.reset}):c["default"].createElement(j,{callback:this.complete,showInactivePage:this.showInactivePage})}}]),t}(c["default"].Component);n["default"]=C},{"../index":128,"../services/ajax":135,"../services/snackbar":144,"../utils/banned-page":147,"../utils/validators":155,"./button":56,"./form":69,react:"react","react-dom":"react-dom"}],103:[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),f=e("react-dom"),d=r(f),p=e("../index"),m=r(p),h=e("./button"),g=r(h),v=e("./form"),b=r(v),y=e("./sign-in.js"),_=r(y),w=e("../services/ajax"),E=r(w),O=e("../services/auth"),k=r(O),N=e("../services/modal"),x=r(N),j=e("../services/snackbar"),P=r(j),S=e("../utils/validators"),C=a(S),M=e("../utils/banned-page"),T=r(M),L=n.ResetPasswordForm=function(e){function t(e){o(this,t);var n=s(this,Object.getPrototypeOf(t).call(this,e));return n.state={isLoading:!1,password:"",validators:{password:[C.passwordMinLength(m["default"].get("SETTINGS"))]}},n}return i(t,e),u(t,[{key:"clean",value:function(){return this.isValid()?!0:(this.state.password.trim().length?P["default"].error(this.state.errors.password[0]):P["default"].error(gettext("Enter new password.")),!1)}},{key:"send",value:function(){return E["default"].post(m["default"].get("CHANGE_PASSWORD_API"),{password:this.state.password})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){403===e.status&&e.ban?(0,T["default"])(e.ban):P["default"].apiError(e)}},{key:"render",value:function(){return c["default"].createElement("div",{className:"well well-form well-form-reset-password"},c["default"].createElement("form",{onSubmit:this.handleSubmit},c["default"].createElement("div",{className:"form-group"},c["default"].createElement("div",{className:"control-input"},c["default"].createElement("input",{type:"password",className:"form-control",placeholder:gettext("Enter new password"),disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),c["default"].createElement(g["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Change password"))))}}]),t}(b["default"]),R=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(){x["default"].show(_["default"])}},{key:"render",value:function(){return c["default"].createElement("div",{className:"page page-message page-message-success page-forgotten-password-changed"},c["default"].createElement("div",{className:"container"},c["default"].createElement("div",{className:"message-panel"},c["default"].createElement("div",{className:"message-icon"},c["default"].createElement("span",{className:"material-icon"},"check")),c["default"].createElement("div",{className:"message-body"},c["default"].createElement("p",{className:"lead"},this.getMessage()),c["default"].createElement("p",null,gettext("You will have to sign in using new password before continuing.")),c["default"].createElement("p",null,c["default"].createElement("button",{type:"button",className:"btn btn-primary",onClick:this.showSignIn},gettext("Sign in")))))))}}]),t}(c["default"].Component),I=function(e){function t(){var e,n,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){k["default"].softSignOut(),$('#hidden-login-form input[name="redirect_to"]').remove(),d["default"].render(c["default"].createElement(R,{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(L,{callback:this.complete})}}]),t}(c["default"].Component);n["default"]=I},{"../index":128,"../services/ajax":135,"../services/auth":136,"../services/modal":141,"../services/snackbar":144,"../utils/banned-page":147,"../utils/validators":155,"./button":56,"./form":69,"./sign-in.js":106,react:"react","react-dom":"react-dom"}],104:[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:"getClassName",value:function(){return this.props.className?"form-search "+this.props.className:"form-search"}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("input",{type:"text",className:"form-control",value:this.props.value,onChange:this.props.onChange,placeholder:this.props.placeholder||gettext("Search...")}),l["default"].createElement("span",{className:"material-icon"},"search"))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],105:[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(){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.change=function(e){return function(){a.props.onChange({target:{value:e}})}},s=n,o(a,s)}return s(t,e),i(t,[{key:"getChoice",value:function(){var e=this,t=null;return this.props.choices.map(function(n){n.value===e.props.value&&(t=n)}),t}},{key:"getIcon",value:function(){return this.getChoice().icon}},{key:"getLabel",value:function(){return this.getChoice().label}},{key:"render",value:function(){var e=this;return l["default"].createElement("div",{className:"btn-group btn-select-group"},l["default"].createElement("button",{type:"button",className:"btn btn-select dropdown-toggle",id:this.props.id||null,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel()),l["default"].createElement("ul",{className:"dropdown-menu"},this.props.choices.map(function(t,n){return l["default"].createElement("li",{key:n},l["default"].createElement("button",{type:"button",className:"btn-link",onClick:e.change(t.value)},l["default"].createElement("span",{className:"material-icon"},t.icon),t.label))})))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],106:[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"),f=a(c),d=e("./button"),p=a(d),m=e("./form"),h=a(m),g=e("../services/ajax"),v=a(g),b=e("../services/modal"),y=a(b),_=e("../services/snackbar"),w=a(_),E=e("../utils/banned-page"),O=a(E),k=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 v["default"].post(f["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(v["default"].getCsrfToken()),e.find('input[name="redirect_to"]').val(window.location.pathname),e.find('input[name="username"]').val(this.state.username),e.find('input[name="password"]').val(this.state.password),e.submit(),this.setState({isLoading:!0})}},{key:"handleError",value:function(e){400===e.status?"inactive_admin"===e.code?w["default"].info(e.detail):"inactive_user"===e.code?(w["default"].info(e.detail),this.setState({showActivation:!0})):"banned"===e.code?((0,O["default"])(e.detail),y["default"].hide()):w["default"].error(e.detail):403===e.status&&e.ban?((0,O["default"])(e.ban),y["default"].hide()):w["default"].apiError(e)}},{key:"getActivationButton",value:function(){return this.state.showActivation?l["default"].createElement("a",{href:f["default"].get("REQUEST_ACTIVATION_URL"),className:"btn btn-success btn-block"},gettext("Activate account")):null}},{key:"render",value:function(){return l["default"].createElement("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},l["default"].createElement("div",{className:"modal-content"},l["default"].createElement("div",{className:"modal-header"},l["default"].createElement("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},l["default"].createElement("span",{"aria-hidden":"true"},"×")),l["default"].createElement("h4",{className:"modal-title"},gettext("Sign in"))),l["default"].createElement("form",{onSubmit:this.handleSubmit},l["default"].createElement("div",{className:"modal-body"},l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["default"].createElement("input",{id:"id_username",className:"form-control",type:"text",disabled:this.state.isLoading,placeholder:gettext("Username or e-mail"),onChange:this.bindInput("username"),value:this.state.username}))),l["default"].createElement("div",{className:"form-group"},l["default"].createElement("div",{className:"control-input"},l["default"].createElement("input",{id:"id_password",className:"form-control",type:"password",disabled:this.state.isLoading,placeholder:gettext("Password"),onChange:this.bindInput("password"),value:this.state.password})))),l["default"].createElement("div",{className:"modal-footer"},this.getActivationButton(),l["default"].createElement(p["default"],{className:"btn-primary btn-block",loading:this.state.isLoading},gettext("Sign in")),l["default"].createElement("a",{href:f["default"].get("FORGOTTEN_PASSWORD_URL"),className:"btn btn-default btn-block"},gettext("Forgot password?"))))))}}]),t}(h["default"]);n["default"]=k},{"../index":128,"../services/ajax":135,"../services/modal":141,"../services/snackbar":144,"../utils/banned-page":147,"./button":56,"./form":69,react:"react"}],107:[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),f={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 "+f[this.props.type]},this.props.message))}}]),t}(c["default"].Component)},{react:"react"}],108:[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"),f=a(c),d=e("../register-button"),p=a(d),m=e("../sign-in.js"),h=a(m),g=e("../../services/mobile-navbar-dropdown"),v=a(g),b=e("../../services/modal"),y=a(b),_=n.GuestMenu=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showSignInModal",value:function(){y["default"].show(h["default"])}},{key:"render",value:function(){return l["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},l["default"].createElement("li",{className:"guest-preview"},l["default"].createElement("h4",null,gettext("You are browsing as guest.")),l["default"].createElement("p",null,gettext("Sign in or register to start and participate in discussions.")),l["default"].createElement("div",{className:"row"},l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.showSignInModal
+},gettext("Sign in"))),l["default"].createElement("div",{className:"col-xs-6"},l["default"].createElement(p["default"],{className:"btn-primary btn-block"},gettext("Register"))))))}}]),t}(l["default"].Component);n.GuestNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"render",value:function(){return l["default"].createElement("div",{className:"nav nav-guest"},l["default"].createElement("button",{type:"button",className:"btn navbar-btn btn-default",onClick:this.showSignInModal},gettext("Sign in")),l["default"].createElement(p["default"],{className:"navbar-btn btn-primary"},gettext("Register")))}}]),t}(_),n.CompactGuestNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"showGuestMenu",value:function(){v["default"].show(_)}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.showGuestMenu},l["default"].createElement(f["default"],{size:"64"}))}}]),t}(l["default"].Component)},{"../../services/mobile-navbar-dropdown":140,"../../services/modal":141,"../avatar":54,"../register-button":99,"../sign-in.js":106,react:"react"}],109:[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),f=e("./guest-nav"),d=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(d.UserNav,{user:this.props.user}):c["default"].createElement(f.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(d.CompactUserNav,{user:this.props.user}):c["default"].createElement(f.CompactGuestNav,null)}}]),t}(c["default"].Component)},{"./guest-nav":108,"./user-nav":110,react:"react"}],110:[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),f=e("react-redux"),d=e("../avatar"),p=a(d),m=e("../change-avatar/root"),h=a(m),g=e("../../index"),v=a(g),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,f.connect)(m.select)(h["default"]))}},{key:"render",value:function(){return c["default"].createElement("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},c["default"].createElement("li",{className:"dropdown-header"},c["default"].createElement("strong",null,this.props.user.username)),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",null,c["default"].createElement("a",{href:this.props.user.absolute_url},c["default"].createElement("span",{className:"material-icon"},"account_circle"),gettext("See your profile"))),c["default"].createElement("li",null,c["default"].createElement("a",{href:v["default"].get("USERCP_URL")},c["default"].createElement("span",{className:"material-icon"},"done_all"),gettext("Change options"))),c["default"].createElement("li",null,c["default"].createElement("button",{type:"button",className:"btn-link",onClick:this.changeAvatar},c["default"].createElement("span",{className:"material-icon"},"portrait"),gettext("Change avatar"))),c["default"].createElement("li",{className:"divider"}),c["default"].createElement("li",{className:"dropdown-buttons"},c["default"].createElement("button",{type:"button",className:"btn btn-default btn-block",onClick:this.logout},gettext("Log out"))))}}]),t}(c["default"].Component);n.UserNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"render",value:function(){return c["default"].createElement("ul",{className:"ul nav navbar-nav nav-user"},c["default"].createElement("li",{className:"dropdown"},c["default"].createElement("a",{href:this.props.user.absolute_url,className:"dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",role:"button"},c["default"].createElement(p["default"],{user:this.props.user,size:"64"})),c["default"].createElement(E,{user:this.props.user})))}}]),t}(c["default"].Component),n.CompactUserNav=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),u(t,[{key:"showUserMenu",value:function(){y["default"].showConnected("user-menu",(0,f.connect)(i)(E))}},{key:"render",value:function(){return c["default"].createElement("button",{type:"button",onClick:this.showUserMenu},c["default"].createElement(p["default"],{user:this.props.user,size:"64"}))}}]),t}(c["default"].Component)},{"../../index":128,"../../services/mobile-navbar-dropdown":140,"../../services/modal":141,"../avatar":54,"../change-avatar/root":66,react:"react","react-redux":"react-redux"}],111:[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.StatusLabel=n.StatusIcon=void 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:"getClass",value:function(){var e="";return this.props.status.is_banned?e="banned":this.props.status.is_hidden?e="offline":this.props.status.is_online_hidden?e="online":this.props.status.is_offline_hidden?e="offline":this.props.status.is_online?e="online":this.props.status.is_offline&&(e="offline"),"user-status user-"+e}},{key:"render",value:function(){return l["default"].createElement("span",{className:this.getClass()},this.props.children)}}]),t}(l["default"].Component);n["default"]=c;n.StatusIcon=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getIcon",value:function(){return this.props.status.is_banned?"remove_circle_outline":this.props.status.is_hidden?"help_outline":this.props.status.is_online_hidden?"label":this.props.status.is_offline_hidden?"label_outline":this.props.status.is_online?"lens":this.props.status.is_offline?"panorama_fish_eye":void 0}},{key:"render",value:function(){return l["default"].createElement("span",{className:"material-icon status-icon"},this.getIcon())}}]),t}(l["default"].Component),n.StatusLabel=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getHelp",value:function(){return this.props.status.is_banned?this.props.status.banned_until?interpolate(gettext("%(username)s is banned until %(ban_expires)s"),{username:this.props.user.username,ban_expires:this.props.status.banned_until.format("LL, LT")},!0):interpolate(gettext("%(username)s is banned"),{username:this.props.user.username},!0):this.props.status.is_hidden?interpolate(gettext("%(username)s is hiding presence"),{username:this.props.user.username},!0):this.props.status.is_online_hidden?interpolate(gettext("%(username)s is online (hidden)"),{username:this.props.user.username},!0):this.props.status.is_offline_hidden?interpolate(gettext("%(username)s was last seen %(last_click)s (hidden)"),{username:this.props.user.username,last_click:this.props.status.last_click.fromNow()},!0):this.props.status.is_online?interpolate(gettext("%(username)s is online"),{username:this.props.user.username},!0):this.props.status.is_offline?interpolate(gettext("%(username)s was last seen %(last_click)s"),{username:this.props.user.username,last_click:this.props.status.last_click.fromNow()},!0):void 0}},{key:"getLabel",value:function(){return this.props.status.is_banned?gettext("Banned"):this.props.status.is_hidden?gettext("Hidden"):this.props.status.is_online_hidden?gettext("Online (hidden)"):this.props.status.is_offline_hidden?gettext("Offline (hidden)"):this.props.status.is_online?gettext("Online"):this.props.status.is_offline?gettext("Offline"):void 0}},{key:"render",value:function(){return l["default"].createElement("span",{className:this.props.className||"status-label",title:this.getHelp()},this.getLabel())}}]),t}(l["default"].Component)},{react:"react"}],112:[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});var l=e("react"),c=r(l),f=e("./avatar"),d=r(f),p=e("../utils/random"),m=a(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"renderUserAvatar",value:function(e){return e.changed_by?c["default"].createElement("a",{href:e.changed_by.absolute_url,className:"user-avatar"},c["default"].createElement(d["default"],{user:e.changed_by,size:"100"})):c["default"].createElement("span",{className:"user-avatar"},c["default"].createElement(d["default"],{size:"100"}))}},{key:"renderUsername",value:function(e){return e.changed_by?c["default"].createElement("a",{href:e.changed_by.absolute_url,className:"item-title"},e.changed_by.username):c["default"].createElement("span",{className:"item-title"},e.changed_by_username)}},{key:"renderHistory",value:function(){var e=this;return c["default"].createElement("div",{className:"username-history ui-ready"},c["default"].createElement("ul",{className:"list-group"},this.props.changes.map(function(t){return c["default"].createElement("li",{className:"list-group-item",key:t.id},c["default"].createElement("div",{className:"username-change-avatar"},e.renderUserAvatar(t)),c["default"].createElement("div",{className:"username-change-author"},e.renderUsername(t)),c["default"].createElement("div",{className:"username-change"},t.old_username,c["default"].createElement("span",{className:"material-icon"},"arrow_forward"),t.new_username),c["default"].createElement("div",{className:"username-change-date"},c["default"].createElement("abbr",{title:t.changed_on.format("LLL")},t.changed_on.fromNow())))})))}},{key:"getEmptyMessage",value:function(){return this.props.emptyMessage?this.props.emptyMessage:gettext("No name changes have been recorded for your account.")}},{key:"renderEmptyHistory",value:function(){return c["default"].createElement("div",{className:"username-history ui-ready"},c["default"].createElement("ul",{className:"list-group"},c["default"].createElement("li",{className:"list-group-item empty-message"},this.getEmptyMessage())))}},{key:"renderHistoryPreview",value:function(){return c["default"].createElement("div",{className:"username-history ui-preview"},c["default"].createElement("ul",{className:"list-group"},m.range(3,5).map(function(e){return c["default"].createElement("li",{className:"list-group-item",key:e},c["default"].createElement("div",{className:"username-change-avatar"},c["default"].createElement("span",{className:"user-avatar"},c["default"].createElement(d["default"],{size:"100"}))),c["default"].createElement("div",{className:"username-change-author"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,100)+"px"}}," ")),c["default"].createElement("div",{className:"username-change"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,50)+"px"}}," "),c["default"].createElement("span",{className:"material-icon"},"arrow_forward"),c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,50)+"px"}}," ")),c["default"].createElement("div",{className:"username-change-date"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](50,100)+"px"}}," ")))})))}},{key:"render",value:function(){return this.props.isLoaded?this.props.changes.length?this.renderHistory():this.renderEmptyHistory():this.renderHistoryPreview()}}]),t}(c["default"].Component);n["default"]=h},{"../utils/random":152,"./avatar":54,react:"react"}],113:[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("./user-card"),f=a(c),d=e("./user-preview"),p=a(d),m=e("../../utils/batch"),h=a(m),g=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPager",value:function(){return this.props.pages>1?l["default"].createElement(Pager,this.props):null}},{key:"getClassName",value:function(){return this.props.className?"users-cards-list "+this.props.className+" ui-ready":"users-cards-list ui-ready"}},{key:"getColClassName",value:function(){return"col-md-"+12/this.props.cols}},{key:"getBody",value:function(){var e=this;if(this.props.isLoaded)return(0,h["default"])(this.props.users,this.props.cols).map(function(t,n){return l["default"].createElement("div",{className:"row",key:n},t.map(function(t){return l["default"].createElement("div",{className:e.getColClassName(),key:t.id},l["default"].createElement(f["default"],{user:t,showStatus:e.props.showStatus,showRank:e.props.showRank}))}))});for(var t=[],n=0;n<this.props.cols;n++)t.push(n);return l["default"].createElement("div",{className:"row"},t.map(function(t){return l["default"].createElement("div",{className:e.getColClassName(),key:t},l["default"].createElement(p["default"],{showStatus:e.props.showStatus}))}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"users-cards-list ui-ready"},this.getBody())}}]),t}(l["default"].Component);n["default"]=g},{"../../utils/batch":148,"./user-card":114,"./user-preview":115,react:"react"}],114:[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"),f=a(c),d=e("../user-status"),p=a(d),m=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.user.rank.css_class?"user-card user-card-"+this.props.user.rank.css_class+" ui-ready":"user-card ui-ready"}},{key:"getUserStatus",value:function(){return this.props.showStatus?this.props.user.status?l["default"].createElement(p["default"],{user:this.props.user,status:this.props.user.status},l["default"].createElement(d.StatusIcon,{user:this.props.user,status:this.props.user.status}),l["default"].createElement(d.StatusLabel,{user:this.props.user,status:this.props.user.status,className:"status-label"})):l["default"].createElement("span",{className:"user-status"},l["default"].createElement("span",{className:"status-icon ui-preview"}," "),l["default"].createElement("span",{className:"status-label ui-preview"}," ")):null}},{key:"getRankName",value:function(){return this.props.showRank?this.props.user.rank.is_tab?l["default"].createElement("a",{href:this.props.user.rank.absolute_url,className:"item-title rank-name"},this.props.user.rank.name):l["default"].createElement("span",{className:"item-title rank-name"},this.props.user.rank.name):null}},{key:"getUserTitle",value:function(){return this.props.user.title?l["default"].createElement("span",{className:"user-title"},this.props.user.title):null}},{key:"getUserJoinedOn",value:function(){var e=interpolate(gettext("Joined on %(joined_on)s"),{joined_on:this.props.user.joined_on.format("LL, LT")},!0),t=interpolate(gettext("Joined %(joined_on)s"),{joined_on:this.props.user.joined_on.fromNow()},!0);return l["default"].createElement("span",{className:"user-joined-on",title:e},t)}},{key:"render",value:function(){return l["default"].createElement("div",{className:this.getClassName()},l["default"].createElement("div",{className:"user-card-bg-image"},l["default"].createElement(f["default"],{user:this.props.user,size:"400",className:"bg-image"}),l["default"].createElement("div",{className:"user-card-bg"},l["default"].createElement("div",{className:"user-details"},l["default"].createElement("div",{className:"user-avatar"},l["default"].createElement("a",{href:this.props.user.absolute_url},l["default"].createElement(f["default"],{user:this.props.user,size:"400"}))),l["default"].createElement("h4",{className:"user-name"},l["default"].createElement("a",{href:this.props.user.absolute_url,className:"item-title"},this.props.user.username)),l["default"].createElement("p",{className:"user-subscript"},this.getUserStatus(),this.getRankName(),this.getUserTitle(),this.getUserJoinedOn())),l["default"].createElement("div",{className:"user-card-stats"},l["default"].createElement("ul",{className:"list-unstyled"},l["default"].createElement("li",{className:"user-posts-count"},l["default"].createElement("strong",null,this.props.user.posts),l["default"].createElement("small",null,gettext("posts"))),l["default"].createElement("li",{className:"user-threads-count"},l["default"].createElement("strong",null,this.props.user.threads),l["default"].createElement("small",null,gettext("threads"))),l["default"].createElement("li",{className:"user-followers-count"},l["default"].createElement("strong",null,this.props.user.followers),l["default"].createElement("small",null,gettext("followers"))))))))}}]),t}(l["default"].Component);n["default"]=m},{"../avatar":54,"../user-status":111,react:"react"}],115:[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});var l=e("react"),c=r(l),f=e("../avatar"),d=r(f),p=e("../../utils/random"),m=a(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"getUserStatus",value:function(){return this.props.showStatus?c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview"}," "),c["default"].createElement("span",{className:"status-label ui-preview"}," ")):null}},{key:"render",value:function(){return c["default"].createElement("div",{className:"user-card ui-preview"},c["default"].createElement("div",{className:"user-card-bg-image"},c["default"].createElement(d["default"],{size:"400",className:"bg-image"}),c["default"].createElement("div",{className:"user-card-bg"},c["default"].createElement("div",{className:"user-details"},c["default"].createElement("div",{className:"user-avatar"},c["default"].createElement(d["default"],{size:"400"})),c["default"].createElement("h4",{className:"user-name"},c["default"].createElement("span",{className:"item-title"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](60,150)+"px"}}," "))),c["default"].createElement("p",{className:"user-subscript"},this.getUserStatus(),c["default"].createElement("span",{className:"user-joined-on"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,50)+"px"}}," ")))),c["default"].createElement("div",{className:"user-card-stats"},c["default"].createElement("ul",{className:"list-unstyled"},c["default"].createElement("li",{className:"user-posts-count"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text"}," ")),c["default"].createElement("small",null,gettext("posts"))),c["default"].createElement("li",{className:"user-threads-count"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text"}," ")),c["default"].createElement("small",null,gettext("threads"))),c["default"].createElement("li",{className:"user-followers-count"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text"}," ")),c["default"].createElement("small",null,gettext("followers"))))))))}}]),t}(c["default"].Component);n["default"]=h},{"../../utils/random":152,"../avatar":54,react:"react"}],116:[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:"getEmptyMessage",value:function(){return interpolate(gettext("No users have posted any new messages during last %(days)s days."),{days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return l["default"].createElement("div",{className:"active-posters-list"},l["default"].createElement("div",{className:"container"},l["default"].createElement("p",{className:"lead"},this.getEmptyMessage())))}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],117:[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("react-router"),f=e("../../avatar"),d=a(f),p=e("../../user-status"),m=a(p),h=e("../../../index"),g=a(h),v=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.rank.css_class?"list-group-item list-group-rank-"+this.props.rank.css_class:"list-group-item"}},{key:"getUserStatus",value:function(){return this.props.user.status?l["default"].createElement(m["default"],{user:this.props.user,status:this.props.user.status},l["default"].createElement(p.StatusIcon,{user:this.props.user,status:this.props.user.status}),l["default"].createElement(p.StatusLabel,{user:this.props.user,status:this.props.user.status,className:"status-label hidden-xs hidden-sm"})):l["default"].createElement("span",{className:"user-status"},l["default"].createElement("span",{className:"status-icon ui-preview"}," "),l["default"].createElement("span",{className:"status-label ui-preview hidden-xs hidden-sm"}," "))}},{key:"getRankName",value:function(){if(this.props.rank.is_tab){var e=g["default"].get("USERS_LIST_URL")+this.props.rank.slug+"/";return l["default"].createElement(c.Link,{to:e,className:"item-title rank-name"},this.props.rank.name)}return l["default"].createElement("span",{className:"item-title rank-name"},this.props.rank.name)}},{key:"getUserTitle",value:function(){return this.props.user.title?l["default"].createElement("span",{className:"user-title hidden-xs hidden-sm"},this.props.user.title):null}},{key:"render",value:function(){return l["default"].createElement("li",{className:this.getClassName()},l["default"].createElement("div",{className:"rank-user-avatar"},l["default"].createElement("a",{href:this.props.user.absolute_url},l["default"].createElement(d["default"],{user:this.props.user,size:"50"}))),l["default"].createElement("div",{className:"rank-user"},l["default"].createElement("div",{className:"user-name"},l["default"].createElement("a",{href:this.props.user.absolute_url,className:"item-title"},this.props.user.username)),this.getUserStatus(),this.getRankName(),this.getUserTitle()),l["default"].createElement("div",{className:"rank-position"},l["default"].createElement("strong",null,"#",this.props.counter),l["default"].createElement("small",null,gettext("Rank"))),l["default"].createElement("div",{className:"rank-posts-counted"},l["default"].createElement("strong",null,this.props.user.meta.score),l["default"].createElement("small",null,gettext("Ranked posts"))),l["default"].createElement("div",{className:"rank-posts-total"},l["default"].createElement("strong",null,this.props.user.posts),l["default"].createElement("small",null,gettext("Total posts"))))}}]),t}(l["default"].Component);n["default"]=v},{"../../../index":128,"../../avatar":54,"../../user-status":111,react:"react","react-router":"react-router"}],118:[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});var l=e("react"),c=r(l),f=e("../../avatar"),d=r(f),p=e("../../../utils/random"),m=a(p),h=function(e){function t(){return o(this,t),s(this,Object.getPrototypeOf(t).apply(this,arguments))}return i(t,e),u(t,[{key:"render",value:function(){return c["default"].createElement("div",{className:"active-posters-list"},c["default"].createElement("div",{className:"container"},c["default"].createElement("p",{className:"lead ui-preview-paragraph"},m.range(3,4).map(function(e){return c["default"].createElement("span",{key:e,className:"ui-preview-text",style:{width:m["int"](50,120)+"px"}}," ")})),c["default"].createElement("div",{className:"active-posters ui-preview"},c["default"].createElement("ul",{className:"list-group"},m.range(5,10).map(function(e,t){return c["default"].createElement("li",{key:e,className:"list-group-item"},c["default"].createElement("div",{className:"rank-user-avatar"},c["default"].createElement("span",null,c["default"].createElement(d["default"],{size:"50"}))),c["default"].createElement("div",{className:"rank-user"},c["default"].createElement("div",{className:"user-name"},c["default"].createElement("span",{className:"item-title"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,80)+"px"}}," "))),c["default"].createElement("span",{className:"user-status"},c["default"].createElement("span",{className:"status-icon ui-preview"}," "),c["default"].createElement("span",{className:"status-label ui-preview hidden-xs hidden-sm"}," ")),c["default"].createElement("span",{className:"rank-name"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,50)+"px"}}," ")),c["default"].createElement("span",{className:"user-title hidden-xs hidden-sm"},c["default"].createElement("span",{className:"ui-preview-text",style:{width:m["int"](30,50)+"px"}}," "))),c["default"].createElement("div",{className:"rank-position"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:"30px"}}," ")),c["default"].createElement("small",null,gettext("Rank"))),c["default"].createElement("div",{className:"rank-posts-counted"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:"30px"}}," ")),c["default"].createElement("small",null,gettext("Ranked posts"))),c["default"].createElement("div",{className:"rank-posts-total"},c["default"].createElement("strong",null,c["default"].createElement("span",{className:"ui-preview-text",style:{width:"30px"}}," ")),c["default"].createElement("small",null,gettext("Total posts"))))})))))}}]),t}(c["default"].Component);n["default"]=h},{"../../../utils/random":152,"../../avatar":54,react:"react"}],119:[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("./list-item"),f=a(c),d=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getLeadMessage",value:function(){var e=ngettext("%(posters)s most active poster from last %(days)s days.","%(posters)s most active posters from last %(days)s days.",this.props.count);return interpolate(e,{posters:this.props.count,days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return l["default"].createElement("div",{className:"active-posters-list"},l["default"].createElement("div",{className:"container"},l["default"].createElement("p",{className:"lead"},this.getLeadMessage()),l["default"].createElement("div",{className:"active-posters ui-ready"},l["default"].createElement("ul",{className:"list-group"},this.props.users.map(function(e,t){return l["default"].createElement(f["default"],{user:e,rank:e.rank,counter:t+1,key:e.id})})))))}}]),t}(l["default"].Component);n["default"]=d},{"./list-item":117,react:"react"}],120:[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("./list-empty"),f=a(c),d=e("./list-loading"),p=a(d),m=e("./list"),h=a(m),g=e("../../../index"),v=a(g),b=e("../../../reducers/users"),y=e("../../../services/polls"),_=a(y),w=e("../../../services/store"),E=a(w),O=e("../../../services/page-title"),k=a(O),N=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){E["default"].dispatch((0,b.dehydrate)(e.results)),n.setState({isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count})},v["default"].has("USERS")?n.initWithPreloadedData(v["default"].pop("USERS")):n.initWithoutPreloadedData(),n.startPolling(),n}return s(t,e),i(t,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count},E["default"].dispatch((0,b.dehydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(){_["default"].start({poll:"active-posters",url:v["default"].get("USERS_API"),data:{list:"active"},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){k["default"].set({title:this.props.route.extra.name,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){_["default"].stop("active-posters")}},{key:"render",value:function(){return this.state.isLoaded?this.state.count>0?l["default"].createElement(h["default"],{users:this.props.users,trackedPeriod:this.state.trackedPeriod,count:this.state.count}):l["default"].createElement(f["default"],{trackedPeriod:this.state.trackedPeriod}):l["default"].createElement(p["default"],null)}}]),t}(l["default"].Component);n["default"]=N},{"../../../index":128,"../../../reducers/users":134,"../../../services/page-title":142,"../../../services/polls":143,"../../../services/store":145,"./list":119,"./list-empty":116,"./list-loading":118,react:"react"}],121:[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.CompactNav=n.TabsNav=void 0;var u=e("react"),l=a(u),c=e("react-router"),f=e("../li"),d=a(f),p=e("../../index"),m=(a(p),function(e,t){var n=e;return n+="rank"===t.component?t.slug:t.component,n+"/"}),h=function(e,t,n){return t.map(function(t){var a=m(e,t);return l["default"].createElement(d["default"],{path:a,key:a},l["default"].createElement(c.Link,{to:a,onClick:n},t.name))})};n.TabsNav=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("ul",{className:"nav nav-pills"},h(this.props.baseUrl,this.props.lists))}}]),t}(l["default"].Component),n.CompactNav=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("ul",{className:"dropdown-menu",role:"menu"},h(this.props.baseUrl,this.props.lists,this.props.hideNav))}}]),t}(l["default"].Component)},{"../../index":128,"../li":70,react:"react","react-router":"react-router"}],122:[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("../../users-list/root"),f=a(c),d=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",null,l["default"].createElement(f["default"],{isLoaded:!1,cols:3,showStatus:!0}))}}]),t}(l["default"].Component);n["default"]=d},{"../../users-list/root":113,react:"react"}],123:[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("./pager"),f=a(c),d=e("../../users-list/root"),p=a(d),m=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPager",value:function(){return this.props.pages>1?l["default"].createElement(f["default"],this.props):null}},{key:"render",value:function(){return l["default"].createElement("div",null,l["default"].createElement(p["default"],{users:this.props.users,showStatus:!0,cols:3,isLoaded:!0}),this.getPager())}}]),t}(l["default"].Component);n["default"]=m},{"../../users-list/root":113,"./pager":124,react:"react"}],124:[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("react-router"),f=e("../../../utils/reset-scroll"),d=a(f),p=function(e){function t(){return r(this,t),o(this,Object.getPrototypeOf(t).apply(this,arguments))}return s(t,e),i(t,[{key:"getPreviousPage",value:function(){if(this.props.previous||this.props.first){var e=this.props.baseUrl;return this.props.previous&&(e+=this.props.previous+"/"),l["default"].createElement("li",{className:"previous"},l["default"].createElement(c.Link,{to:e,onClick:d["default"]},l["default"].createElement("span",{"aria-hidden":"true",className:"material-icon"},"arrow_back")))}return null}},{key:"getNextPage",value:function(){if(this.props.next){var e=this.props.baseUrl+this.props.next+"/";return l["default"].createElement("li",{className:"next"},l["default"].createElement(c.Link,{to:e,onClick:d["default"]},l["default"].createElement("span",{"aria-hidden":"true",className:"material-icon"},"arrow_forward")))}return null}},{key:"getProgessBar",value:function(){var e=this;return l["default"].createElement("ul",{className:"pager-progress-bar"},this.props.page_range.map(function(t){var n=t===e.props.page?"active":null,a=e.props.baseUrl;return t>1&&(a+=t+"/"),l["default"].createElement("li",{key:t,className:n},l["default"].createElement(c.Link,{to:a,onClick:d["default"]},t))}))}},{key:"render",value:function(){return l["default"].createElement("div",{className:"pager-undercontent"},l["default"].createElement("nav",null,l["default"].createElement("ul",{className:"pager"},this.getPreviousPage(),this.getNextPage()),this.getProgessBar()))}}]),t}(l["default"].Component);n["default"]=p},{"../../../utils/reset-scroll":153,react:"react","react-router":"react-router"}],125:[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=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},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});var l=e("react"),c=a(l),f=e("./list"),d=a(f),p=e("./list-loading"),m=a(p),h=e("../../../index"),g=a(h),v=e("../../../reducers/users"),b=e("../../../services/polls"),y=a(b),_=e("../../../services/store"),w=a(_),E=e("../../../services/page-title"),O=a(E),k=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.update=function(e){w["default"].dispatch((0,v.dehydrate)(e.results)),e.isLoaded=!0,n.setState(e)},g["default"].has("USERS")?n.initWithPreloadedData(g["default"].pop("USERS")):n.initWithoutPreloadedData(),n.startPolling(e.params.page||1),n}return s(t,e),u(t,[{key:"initWithPreloadedData",value:function(e){this.state=Object.assign(e,{isLoaded:!0}),w["default"].dispatch((0,v.dehydrate)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){y["default"].start({poll:"rank-users",url:g["default"].get("USERS_API"),data:{rank:this.props.route.rank.id,page:e},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){O["default"].set({title:this.props.route.rank.name,page:this.props.params.page||null,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){y["default"].stop("rank-users")}},{key:"componentWillReceiveProps",value:function(e){this.props.params.page!==e.params.page&&(O["default"].set({title:this.props.route.rank.name,page:e.params.page||null,parent:gettext("Users")}),this.setState({isLoaded:!1}),y["default"].stop("rank-users"),this.startPolling(e.params.page))}},{key:"getClassName",value:function(){return this.props.route.rank.css_class?"rank-users-list rank-users-"+this.props.route.rank.css_class:"rank-users-list"}},{key:"getRankDescription",value:function(){return this.props.route.rank.description?c["default"].createElement("div",{className:"rank-description"},c["default"].createElement("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.route.rank.description.html}})):null}},{key:"getComponent",value:function(){if(this.state.isLoaded){if(this.state.count>0){var e=g["default"].get("USERS_LIST_URL")+this.props.route.rank.slug+"/";return c["default"].createElement(d["default"],i({baseUrl:e,users:this.props.users},this.state))}return c["default"].createElement("p",{className:"lead"},gettext("There are no users with this rank at the moment."))}return c["default"].createElement(m["default"],null)}},{key:"render",value:function(){return c["default"].createElement("div",{className:this.getClassName()},c["default"].createElement("div",{className:"container"},this.getRankDescription(),this.getComponent()))}}]),t}(c["default"].Component);n["default"]=k},{"../../../index":128,"../../../reducers/users":134,"../../../services/page-title":142,"../../../services/polls":143,"../../../services/store":145,"./list":123,"./list-loading":122,react:"react"}],126:[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{tick:e.tick.tick,user:e.auth.user,users:e.users}}function u(){var e=[];return y["default"].get("USERS_LISTS").forEach(function(t){"rank"===t.component?(e.push({path:y["default"].get("USERS_LIST_URL")+t.slug+"/:page/",component:(0,d.connect)(i)(v["default"]),rank:t}),e.push({path:y["default"].get("USERS_LIST_URL")+t.slug+"/",component:(0,d.connect)(i)(v["default"]),rank:t})):"active-posters"===t.component&&e.push({path:y["default"].get("USERS_LIST_URL")+t.component+"/",component:(0,d.connect)(i)(h["default"]),extra:{name:t.name}})}),e}var l=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,n.paths=u;var c=e("react"),f=a(c),d=e("react-redux"),p=e("./navs"),m=e("./active-posters/root"),h=a(m),g=e("./rank/root"),v=a(g),b=e("../../index"),y=a(b),_=function(e){function t(e){r(this,t);var n=o(this,Object.getPrototypeOf(t).call(this,e));return n.toggleNav=function(){n.state.dropdown?n.setState({dropdown:!1}):n.setState({dropdown:!0})},n.hideNav=function(){n.setState({dropdown:!1})},n.state={dropdown:!1},n}return s(t,e),l(t,[{key:"getToggleNavClassName",value:function(){return this.state.dropdown?"btn btn-default btn-icon open":"btn btn-default btn-icon"}},{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}},{key:"render",value:function(){return f["default"].createElement("div",{className:"page page-users-lists"},f["default"].createElement("div",{className:"page-header tabbed"},f["default"].createElement("div",{className:"container"},f["default"].createElement("h1",{className:"pull-left"},gettext("Users")),f["default"].createElement("button",{className:"btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg",type:"button",onClick:this.toggleNav,"aria-haspopup":"true","aria-expanded":this.state.dropdown?"true":"false"},f["default"].createElement("i",{className:"material-icon"},"menu"))),f["default"].createElement("div",{className:"page-tabs hidden-xs hidden-sm"},f["default"].createElement("div",{className:"container"},f["default"].createElement(p.TabsNav,{lists:y["default"].get("USERS_LISTS"),baseUrl:y["default"].get("USERS_LIST_URL")})))),f["default"].createElement("div",{className:this.getCompactNavClassName()},f["default"].createElement(p.CompactNav,{lists:y["default"].get("USERS_LISTS"),baseUrl:y["default"].get("USERS_LIST_URL"),hideNav:this.hideNav})),this.props.children)}}]),t}(f["default"].Component);n["default"]=_},{"../../index":128,"./active-posters/root":120,"./navs":121,"./rank/root":125,react:"react","react-redux":"react-redux"}],127:[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(){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.toggle=function(){a.props.onChange({target:{value:!a.props.value}})},s=n,o(a,s)}return s(t,e),i(t,[{key:"getClassName",value:function(){return this.props.value?"btn btn-yes-no btn-yes-no-on":"btn btn-yes-no btn-yes-no-off"}},{key:"getIcon",value:function(){return this.props.value?this.props.iconOn||"check_box":this.props.iconOff||"check_box_outline_blank"}},{key:"getLabel",value:function(){return this.props.value?this.props.labelOn||gettext("yes"):this.props.labelOff||gettext("no")}},{key:"render",value:function(){return l["default"].createElement("button",{type:"button",onClick:this.toggle,className:this.getClassName(),id:this.props.id||null,"aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},l["default"].createElement("span",{className:"material-icon"},this.getIcon()),this.getLabel())}}]),t}(l["default"].Component);n["default"]=c},{react:"react"}],128:[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[e]}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}},{key:"pop",value:function(e){if(this.has(e)){var t=this._context[e];return this._context[e]=null,t}}}]),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":151}],129:[function(e,t,n){"use strict";function a(e){return{type:l,patch:e}}function r(e){return{type:c,user:e}}function o(){var e=arguments.length<=0||void 0===arguments[0]?!1:arguments[0];return{type:f,soft:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?u:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case l:var n=Object.assign({},e);return n.user=Object.assign({},e.user,t.patch),n;case c:return Object.assign({},e,{signedIn:t.user});case f:return Object.assign({},e,{isAuthenticated:!1,isAnonymous:!0,signedOut:!t.soft});case i.UPDATE_AVATAR:if(e.isAuthenticated&&e.user.id===t.userId){var a=Object.assign({},e);return a.user=Object.assign({},e.user,{avatar_hash:t.avatarHash}),a}return e;case i.UPDATE_USERNAME:if(e.isAuthenticated&&e.user.id===t.userId){var r=Object.assign({},e);return r.user=Object.assign({},e.user,{username:t.username,slug:t.slug}),r}return e;default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.SIGN_OUT=n.SIGN_IN=n.PATCH_USER=n.initialState=void 0,n.patchUser=a,n.signIn=r,n.signOut=o,n["default"]=s;var i=e("./users"),u=n.initialState={signedIn:!1,signedOut:!1},l=n.PATCH_USER="PATCH_USER",c=n.SIGN_IN="SIGN_IN",f=n.SIGN_OUT="SIGN_OUT"},{"./users":134}],130:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){return{type:c,profile:e}}function o(e){return{type:f,patch:e}}function s(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case c:return Object.assign({},t.profile,{joined_on:(0,u["default"])(t.profile.joined_on),status:(0,l.dehydrateStatus)(t.profile.status)});case f:return Object.assign({},e,t.patch);case l.UPDATE_AVATAR:return e.id===t.userId?Object.assign({},e,{avatar_hash:t.avatarHash}):e;case l.UPDATE_USERNAME:return e.id===t.userId?Object.assign({},e,{username:t.username,slug:t.slug}):e;default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PATCH_PROFILE=n.DEHYDRATE_PROFILE=void 0,n.dehydrate=r,n.patchProfile=o,n["default"]=s;var i=e("moment"),u=a(i),l=e("./users"),c=n.DEHYDRATE_PROFILE="DEHYDRATE_PROFILE",f=n.PATCH_PROFILE="PATCH_PROFILE"},{"./users":134,moment:"moment"}],131:[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"},{}],132:[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"},{}],133:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e,t,n){return{type:f,change:e,user:t,changedBy:n}}function o(e){return{type:d,items:e}}function s(e){return{type:p,items:e}}function i(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case f:var n=e.slice();return n.unshift({id:Math.floor(Date.now()/1e3),changed_by:t.changedBy,changed_by_username:t.changedBy.username,changed_on:(0,c["default"])(),new_username:t.change.username,old_username:t.user.username}),n;case d:return e.concat(t.items.map(function(e){return Object.assign({},e,{changed_on:(0,c["default"])(e.changed_on)})}));case p:return t.items.map(function(e){return Object.assign({},e,{changed_on:(0,c["default"])(e.changed_on)})});case u.UPDATE_AVATAR:return e.map(function(e){return e=Object.assign({},e),e.changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{avatar_hash:t.avatarHash})),e});case u.UPDATE_USERNAME:return e.map(function(e){return e=Object.assign({},e),e.changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{username:t.username,slug:t.slug})),Object.assign({},e)});default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.DEHYDRATE_HISTORY=n.APPEND_HISTORY=n.ADD_NAME_CHANGE=void 0,n.addNameChange=r,n.append=o,n.dehydrate=s,n["default"]=i;var u=e("./users"),l=e("moment"),c=a(l),f=n.ADD_NAME_CHANGE="ADD_NAME_CHANGE",d=n.APPEND_HISTORY="APPEND_HISTORY",p=n.DEHYDRATE_HISTORY="DEHYDRATE_HISTORY"},{"./users":134,moment:"moment"}],134:[function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{"default":e}}function r(e){return{type:d,items:e}}function o(e){return{type:p,items:e}}function s(e){return e?Object.assign({},e,{last_click:e.last_click?(0,f["default"])(e.last_click):null,banned_until:e.banned_until?(0,
+f["default"])(e.banned_until):null}):null}function i(e,t){return{type:m,userId:e.id,avatarHash:t}}function u(e,t,n){return{type:h,userId:e.id,username:t,slug:n}}function l(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=arguments.length<=1||void 0===arguments[1]?null:arguments[1];switch(t.type){case d:return e.concat(t.items.map(function(e){return Object.assign({},e,{joined_on:(0,f["default"])(e.joined_on),status:s(e.status)})}));case p:return t.items.map(function(e){return Object.assign({},e,{joined_on:(0,f["default"])(e.joined_on),status:s(e.status)})});case m:return e.map(function(e){return e=Object.assign({},e),e.id===t.userId&&(e.avatar_hash=t.avatarHash),e});default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.UPDATE_USERNAME=n.UPDATE_AVATAR=n.DEHYDRATE_USERS=n.APPEND_USERS=void 0,n.append=r,n.dehydrate=o,n.dehydrateStatus=s,n.updateAvatar=i,n.updateUsername=u,n["default"]=l;var c=e("moment"),f=a(c),d=n.APPEND_USERS="APPEND_USERS",p=n.DEHYDRATE_USERS="DEHYDRATE_USERS",m=n.UPDATE_AVATAR="UPDATE_AVATAR",h=n.UPDATE_USERNAME="UPDATE_USERNAME"},{moment:"moment"}],135:[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"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},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});var s=n.Ajax=function(){function e(){a(this,e),this._cookieName=null,this._csrfToken=null,this._locks={}}return o(e,[{key:"init",value:function(e){this._cookieName=e,this._csrfToken=this.getCsrfToken()}},{key:"getCsrfToken",value:function(){if(-1!==document.cookie.indexOf(this._cookieName)){var e=new RegExp(this._cookieName+"=([^;]*)"),t=document.cookie.match(e)[0];return t?t.split("=")[1]:null}return null}},{key:"request",value:function(e,t,n){var a=this;return new Promise(function(r,o){var s={url:t,method:e,headers:{"X-CSRFToken":a._csrfToken},data:n?JSON.stringify(n):null,contentType:"application/json; charset=utf-8",dataType:"json",success:function(e){r(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}},{key:"get",value:function(e,t,n){var a=this;if(t&&(e+="?"+$.param(t)),!n)return this.request("GET",e);var o=function(){var t=a;return a._locks[n]&&(a._locks[n].url=e),a._locks[n]&&a._locks[n].waiter?{v:{then:function(){}}}:a._locks[n]&&a._locks[n].wait?(a._locks[n].waiter=!0,{v:new Promise(function(a,r){var o=function s(e){t._locks[n].wait?window.setTimeout(function(){s(e)},300):t._locks[n].url!==e?s(t._locks[n].url):(t._locks[n].waiter=!1,t.request("GET",t._locks[n].url).then(function(r){t._locks[n].url===e?a(r):(t._locks[n].waiter=!0,s(t._locks[n].url))},function(a){t._locks[n].url===e?r(a):(t._locks[n].waiter=!0,s(t._locks[n].url))}))};window.setTimeout(function(){o(e)},300)})}):(a._locks[n]={url:e,wait:!0,waiter:!1},{v:new Promise(function(a,r){t.request("GET",e).then(function(r){t._locks[n].wait=!1,t._locks[n].url===e&&a(r)},function(a){t._locks[n].wait=!1,t._locks[n].url===e&&r(a)})})})}();return"object"===("undefined"==typeof o?"undefined":r(o))?o.v:void 0}},{key:"post",value:function(e,t){return this.request("POST",e,t)}},{key:"patch",value:function(e,t){return this.request("PATCH",e,t)}},{key:"put",value:function(e,t){return this.request("PUT",e,t)}},{key:"delete",value:function(e){return this.request("DELETE",e)}},{key:"upload",value:function(e,t,n){var a=this;return new Promise(function(r,o){var s={url:e,method:"POST",headers:{"X-CSRFToken":a._csrfToken},data:t,contentType:!1,processData:!1,xhr:function i(){var i=new window.XMLHttpRequest;return i.upload.addEventListener("progress",function(e){e.lengthComputable&&n(Math.round(e.loaded/e.total*100))},!1),i},success:function(e){r(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};$.ajax(s)})}}]),e}();n["default"]=new s},{}],136:[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":129}],137:[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"),f=a(c),d=n.BaseCaptcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,a){this._context=e,this._ajax=t,this._include=n,this._snackbar=a}}]),e}(),p=n.NoCaptcha=function(e){function t(){return s(this,t),r(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){return new Promise(function(e){e()})}},{key:"validator",value:function(){return null}},{key:"component",value:function(){return null}}]),t}(d),m=n.QACaptcha=function(e){function t(){return s(this,t),r(this,Object.getPrototypeOf(t).apply(this,arguments))}return o(t,e),i(t,[{key:"load",value:function(){var e=this;return new Promise(function(t,n){e._ajax.get(e._context.get("CAPTCHA_API_URL")).then(function(n){e.question=n.question,e.helpText=n.help_text,t()},function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),n()})})}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return l["default"].createElement(f["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}(d),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),g=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(f["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}(d),v=n.Captcha=function(){function e(){s(this,e)}return i(e,[{key:"init",value:function(e,t,n,a){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new p;break;case"qa":this._captcha=new m;break;case"re":this._captcha=new g}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 v},{"../components/form-group":68,react:"react"}],138:[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},{}],139:[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},{}],140:[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":150}],141:[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":150,"react-dom":"react-dom"}],142:[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.PageTitle=function(){function e(){a(this,e)}return r(e,[{key:"init",value:function(e){this._forumName=e}},{key:"set",value:function(e){"string"==typeof e&&(e={title:e});var t=e.title;if(e.page){var n=interpolate(gettext("page: %(page)s"),{page:e.page},!0);t+=" ("+n+")"}e.parent&&(t+=" | "+e.parent),document.title=t+" | "+this._forumName}}]),e}();n["default"]=new o},{}],143:[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.Polls=function(){function e(){a(this,e)}return r(e,[{key:"init",value:function(e,t){this._ajax=e,this._snackbar=t,this._polls={}}},{key:"start",value:function(e){var t=this,n=function a(){t._polls[e.poll]=e,t._ajax.get(e.url,e.data||null).then(function(n){t._polls[e.poll]._stopped||(e.update(n),t._polls[e.poll].timeout=window.setTimeout(a,e.frequency))},function(n){t._polls[e.poll]._stopped||(e.error?e.error(n):t._snackbar.apiError(n))})};n()}},{key:"stop",value:function(e){this._polls[e]&&(window.clearTimeout(this._polls[e].timeout),this._polls[e]._stopped=!0)}}]),e}();n["default"]=new o},{}],144:[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=e.detail;t||(t=404===e.status?gettext("Action link is invalid."):gettext("Unknown error has occured.")),403===e.status&&"Permission denied"===t&&(t=gettext("You don't have permission to perform this action.")),this.error(t)}}]),e}();n["default"]=new u},{"../reducers/snackbar":131}],145:[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"}],146:[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},{}],147:[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:g["default"].getStore()},i["default"].createElement(b,{message:e.message,expires:e.expires_on?(0,o["default"])(e.expires_on):null})),document.getElementById("page-mount")),"undefined"==typeof t||t){var n=m["default"].get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+n,window.history.pushState({},"",m["default"].get("BANNED_URL"))}};var r=e("moment"),o=a(r),s=e("react"),i=a(s),u=e("react-dom"),l=a(u),c=e("react-redux"),f=e("../components/banned-page"),d=a(f),p=e("../index"),m=a(p),h=e("../services/store"),g=a(h),v=function(e){return e.tick},b=(0,c.connect)(v)(d["default"])},{"../components/banned-page":55,"../index":128,"../services/store":145,moment:"moment",react:"react","react-dom":"react-dom","react-redux":"react-redux"}],148:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e,t){var n=arguments.length<=2||void 0===arguments[2]?!1:arguments[2],a=[],r=[];if(e.forEach(function(e){r.push(e),r.length===t&&(a.push(r),r=[])}),n!==!1&&r.length>0&&r.length<t)for(var o=r.length;t>o;o++)r.push(n);return r.length&&a.push(r),a}},{}],149:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){return e>1e9?Math.round(100*e/1e9)/100+" GB":e>1e6?Math.round(100*e/1e6)/100+" MB":e>1e3?Math.round(100*e/1e3)/100+" KB":Math.round(100*e)/100+" B"}},{}],150:[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),r=e.props?e:o["default"].createElement(e,null);a&&(n?i["default"].render(o["default"].createElement(u.Provider,{store:c["default"].getStore()},r),a):i["default"].render(r,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":145,react:"react","react-dom":"react-dom","react-redux":"react-redux"}],151:[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},{}],152:[function(e,t,n){"use strict";function a(e,t){return Math.floor(Math.random()*(t-e+1))+e}function r(e,t){for(var n=new Array(a(e,t)),r=0;r<n.length;r++)n[r]=r;return n}Object.defineProperty(n,"__esModule",{value:!0}),n["int"]=a,n.range=r},{}],153:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(){window.scrollTo(0,0)}},{}],154:[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){var t={component:e.component,childRoutes:[{path:e.root,onEnter:function(t,n){n(null,e.paths[0].path)}}].concat(e.paths.map(function(e){return e}))};i["default"].render(o["default"].createElement(u.Provider,{store:p["default"].getStore()},o["default"].createElement(l.Router,{routes:t,history:h})),m)};var r=e("react"),o=a(r),s=e("react-dom"),i=a(s),u=e("react-redux"),l=e("react-router"),c=e("history/lib/createBrowserHistory"),f=a(c),d=e("../services/store"),p=a(d),m=document.getElementById("page-mount"),h=new f["default"]},{"../services/store":145,"history/lib/createBrowserHistory":43,react:"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router"}],155:[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 f.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 d.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 f=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,d=new RegExp("^[0-9a-z]+$","i")},{}]},{},[2,3,4,5,17,18,19,20,21,22,23,31,32,33,34,6,7,8,9,10,11,12,13,14,15,16,24,25,26,27,28,29,30]);
+//# 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","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","timeout","setTimeout","len","run","clearTimeout","Item","fun","array","this","noop","process","nextTick","args","Array","arguments","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","cwd","chdir","dir","umask",2,"global","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","value","Misago","undefined","_orderedList","_orderedList2","_initializers","_context","initializer","item","after","before","context","_this","initOrder","orderedValues","forEach","fallback","has","misago","self","window","../../../misago/frontend/src/utils/ordered-list",3,"_ajax2","init","_index2","get","_index","_ajax","addInitializer","../../../../misago/frontend/src/index","../../../../misago/frontend/src/services/ajax",4,"_auth2","_store2","_localStorage2","_modal2","_auth","_modal","_store","_localStorage","../../../../misago/frontend/src/services/auth","../../../../misago/frontend/src/services/local-storage","../../../../misago/frontend/src/services/modal","../../../../misago/frontend/src/services/store",5,"_captcha2","_include2","_snackbar2","_captcha","_include","_snackbar","../../../../misago/frontend/src/services/captcha","../../../../misago/frontend/src/services/include","../../../../misago/frontend/src/services/snackbar",6,"_mountComponent2","_reactRedux","connect","_authMessage","select","_authMessage2","_mountComponent","../../../../../misago/frontend/src/components/auth-message","../../../../../misago/frontend/src/index","../../../../../misago/frontend/src/utils/mount-component","react-redux",7,"_bannedPage2","_bannedPage","../../../../../misago/frontend/src/utils/banned-page",8,"_routedComponent2","root","component","_root2","paths","_root","_routedComponent","../../../../../misago/frontend/src/components/options/root","../../../../../misago/frontend/src/utils/routed-component",9,"absolute_url","../../../../../misago/frontend/src/components/profile/root",10,"document","getElementById","_requestActivationLink2","_requestActivationLink","../../../../../misago/frontend/src/components/request-activation-link",11,"_requestPasswordReset2","_requestPasswordReset","../../../../../misago/frontend/src/components/request-password-reset",12,"_resetPasswordForm2","_resetPasswordForm","../../../../../misago/frontend/src/components/reset-password-form",13,"Snackbar","../../../../../misago/frontend/src/components/snackbar",14,"UserMenu","CompactUserMenu","../../../../../misago/frontend/src/components/user-menu/root",15,"../../../../../misago/frontend/src/components/users/root",16,17,18,"element","_mobileNavbarDropdown2","_mobileNavbarDropdown","../../../../misago/frontend/src/services/mobile-navbar-dropdown",19,20,"_moment2","locale","$","attr","_moment","moment",21,"_pageTitle2","forum_name","_pageTitle","../../../../misago/frontend/src/services/page-title",22,"_polls2","_polls","../../../../misago/frontend/src/services/polls",23,"addReducer","assign","isAuthenticated","isAnonymous","user","initialState","../../../../../misago/frontend/src/reducers/auth","../../../../../misago/frontend/src/services/store",24,"dispatch","_profile","dehydrate","../../../../../misago/frontend/src/reducers/profile",25,"_profile2",26,"../../../../../misago/frontend/src/reducers/snackbar",27,"_tick2","_tick","../../../../../misago/frontend/src/reducers/tick",28,"_usernameHistory2","_usernameHistory","../../../../../misago/frontend/src/reducers/username-history",29,"_users2","_users","../../../../../misago/frontend/src/reducers/users",30,31,32,"setInterval","doTick","TICK_PERIOD","../../../../misago/frontend/src/reducers/tick",33,"_zxcvbn2","_zxcvbn","../../../../misago/frontend/src/services/zxcvbn",34,"isUndefinedOrNull","isBuffer","x","copy","slice","objEquiv","b","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","sort","actual","expected","Date","getTime","strict","./lib/is_arguments.js","./lib/keys.js",35,"supported","object","toString","unsupported","hasOwnProperty","propertyIsEnumerable","supportsArgumentsClass",36,"shim","keys",37,"PUSH","REPLACE","POP",38,"loopAsync","turns","work","callback","done","isDone","next","currentTurn",39,"createKey","KeyPrefix","saveState","state","sessionStorage","setItem","JSON","stringify","error","SecurityError","NODE_ENV","_warning2","QuotaExceededError","readState","json","getItem","parse","_warning","_process","warning",40,"addEventListener","node","event","listener","attachEvent","removeEventListener","detachEvent","getHashPath","location","href","split","replaceHashPath","path","replace","pathname","search","getWindowPath","hash","go","history","getUserConfirmation","message","confirm","supportsHistory","ua","navigator","userAgent","indexOf","supportsGoWithoutReloadUsingHash",41,"canUseDOM","createElement",42,"createBrowserHistory","getCurrentLocation","historyState","_DOMUtils","_historyState","_DOMStateStorage","isSupported","replaceState","_extends","_parsePath2","createLocation","startPopStateListener","_ref","popStateListener","transitionTo","finishTransition","basename","action","_Actions","useRefresh","pushState","listenBefore","listenerCount","stopPopStateListener","unlisten","listen","registerTransitionHook","hook","unregisterTransitionHook","options","_ExecutionEnvironment","_invariant2","forceRefresh","_createDOMHistory2","source","_invariant","_createDOMHistory","_parsePath","./Actions","./DOMStateStorage","./DOMUtils","./ExecutionEnvironment","./createDOMHistory","./parsePath","invariant",43,"createDOMHistory","_createHistory2","_createHistory","./createHistory",44,"createRandomKey","Math","random","substr","locationsAreEqual","_deepEqual2","createHistory","transitionHooks","filter","getCurrent","pendingLocation","allKeys","updateLocation","newLocation","current","changeListeners","_location","confirmTransitionTo","_AsyncUtils","index","_runTransitionHook2","result","ok","nextLocation","prevPath","createPath","nextPath","prevIndex","nextIndex","goBack","goForward","keyLength","createHref","_createLocation3","setState","updateLocationState","DefaultKeyLength","_deprecate2","_deepEqual","_createLocation2","_runTransitionHook","_deprecate","./AsyncUtils","./createLocation","./deprecate","./runTransitionHook","deep-equal",45,"_fourthArg",46,"deprecate","fn",47,"extractPath","string","match","substring",48,"parsePath","_extractPath2","hashIndex","searchIndex","_extractPath","./extractPath",49,"runTransitionHook",50,"condition","format","c","d","argIndex","framesToPop",51,52,"_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","auth","signedIn","signedOut","_react","_react2","_class","_React$Component","getPrototypeOf","reload","interpolate","gettext","username","className","getClassName","getMessage","type","onClick","refresh","Component","react",53,"BASE_URL","size","url","id","avatar_hash","src","getSrc",54,"html","dangerouslySetInnerHTML","__html","plain","expires","isAfter","expires_on","fromNow","getReasonMessage","getExpirationMessage",55,"_loader","_loader2","Button","disabled","loading","children","defaultProps","./loader",56,"_avatar","_button","_button2","cropAvatar","isLoading","avatarType","upload","cropit","post","api_url","avatar","crop","offset","zoom","then","data","onComplete","success","detail","rejection","status","showError","crop_tmp","crop_org","secret","getAvatarSecret","getAvatarHash","join","_this2","width","getAvatarSize","height","imageState","getImagePath","onImageLoaded","zoomLevel","imageSize","displayedWidth","offsetX","y","displayedHeight","offsetY","showIndex","../../services/ajax","../../services/snackbar","../avatar","../button",57,"Gallery","GalleryItem","_batch","_batch2","_Object$getPrototypeO","_temp","_ret","_len","_key","image","selection","_React$Component2","_this3","images","map","row","_React$Component3","_this4","save","response","_this5","galleries","../../index","../../utils/batch",58,"_avatar2","setGravatar","callApi","setGenerated","gravatar","showCrop","showUpload","showGallery","userPeview","getAvatarPreview","getGravatarButton","getCropButton","getUploadButton","getGalleryButton","../loader",59,"ChangeAvatarError","_crop","_crop2","_upload","_upload2","_gallery","_gallery2","_modalLoader","_modalLoader2","reason","getErrorReason","completeFlow","avatarHash","updateAvatar","role","data-dismiss","aria-label","aria-hidden","getBody","../../reducers/users","../../services/store","../modal-loader","./crop","./gallery","./index","./upload",60,"_fileSize","_fileSize2","pickFile","click","uploadFile","files","validationError","validateFile","preview","URL","createObjectURL","progress","FormData","append","uploaded","info","limit","filesize","invalidTypeMsg","allowed_mime_types","extensionFound","loweredFilename","toLowerCase","allowed_extensions","extension","extensions","getUploadRequirements","aria-valuenow","aria-valuemin","aria-valuemax","style","getUploadProgressLabel","onChange","getUploadProgress","renderCrop","renderUpload","../../utils/file-size",61,"validation","isValidated","helpText","labelClass","htmlFor","label","controlClass","getFeedbackIcon","getFeedbackDescription","getFeedback","getHelpText","extra",62,"_defineProperty","_validators","validateRequired","required","bindInput","newState","formErrors","errors","validateField","handleSubmit","preventDefault","clean","promise","send","handleSuccess","handleError","validators","optional","validatedFields","fieldErrors","validate","field","requiredError","apiError","../services/snackbar","../utils/validators",63,"isActive","activeClassName",64,65,66,"_panelMessage","_panelMessage2","_PanelMessage","icon","./panel-message",67,"_panelLoader","_panelLoader2","../../panel-loader",68,"next_on","next_change","../../panel-message",69,"_interopRequireWildcard","newObj","_form","_form2","_formGroup","_formGroup2","_Form","usernameContent","usernameMinLength","username_length_min","length_min","usernameMaxLength","username_length_max","length_max","phrases","changes_left","ngettext","acl","name_changes_expire","trim","complete","slug","onSubmit","for","../../../services/ajax","../../../services/snackbar","../../../utils/validators","../../button","../../form","../../form-group",70,"_formLoading","_formLoading2","_formLocked","_formLocked2","_usernameHistory3","addNameChange","updateUsername","isLoaded","set","parent","Promise","all","results","getChangeForm","changes","../../../index","../../../reducers/username-history","../../../reducers/users","../../../services/page-title","../../../services/store","../../username-history","./form","./form-loading","./form-locked",71,"_select","_select2","_yesNoSwitch","_yesNoSwitch2","is_hiding_presence","limits_private_thread_invites_to","subscribe_to_started_threads","subscribe_to_replied_threads","privateThreadInvitesChoices","subscribeToChoices","patchUser","iconOn","iconOff","labelOn","labelOff","choices","../../reducers/auth","../../services/page-title","../form","../form-group","../select","../yes-no-switch",72,"CompactNav","SideNav","_reactRouter","_li","_li2","option","Link","to","baseUrl","hideNav","../li","react-router",73,"store","tick","username-history","_forumOptions2","_root4","_navs","_forumOptions","_root3","toggleNav","dropdown","aria-haspopup","aria-expanded","getCompactNavClassName","./change-username/root","./forum-options","./navs","./sign-in-credentials/root",74,"new_email","password","email","lengths","change_email","display",75,"new_password","repeat_password","passwordMinLength","change_password",76,"_changeEmail","_changeEmail2","_changePassword","_changePassword2","./change-email","./change-password",77,78,79,"LABELS","STYLES","_score","_password","_inputs","inputs","cacheStale","scorePassword","score","getScore","../services/zxcvbn",80,"_followButton","_followButton2","_nav","_nav2","_userStatus","_userStatus2","profile","StatusIcon","StatusLabel","rank","is_tab","joined_on","age","can_follow","can_moderate","data-toggle","getFollowButton","getModerationButton","getUserStatus","getUserRank","getUserTitle","getJoinedOn","getEmail","../user-status","./follow-button","./moderation/nav",81,"update","ban","initWithPreloadedData","pop","initWithoutPreloadedData","startPolling","api","start","poll","frequency","stop","user_message","staff_message","_title","getUserMessage","getStaffMessage","getPanelBody","../../services/polls","../panel-loader","../panel-message",82,"is_followed","patchProfile","followers","follow","getIcon","getLabel","../../reducers/profile",83,"_search","_search2","loadMore","isBusy","loadUsers","page","ev","count","more","pages","setSpecialProps","PRELOADED_DATA_KEY","TITLE","API_FILTER","_ajax$get","users","getEmptyMessage","showRank","cols","getMoreButton","placeholder","getListBody","../search","../users-list/root",84,"_followers","_followers2","_Followers","./followers",85,"_modalMessage","_modalMessage2","is_avatar_locked","avatar_lock_user_message","avatar_lock_staff_message","moderate_avatar","isValid","apiResponse","rows","getFormBody","getModalBody","../../modal-loader","../../modal-message","../../yes-no-switch",86,"moderate_username",87,"countdown","isDeleted","with_content","getButtonLabel","getDeletedBody","getForm","../../../services/polls",88,"_avatarControls","_avatarControls2","_changeUsername","_changeUsername2","_deleteAccount","_deleteAccount2","showAvatarDialog","show","showRenameDialog","showDeleteDialog","can_moderate_avatar","can_rename","can_delete","getAvatarButton","getRenameButton","getDeleteButton","../../../services/modal","./avatar-controls","./change-username","./delete-account",89,"meta","getMeta","_SideNav","toggleModeration","showSpecialOptions","getSpecialOptions",90,"COMPONENTS","_banDetails","_banDetails2","_follows","_follows2","_Header","_Header2","baseClass","getNavDropdown","Placeholder","route","posts","threads","follows","ban-details","./Header","./ban-details","./follows","./username-history",91,"loadChanges","emptyMessage","../../reducers/username-history","../username-history",92,"_register","_register2","showRegisterModal","account_activation","load","../services/captcha","../services/modal","./register.js",93,"RegisterComplete","RegisterForm","_passwordStrength","_passwordStrength2","captcha","validator","hide","aria-describedby","form","getLegalFootNote","activation","getLead","getSubscript","completeRegistration","signIn","../index","../services/ajax","../services/auth","../utils/banned-page","./button","./form-group","./password-strength",94,"LinkSent","RequestLinkForm","reset",95,"AccountInactivePage","RequestResetForm","_reactDom","_reactDom2","showInactivePage","getActivateButton","render","react-dom",96,"PasswordChangedPage","ResetPasswordForm","_signIn","_signIn2","showSignIn","softSignOut","remove","./sign-in.js",97,98,"change","choice","getChoice",99,"showActivation","find","val","getCsrfToken","submit","getActivationButton",100,"snackbar","TYPES_CLASSES","snackbarClass","isVisible","getSnackbarClass",101,"CompactGuestNav","GuestNav","GuestMenu","_registerButton","_registerButton2","showSignInModal","_GuestMenu","showGuestMenu","../../services/mobile-navbar-dropdown","../../services/modal","../register-button","../sign-in.js",102,"_guestNav","_userNav","UserNav","CompactUserNav","./guest-nav","./user-nav",103,"selectUserMenu","decision","changeAvatar","logout","showConnected","showUserMenu","../change-avatar/root",104,"is_banned","is_hidden","is_online_hidden","is_offline_hidden","is_online","is_offline","getClass","banned_until","ban_expires","last_click","getHelp",105,"_random","changed_by","changed_by_username","renderUserAvatar","renderUsername","old_username","new_username","changed_on","range","renderHistory","renderEmptyHistory","renderHistoryPreview","../utils/random","./avatar",106,"_userCard","_userCard2","_userPreview","_userPreview2","Pager","getColClassName","showStatus","./user-card","./user-preview",107,"css_class","getRankName","getUserJoinedOn",108,"../../utils/random",109,"days","trackedPeriod",110,"rankUrl","counter","../../avatar","../../user-status",111,"../../../utils/random",112,"_listItem","_listItem2","posters","getLeadMessage","./list-item",113,"_listEmpty","_listEmpty2","_listLoading","_listLoading2","_list","_list2","tracked_period","list","./list","./list-empty","./list-loading",114,"TabsNav","listUrl","navLinks","lists",115,"../../users-list/root",116,"_pager","_pager2","getPager","./pager",117,"_resetScroll","_resetScroll2","previous","first","page_range","getPreviousPage","getNextPage","getProgessBar","../../../utils/reset-scroll",118,"params","nextProps","description","getRankDescription","getComponent",119,"./active-posters/root","./rank/root",120,"toggle",121,"./utils/ordered-list",122,"patch","PATCH_USER","SIGN_IN","signOut","soft","SIGN_OUT","UPDATE_AVATAR","userId","_newState","UPDATE_USERNAME","_newState2","./users",123,"DEHYDRATE_PROFILE","PATCH_PROFILE","dehydrateStatus",124,"showSnackbar","SHOW_SNACKBAR","messageType","hideSnackbar","HIDE_SNACKBAR",125,"TICK",126,"changedBy","ADD_NAME_CHANGE","items","APPEND_HISTORY","DEHYDRATE_HISTORY","unshift","floor","now",127,"APPEND_USERS","DEHYDRATE_USERS",128,"_typeof","Symbol","iterator","Ajax","_cookieName","_csrfToken","_locks","cookieName","cookie","cookieRegex","RegExp","method","resolve","reject","xhr","headers","X-CSRFToken","contentType","dataType","jqXHR","responseJSON","statusText","ajax","lock","param","request","waiter","v","wait","processData","XMLHttpRequest","evt","lengthComputable","round","loaded","total",129,"Auth","local","modal","_local","syncSession","watchState","getState","watch","../reducers/auth",130,"Captcha","ReCaptcha","ReCaptchaComponent","QACaptcha","NoCaptcha","BaseCaptcha","include","_BaseCaptcha","_BaseCaptcha2","question","help_text","kwargs","grecaptcha","sitekey","siteKey","_BaseCaptcha3","recaptcha_site_key","captcha_type","../components/form-group",131,"Include","staticUrl","_staticUrl","_included","script","remote","cache",132,"storage","localStorage","LocalStorage","prefix","_prefix","_watchers","newValueJson","newValue","watcher","oldValue","itemString",133,"MobileNavbarDropdown","_element","_component","addClass","removeClass","../utils/mount-component",134,"Modal","unmountComponentAtNode",135,"PageTitle","forumName","_forumName","finalTitle","pageLabel",136,"Polls","poolServer","pollId",137,"HIDE_ANIMATION_LENGTH","MESSAGE_SHOW_LENGTH","_timeout","alert","../reducers/snackbar",138,"StoreWrapper","_redux","_reducers","_initialState","reducer","createStore","combineReducers","redux",139,"Zxcvbn","zxcvbn","_loadingPromise","_loadedPromise",140,"changeState","Provider","getStore","RedrawedBannedPage","../components/banned-page","../services/store",141,"rowWidth","padding",142,"bytes",143,"rootElementId","connected","rootElement","finalComponent",144,"OrderedList","isOrdered","_items","order","values","values_only","_order","unordered","insertItem","insertAt","ordering","ordered","splice","iterations",145,"int","min","max",146,"scrollTo",147,"routes","childRoutes","onEnter","nextState","Router","_createBrowserHistory","_createBrowserHistory2","history/lib/createBrowserHistory",148,"EMAIL","test","minLength","limitValue","returnMessage","limit_value","show_value","maxLength","settings","USERNAME","password_length_min"],"mappings":"CAAA,QAAUA,GAAEC,EAAEC,EAAEC,GAAG,QAASC,GAAEC,EAAEC,GAAG,IAAIJ,EAAEG,GAAG,CAAC,IAAIJ,EAAEI,GAAG,CAAC,GAAIE,GAAkB,kBAATC,UAAqBA,OAAQ,KAAIF,GAAGC,EAAE,MAAOA,GAAEF,GAAE,EAAI,IAAGI,EAAE,MAAOA,GAAEJ,GAAE,EAAI,IAAIK,GAAE,GAAIC,OAAM,uBAAuBN,EAAE,IAAK,MAAMK,GAAEE,KAAK,mBAAmBF,EAAE,GAAIG,GAAEX,EAAEG,IAAIS,WAAYb,GAAEI,GAAG,GAAGU,KAAKF,EAAEC,QAAQ,SAASd,GAAG,GAAIE,GAAED,EAAEI,GAAG,GAAGL,EAAG,OAAOI,GAAEF,EAAEA,EAAEF,IAAIa,EAAEA,EAAEC,QAAQd,EAAEC,EAAEC,EAAEC,GAAG,MAAOD,GAAEG,GAAGS,QAAkD,IAAI,GAA1CL,GAAkB,kBAATD,UAAqBA,QAAgBH,EAAE,EAAEA,EAAEF,EAAEa,OAAOX,IAAID,EAAED,EAAEE,GAAI,OAAOD,KAAKa,GAAG,SAAST,EAAQU,EAAOJ,GASvd,QAASK,KACLC,GAAW,EACPC,EAAaL,OACbM,EAAQD,EAAaE,OAAOD,GAE5BE,EAAa,GAEbF,EAAMN,QACNS,IAIR,QAASA,KACL,IAAIL,EAAJ,CAGA,GAAIM,GAAUC,WAAWR,EACzBC,IAAW,CAGX,KADA,GAAIQ,GAAMN,EAAMN,OACVY,GAAK,CAGP,IAFAP,EAAeC,EACfA,OACSE,EAAaI,GACdP,GACAA,EAAaG,GAAYK,KAGjCL,GAAa,GACbI,EAAMN,EAAMN,OAEhBK,EAAe,KACfD,GAAW,EACXU,aAAaJ,IAiBjB,QAASK,GAAKC,EAAKC,GACfC,KAAKF,IAAMA,EACXE,KAAKD,MAAQA,EAYjB,QAASE,MAtET,GAGId,GAHAe,EAAUlB,EAAOJ,WACjBQ,KACAF,GAAW,EAEXI,EAAa,EAsCjBY,GAAQC,SAAW,SAAUL,GACzB,GAAIM,GAAO,GAAIC,OAAMC,UAAUxB,OAAS,EACxC,IAAIwB,UAAUxB,OAAS,EACnB,IAAK,GAAIP,GAAI,EAAGA,EAAI+B,UAAUxB,OAAQP,IAClC6B,EAAK7B,EAAI,GAAK+B,UAAU/B,EAGhCa,GAAMmB,KAAK,GAAIV,GAAKC,EAAKM,IACJ,IAAjBhB,EAAMN,QAAiBI,GACvBO,WAAWF,EAAY,IAS/BM,EAAKW,UAAUb,IAAM,WACjBK,KAAKF,IAAIW,MAAM,KAAMT,KAAKD,QAE9BG,EAAQQ,MAAQ,UAChBR,EAAQS,SAAU,EAClBT,EAAQU,OACRV,EAAQW,QACRX,EAAQY,QAAU,GAClBZ,EAAQa,YAIRb,EAAQc,GAAKf,EACbC,EAAQe,YAAchB,EACtBC,EAAQgB,KAAOjB,EACfC,EAAQiB,IAAMlB,EACdC,EAAQkB,eAAiBnB,EACzBC,EAAQmB,mBAAqBpB,EAC7BC,EAAQoB,KAAOrB,EAEfC,EAAQqB,QAAU,SAAUC,GACxB,KAAM,IAAI/C,OAAM,qCAGpByB,EAAQuB,IAAM,WAAc,MAAO,KACnCvB,EAAQwB,MAAQ,SAAUC,GACtB,KAAM,IAAIlD,OAAM,mCAEpByB,EAAQ0B,MAAQ,WAAa,MAAO,SAE9BC,GAAG,SAASvD,EAAQU,EAAOJ,IACjC,SAAWkD,GACX,YAaA,SAASC,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAbhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQyE,OAASC,MAEjB,IAAIC,GAAejF,EAAQ,mDAEvBkF,EAAgBzB,EAAuBwB,GAMvCF,EAASzE,EAAQyE,OAAS,WAC5B,QAASA,KACPlB,EAAgBnC,KAAMqD,GAEtBrD,KAAKyD,iBACLzD,KAAK0D,YAyDP,MAtDAnB,GAAac,IACXJ,IAAK,iBACLG,MAAO,SAAwBO,GAC7B3D,KAAKyD,cAAclD,MACjB0C,IAAKU,EAAYnC,KAEjBoC,KAAMD,EAAYA,YAElBE,MAAOF,EAAYE,MACnBC,OAAQH,EAAYG,YAIxBb,IAAK,OACLG,MAAO,SAAcW,GACnB,GAAIC,GAAQhE,IAEZA,MAAK0D,SAAWK,CAEhB,IAAIE,GAAY,GAAIT,GAAAA,WAAsBxD,KAAKyD,eAAeS,eAC9DD,GAAUE,QAAQ,SAAUR,GAC1BA,EAAYK,QAOhBf,IAAK,MACLG,MAAO,SAAaH,GAClB,QAASjD,KAAK0D,SAAST,MAGzBA,IAAK,MACLG,MAAO,SAAaH,EAAKmB,GACvB,MAAIpE,MAAKqE,IAAIpB,GACJjD,KAAK0D,SAAST,GAEdmB,GAAYd,UAIvBL,IAAK,MACLG,MAAO,SAAaH,GAClB,GAAIjD,KAAKqE,IAAIpB,GAAM,CACjB,GAAIG,GAAQpD,KAAK0D,SAAST,EAE1B,OADAjD,MAAK0D,SAAST,GAAO,KACdG,OAONC,KAKLiB,EAAS,GAAIjB,EAGjBvB,GAAOwC,OAASA,EAGhB1F,EAAAA,WAAkB0F,IAEfzF,KAAKmB,KAAuB,mBAAX8B,QAAyBA,OAAyB,mBAATyC,MAAuBA,KAAyB,mBAAXC,QAAyBA,aACxHC,kDAAkD,MAAMC,GAAG,SAASpG,EAAQU,EAAOJ,GACtF,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACPgB,EAAAA,WAAeC,KAAKC,EAAAA,WAAgBC,IAAI,qBAhB1C/B,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCC,EAAQ1G,EAAQ,iDAEhBqG,EAAS5C,EAAuBiD,EAQpCH,GAAAA,WAAgBI,gBACdzD,KAAM,OACNmC,YAAaA,MAGZuB,wCAAwC,IAAIC,gDAAgD,MAAMC,GAAG,SAAS9G,EAAQU,EAAOJ,GAChI,YA2BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP0B,EAAAA,WAAeT,KAAKU,EAAAA,WAAiBC,EAAAA,WAAwBC,EAAAA,YA5B/DzC,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCU,EAAQnH,EAAQ,iDAEhB+G,EAAStD,EAAuB0D,GAEhCC,EAASpH,EAAQ,kDAEjBkH,EAAUzD,EAAuB2D,GAEjCC,EAASrH,EAAQ,kDAEjBgH,EAAUvD,EAAuB4D,GAEjCC,EAAgBtH,EAAQ,0DAExBiH,EAAiBxD,EAAuB6D,EAQ5Cf,GAAAA,WAAgBI,gBACdzD,KAAM,OACNmC,YAAaA,EACbE,MAAO,YAGNqB,wCAAwC,IAAIW,gDAAgD,IAAIC,yDAAyD,IAAIC,iDAAiD,IAAIC,iDAAiD,MAAMC,GAAG,SAAS3H,EAAQU,EAAOJ,GACvS,YA2BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,GAAYI,GACnBmC,EAAAA,WAAkBtB,KAAKb,EAASY,EAAAA,WAAgBwB,EAAAA,WAAmBC,EAAAA,YA5BrErD,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCC,EAAQ1G,EAAQ,iDAEhBqG,EAAS5C,EAAuBiD,GAEhCqB,EAAW/H,EAAQ,oDAEnB4H,EAAYnE,EAAuBsE,GAEnCC,EAAWhI,EAAQ,oDAEnB6H,EAAYpE,EAAuBuE,GAEnCC,EAAYjI,EAAQ,qDAEpB8H,EAAarE,EAAuBwE,EAQxC1B,GAAAA,WAAgBI,gBACdzD,KAAM,UACNmC,YAAaA,MAGZuB,wCAAwC,IAAIC,gDAAgD,IAAIqB,mDAAmD,IAAIC,mDAAmD,IAAIC,oDAAoD,MAAMC,GAAG,SAASrI,EAAQU,EAAOJ,GACtS,YAqBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,MACN,EAAGiD,EAAAA,aAA2B,EAAGC,EAAYC,SAASC,EAAaC,QAAQC,EAAAA,YAAwB,sBAtBtGlE,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIkD,GAAcvI,EAAQ,eAEtByG,EAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCgC,EAAezI,EAAQ,8DAEvB2I,EAAgBlF,EAAuBgF,GAEvCG,EAAkB5I,EAAQ,4DAE1BsI,EAAmB7E,EAAuBmF,EAQ9CrC,GAAAA,WAAgBI,gBACdzD,KAAM,yBACNmC,YAAaA,EACbE,MAAO,YAGNsD,6DAA6D,GAAGC,2CAA2C,IAAIC,2DAA2D,IAAIC,cAAc,gBAAgBC,GAAG,SAASjJ,EAAQU,EAAOJ,GAC1O,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,GAAYI,GACfA,EAAQM,IAAI,iBACb,EAAGmD,EAAAA,YAAsBzD,EAAQe,IAAI,gBAAgB,GAjB1D/B,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjC0C,EAAcnJ,EAAQ,wDAEtBkJ,EAAezF,EAAuB0F,EAU1C5C,GAAAA,WAAgBI,gBACdzD,KAAM,uBACNmC,YAAaA,EACbE,MAAO,YAGNuD,2CAA2C,IAAIM,uDAAuD,MAAMC,GAAG,SAASrJ,EAAQU,EAAOJ,GAC1I,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,GAAYI,GACfA,EAAQM,IAAI,kBACb,EAAGuD,EAAAA,aACFC,KAAMhD,EAAAA,WAAgBC,IAAI,cAC1BgD,UAAWC,EAAAA,WACXC,OAAQ,EAAGC,EAAMD,WAxBvBjF,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIsE,GAAQ3J,EAAQ,8DAEhByJ,EAAShG,EAAuBkG,GAEhClD,EAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCmD,EAAmB5J,EAAQ,6DAE3BsJ,EAAoB7F,EAAuBmG,EAc/CrD,GAAAA,WAAgBI,gBACdzD,KAAM,oBACNmC,YAAaA,EACbE,MAAO,YAGNsE,6DAA6D,GAAGf,2CAA2C,IAAIgB,4DAA4D,MAAMC,GAAG,SAAS/J,EAAQU,EAAOJ,GAC/M,YAqBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,GAAYI,GACfA,EAAQM,IAAI,YAAcN,EAAQM,IAAI,mBACvC,EAAGuD,EAAAA,aACFC,KAAMhD,EAAAA,WAAgBC,IAAI,WAAWwD,aACrCR,WAAY,EAAGjB,EAAYC,SAASmB,EAAMjB,QAAQe,EAAAA,YAClDC,OAAQ,EAAGC,EAAMD,WA1BvBjF,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIkD,GAAcvI,EAAQ,eAEtB2J,EAAQ3J,EAAQ,8DAEhByJ,EAAShG,EAAuBkG,GAEhClD,EAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCmD,EAAmB5J,EAAQ,6DAE3BsJ,EAAoB7F,EAAuBmG,EAc/CrD,GAAAA,WAAgBI,gBACdzD,KAAM,oBACNmC,YAAaA,EACbE,MAAO,gCAGN0E,6DAA6D,GAAGnB,2CAA2C,IAAIgB,4DAA4D,IAAId,cAAc,gBAAgBkB,IAAI,SAASlK,EAAQU,EAAOJ,GAC5O,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACH8E,SAASC,eAAe,mCACzB,EAAG9B,EAAAA,YAA0B+B,EAAAA,WAAiC,iCAAiC,GArBpG5F,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjC6D,EAAyBtK,EAAQ,yEAEjCqK,EAA0B5G,EAAuB6G,GAEjD1B,EAAkB5I,EAAQ,4DAE1BsI,EAAmB7E,EAAuBmF,EAU9CrC,GAAAA,WAAgBI,gBACdzD,KAAM,oCACNmC,YAAaA,EACbE,MAAO,YAGNgF,wEAAwE,GAAGzB,2CAA2C,IAAIC,2DAA2D,MAAMyB,IAAI,SAASxK,EAAQU,EAAOJ,GAC1N,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACH8E,SAASC,eAAe,kCACzB,EAAG9B,EAAAA,YAA0BmC,EAAAA,WAAgC,gCAAgC,GArBlGhG,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCiE,EAAwB1K,EAAQ,wEAEhCyK,EAAyBhH,EAAuBiH,GAEhD9B,EAAkB5I,EAAQ,4DAE1BsI,EAAmB7E,EAAuBmF,EAU9CrC,GAAAA,WAAgBI,gBACdzD,KAAM,mCACNmC,YAAaA,EACbE,MAAO,YAGNoF,uEAAuE,GAAG7B,2CAA2C,IAAIC,2DAA2D,MAAM6B,IAAI,SAAS5K,EAAQU,EAAOJ,GACzN,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACH8E,SAASC,eAAe,+BACzB,EAAG9B,EAAAA,YAA0BuC,EAAAA,WAA6B,6BAA6B,GArB5FpG,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCqE,EAAqB9K,EAAQ,qEAE7B6K,EAAsBpH,EAAuBqH,GAE7ClC,EAAkB5I,EAAQ,4DAE1BsI,EAAmB7E,EAAuBmF,EAU9CrC,GAAAA,WAAgBI,gBACdzD,KAAM,gCACNmC,YAAaA,EACbE,MAAO,YAGNwF,oEAAoE,GAAGjC,2CAA2C,IAAIC,2DAA2D,MAAMiC,IAAI,SAAShL,EAAQU,EAAOJ,GACtN,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,MACN,EAAGiD,EAAAA,aAA2B,EAAGC,EAAYC,SAASP,EAAUS,QAAQT,EAAUgD,UAAW,kBApBhGxG,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIkD,GAAcvI,EAAQ,eAEtByG,EAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCwB,EAAYjI,EAAQ,0DAEpB4I,EAAkB5I,EAAQ,4DAE1BsI,EAAmB7E,EAAuBmF,EAQ9CrC,GAAAA,WAAgBI,gBACdzD,KAAM,qBACNmC,YAAaA,EACbE,MAAO,eAGN2F,yDAAyD,IAAIpC,2CAA2C,IAAIC,2DAA2D,IAAIC,cAAc,gBAAgBmC,IAAI,SAASnL,EAAQU,EAAOJ,GACxO,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,MACN,EAAGiD,EAAAA,aAA2B,EAAGC,EAAYC,SAASmB,EAAMjB,QAAQiB,EAAMyB,UAAW,oBACrF,EAAG9C,EAAAA,aAA2B,EAAGC,EAAYC,SAASmB,EAAMjB,QAAQiB,EAAM0B,iBAAkB,2BArB/F5G,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIkD,GAAcvI,EAAQ,eAEtByG,EAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCkD,EAAQ3J,EAAQ,gEAEhB4I,EAAkB5I,EAAQ,4DAE1BsI,EAAmB7E,EAAuBmF,EAS9CrC,GAAAA,WAAgBI,gBACdzD,KAAM,sBACNmC,YAAaA,EACbE,MAAO,YAGN+F,+DAA+D,IAAIxC,2CAA2C,IAAIC,2DAA2D,IAAIC,cAAc,gBAAgBuC,IAAI,SAASvL,EAAQU,EAAOJ,GAC9O,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,GAAYI,GACfA,EAAQM,IAAI,iBACb,EAAGuD,EAAAA,aACFC,KAAMhD,EAAAA,WAAgBC,IAAI,kBAC1BgD,UAAWC,EAAAA,WACXC,OAAQ,EAAGC,EAAMD,WAxBvBjF,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIsE,GAAQ3J,EAAQ,4DAEhByJ,EAAShG,EAAuBkG,GAEhClD,EAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCmD,EAAmB5J,EAAQ,6DAE3BsJ,EAAoB7F,EAAuBmG,EAc/CrD,GAAAA,WAAgBI,gBACdzD,KAAM,kBACNmC,YAAaA,EACbE,MAAO,YAGNiG,2DAA2D,IAAI1C,2CAA2C,IAAIgB,4DAA4D,MAAM2B,IAAI,SAASzL,EAAQU,EAAOJ,GAC/M,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,GAAYI,GACnBoC,EAAAA,WAAkBvB,KAAKb,EAAQe,IAAI,eAhBrC/B,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCuB,EAAWhI,EAAQ,oDAEnB6H,EAAYpE,EAAuBuE,EAQvCzB,GAAAA,WAAgBI,gBACdzD,KAAM,UACNmC,YAAaA,MAGZuB,wCAAwC,IAAIuB,mDAAmD,MAAMuD,IAAI,SAAS1L,EAAQU,EAAOJ,GACpI,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP4B,EAAAA,WAAuBX,KAAK,WAhB9B7B,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCa,EAAgBtH,EAAQ,0DAExBiH,EAAiBxD,EAAuB6D,EAQ5Cf,GAAAA,WAAgBI,gBACdzD,KAAM,gBACNmC,YAAaA,MAGZuB,wCAAwC,IAAIY,yDAAyD,MAAMmE,IAAI,SAAS3L,EAAQU,EAAOJ,GAC1I,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP,GAAIuG,GAAUzB,SAASC,eAAe,+BAClCwB,IACFC,EAAAA,WAA+BvF,KAAKsF,GAlBxCnH,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCqF,EAAwB9L,EAAQ,mEAEhC6L,EAAyBpI,EAAuBqI,EAWpDvF,GAAAA,WAAgBI,gBACdzD,KAAM,WACNmC,YAAaA,EACbG,OAAQ,YAGPoB,wCAAwC,IAAImF,kEAAkE,MAAMC,IAAI,SAAShM,EAAQU,EAAOJ,GACnJ,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP,GAAIuG,GAAUzB,SAASC,eAAe,cAClCwB,IACF1E,EAAAA,WAAgBZ,KAAKsF,GAlBzBnH,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCW,EAASpH,EAAQ,kDAEjBkH,EAAUzD,EAAuB2D,EAWrCb,GAAAA,WAAgBI,gBACdzD,KAAM,QACNmC,YAAaA,EACbG,OAAQ,YAGPoB,wCAAwC,IAAIa,iDAAiD,MAAMwE,IAAI,SAASjM,EAAQU,EAAOJ,GAClI,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP6G,EAAAA,WAAiBC,OAAOC,EAAE,QAAQC,KAAK,SAhBzC5H,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIiH,GAAUtM,EAAQ,UAElBkM,EAAWzI,EAAuB6I,GAElC7F,EAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,EAQrCF,GAAAA,WAAgBI,gBACdzD,KAAM,SACNmC,YAAaA,MAGZuB,wCAAwC,IAAI2F,OAAS,WAAWC,IAAI,SAASxM,EAAQU,EAAOJ,GAC/F,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,GAAYI,GACnBgH,EAAAA,WAAoBnG,KAAKb,EAAQe,IAAI,YAAYkG,YAhBnDjI,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCkG,EAAa3M,EAAQ,uDAErByM,EAAchJ,EAAuBkJ,EAQzCpG,GAAAA,WAAgBI,gBACdzD,KAAM,aACNmC,YAAaA,MAGZuB,wCAAwC,IAAIgG,sDAAsD,MAAMC,IAAI,SAAS7M,EAAQU,EAAOJ,GACvI,YAuBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACPyH,EAAAA,WAAgBxG,KAAKD,EAAAA,WAAgByB,EAAAA,YAxBvCrD,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCC,EAAQ1G,EAAQ,iDAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,qDAEpB8H,EAAarE,EAAuBwE,GAEpC8E,EAAS/M,EAAQ,kDAEjB8M,EAAUrJ,EAAuBsJ,EAQrCxG,GAAAA,WAAgBI,gBACdzD,KAAM,QACNmC,YAAaA,MAGZuB,wCAAwC,IAAIC,gDAAgD,IAAImG,iDAAiD,IAAI5E,oDAAoD,MAAM6E,IAAI,SAASjN,EAAQU,EAAOJ,GAC9O,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,GAAYI,GACnBuB,EAAAA,WAAgBkG,WAAW,OAAQnG,EAAAA,WAAgBtC,OAAO0I,QACxDC,gBAAmB3H,EAAQe,IAAI,mBAC/B6G,aAAgB5H,EAAQe,IAAI,mBAE5B8G,KAAQ7H,EAAQe,IAAI,SACnBW,EAAMoG,eAzBX9I,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCU,EAAQnH,EAAQ,oDAEhB+G,EAAStD,EAAuB0D,GAEhCE,EAASrH,EAAQ,qDAEjBgH,EAAUvD,EAAuB4D,EAarCd,GAAAA,WAAgBI,gBACdzD,KAAM,eACNmC,YAAaA,EACbG,OAAQ,YAGPsD,2CAA2C,IAAI0E,mDAAmD,IAAIC,oDAAoD,MAAMC,IAAI,SAAS1N,EAAQU,EAAOJ,GAC/L,YAiBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACHkB,EAAAA,WAAgBR,IAAI,YACtBiB,EAAAA,WAAgB2G,UAAU,EAAGC,EAASC,WAAWtH,EAAAA,WAAgBC,IAAI,aAnBzE/B,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCmH,EAAW5N,EAAQ,uDAEnBqH,EAASrH,EAAQ,qDAEjBgH,EAAUvD,EAAuB4D,EAUrCd,GAAAA,WAAgBI,gBACdzD,KAAM,4BACNmC,YAAaA,EACbE,MAAO,YAGNuD,2CAA2C,IAAIgF,sDAAsD,IAAIL,oDAAoD,MAAMM,IAAI,SAAS/N,EAAQU,EAAOJ,GAClM,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP2B,EAAAA,WAAgBkG,WAAW,UAAWc,EAAAA,eApBxCvJ,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCmH,EAAW5N,EAAQ,uDAEnBgO,EAAYvK,EAAuBmK,GAEnCvG,EAASrH,EAAQ,qDAEjBgH,EAAUvD,EAAuB4D,EAQrCd,GAAAA,WAAgBI,gBACdzD,KAAM,kBACNmC,YAAaA,EACbG,OAAQ,YAGPsD,2CAA2C,IAAIgF,sDAAsD,IAAIL,oDAAoD,MAAMQ,IAAI,SAASjO,EAAQU,EAAOJ,GAClM,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP2B,EAAAA,WAAgBkG,WAAW,WAAYpF,EAAAA,WAAoBG,EAAUsF,cApBvE9I,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCwB,EAAYjI,EAAQ,wDAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,qDAEjBgH,EAAUvD,EAAuB4D,EAQrCd,GAAAA,WAAgBI,gBACdzD,KAAM,mBACNmC,YAAaA,EACbG,OAAQ,YAGPsD,2CAA2C,IAAIoF,uDAAuD,IAAIT,oDAAoD,MAAMU,IAAI,SAASnO,EAAQU,EAAOJ,GACnM,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP2B,EAAAA,WAAgBkG,WAAW,OAAQkB,EAAAA,WAAgBC,EAAMd,cApB3D9I,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjC4H,EAAQrO,EAAQ,oDAEhBoO,EAAS3K,EAAuB4K,GAEhChH,EAASrH,EAAQ,qDAEjBgH,EAAUvD,EAAuB4D,EAQrCd,GAAAA,WAAgBI,gBACdzD,KAAM,eACNmC,YAAaA,EACbG,OAAQ,YAGPsD,2CAA2C,IAAIwF,mDAAmD,IAAIb,oDAAoD,MAAMc,IAAI,SAASvO,EAAQU,EAAOJ,GAC/L,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP2B,EAAAA,WAAgBkG,WAAW,mBAAoBsB,EAAAA,eApBjD/J,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCgI,EAAmBzO,EAAQ,gEAE3BwO,EAAoB/K,EAAuBgL,GAE3CpH,EAASrH,EAAQ,qDAEjBgH,EAAUvD,EAAuB4D,EAQrCd,GAAAA,WAAgBI,gBACdzD,KAAM,2BACNmC,YAAaA,EACbG,OAAQ,YAGPsD,2CAA2C,IAAI4F,+DAA+D,IAAIjB,oDAAoD,MAAMkB,IAAI,SAAS3O,EAAQU,EAAOJ,GAC3M,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP2B,EAAAA,WAAgBkG,WAAW,QAAS0B,EAAAA,eApBtCnK,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,4CAEjBuG,EAAU9C,EAAuBgD,GAEjCoI,EAAS7O,EAAQ,qDAEjB4O,EAAUnL,EAAuBoL,GAEjCxH,EAASrH,EAAQ,qDAEjBgH,EAAUvD,EAAuB4D,EAQrCd,GAAAA,WAAgBI,gBACdzD,KAAM,gBACNmC,YAAaA,EACbG,OAAQ,YAGPsD,2CAA2C,IAAIgG,oDAAoD,IAAIrB,oDAAoD,MAAMsB,IAAI,SAAS/O,EAAQU,EAAOJ,GAChM,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACPyC,EAAAA,WAAmBxB,KAAKU,EAAAA,YApB1BvC,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCwB,EAAYjI,EAAQ,qDAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,kDAEjBgH,EAAUvD,EAAuB4D,EAQrCd,GAAAA,WAAgBI,gBACdzD,KAAM,WACNmC,YAAaA,EACbE,MAAO,YAGNqB,wCAAwC,IAAIwB,oDAAoD,IAAIV,iDAAiD,MAAMsH,IAAI,SAAShP,EAAQU,EAAOJ,GAC1L,YAeA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACP2B,EAAAA,WAAgBV,OAhBlB7B,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCY,EAASrH,EAAQ,kDAEjBgH,EAAUvD,EAAuB4D,EAQrCd,GAAAA,WAAgBI,gBACdzD,KAAM,QACNmC,YAAaA,EACbG,OAAQ,WAGPoB,wCAAwC,IAAIc,iDAAiD,MAAMuH,IAAI,SAASjP,EAAQU,EAAOJ,GAClI,YAiBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAIvF,QAAS2B,KACPa,OAAOgJ,YAAY,WACjBlI,EAAAA,WAAgB2G,UAAU,EAAGU,EAAMc,YAClCC,GAtBL3K,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjC4H,EAAQrO,EAAQ,iDAEhBqH,EAASrH,EAAQ,kDAEjBgH,EAAUvD,EAAuB4D,GAIjC+H,EAAc,GAQlB7I,GAAAA,WAAgBI,gBACdzD,KAAM,aACNmC,YAAaA,EACbE,MAAO,YAGNqB,wCAAwC,IAAIyI,gDAAgD,IAAI3H,iDAAiD,MAAM4H,IAAI,SAAStP,EAAQU,EAAOJ,GACtL,YAmBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAAS2B,KACPkK,EAAAA,WAAiBjJ,KAAKuB,EAAAA,YApBxBpD,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,WAAkB+E,CAElB,IAAIoB,GAASzG,EAAQ,yCAEjBuG,EAAU9C,EAAuBgD,GAEjCuB,EAAWhI,EAAQ,oDAEnB6H,EAAYpE,EAAuBuE,GAEnCwH,EAAUxP,EAAQ,mDAElBuP,EAAW9L,EAAuB+L,EAQtCjJ,GAAAA,WAAgBI,gBACdzD,KAAM,SACNmC,YAAaA,MAGZuB,wCAAwC,IAAIuB,mDAAmD,IAAIsH,kDAAkD,MAAMC,IAAI,SAAS1P,EAAQU,EAAOJ,GA8B1L,QAASqP,GAAkB7K,GACzB,MAAiB,QAAVA,GAA4BE,SAAVF,EAG3B,QAAS8K,GAAUC,GACjB,MAAKA,IAAkB,gBAANA,IAAsC,gBAAbA,GAAErP,OACtB,kBAAXqP,GAAEC,MAA0C,kBAAZD,GAAEE,OACpC,EAELF,EAAErP,OAAS,GAAqB,gBAATqP,GAAE,IAAwB,GAC9C,GALiE,EAQ1E,QAASG,GAASjQ,EAAGkQ,EAAGC,GACtB,GAAIjQ,GAAG0E,CACP,IAAIgL,EAAkB5P,IAAM4P,EAAkBM,GAC5C,OAAO,CAET,IAAIlQ,EAAEmC,YAAc+N,EAAE/N,UAAW,OAAO,CAGxC,IAAIiO,EAAYpQ,GACd,MAAKoQ,GAAYF,IAGjBlQ,EAAIqQ,EAAO7P,KAAKR,GAChBkQ,EAAIG,EAAO7P,KAAK0P,GACTI,EAAUtQ,EAAGkQ,EAAGC,KAJd,CAMX,IAAIN,EAAS7P,GAAI,CACf,IAAK6P,EAASK,GACZ,OAAO,CAET,IAAIlQ,EAAES,SAAWyP,EAAEzP,OAAQ,OAAO,CAClC,KAAKP,EAAI,EAAGA,EAAIF,EAAES,OAAQP,IACxB,GAAIF,EAAEE,KAAOgQ,EAAEhQ,GAAI,OAAO,CAE5B,QAAO,EAET,IACE,GAAIqQ,GAAKC,EAAWxQ,GAChByQ,EAAKD,EAAWN,GACpB,MAAOzQ,GACP,OAAO,EAIT,GAAI8Q,EAAG9P,QAAUgQ,EAAGhQ,OAClB,OAAO,CAKT,KAHA8P,EAAGG,OACHD,EAAGC,OAEExQ,EAAIqQ,EAAG9P,OAAS,EAAGP,GAAK,EAAGA,IAC9B,GAAIqQ,EAAGrQ,IAAMuQ,EAAGvQ,GACd,OAAO,CAIX,KAAKA,EAAIqQ,EAAG9P,OAAS,EAAGP,GAAK,EAAGA,IAE9B,GADA0E,EAAM2L,EAAGrQ,IACJoQ,EAAUtQ,EAAE4E,GAAMsL,EAAEtL,GAAMuL,GAAO,OAAO,CAE/C,cAAcnQ,UAAakQ,GA5F7B,GAAIG,GAASrO,MAAMG,UAAU6N,MACzBQ,EAAavQ,EAAQ,iBACrBmQ,EAAcnQ,EAAQ,yBAEtBqQ,EAAY3P,EAAOJ,QAAU,SAAUoQ,EAAQC,EAAUT,GAG3D,MAFKA,KAAMA,MAEPQ,IAAWC,GACN,EAEED,YAAkBE,OAAQD,YAAoBC,MAChDF,EAAOG,YAAcF,EAASE,WAI3BH,IAAWC,GAA6B,gBAAVD,IAAyC,gBAAZC,GAC9DT,EAAKY,OAASJ,IAAWC,EAAWD,GAAUC,EAS9CX,EAASU,EAAQC,EAAUT,MAsEnCa,wBAAwB,GAAGC,gBAAgB,KAAKC,IAAI,SAASjR,EAAQU,EAAOJ,GAQ/E,QAAS4Q,GAAUC,GACjB,MAAiD,sBAA1C1M,OAAOvC,UAAUkP,SAAS7Q,KAAK4Q,GAIxC,QAASE,GAAYF,GACnB,MAAOA,IACY,gBAAVA,IACiB,gBAAjBA,GAAO3Q,QACdiE,OAAOvC,UAAUoP,eAAe/Q,KAAK4Q,EAAQ,YAC5C1M,OAAOvC,UAAUqP,qBAAqBhR,KAAK4Q,EAAQ,YACpD,EAlBJ,GAAIK,GAEI,sBAFqB,WAC3B,MAAO/M,QAAOvC,UAAUkP,SAAS7Q,KAAKyB,aAGxC1B,GAAUI,EAAOJ,QAAUkR,EAAyBN,EAAYG,EAEhE/Q,EAAQ4Q,UAAYA,EAKpB5Q,EAAQ+Q,YAAcA,OAUhBI,IAAI,SAASzR,EAAQU,EAAOJ,GAKlC,QAASoR,GAAMhO,GACb,GAAIiO,KACJ,KAAK,GAAIhN,KAAOjB,GAAKiO,EAAK1P,KAAK0C,EAC/B,OAAOgN,GAPTrR,EAAUI,EAAOJ,QAAiC,kBAAhBmE,QAAOkN,KACrClN,OAAOkN,KAAOD,EAElBpR,EAAQoR,KAAOA,OAOTE,IAAI,SAAS5R,EAAQU,EAAOJ,GAIlC,YAEAA,GAAQqD,YAAa,CACrB,IAAIkO,GAAO,MAEXvR,GAAQuR,KAAOA,CAIf,IAAIC,GAAU,SAEdxR,GAAQwR,QAAUA,CASlB,IAAIC,GAAM,KAEVzR,GAAQyR,IAAMA,EACdzR,EAAQ,YACNuR,KAAMA,EACNC,QAASA,EACTC,IAAKA,QAEDC,IAAI,SAAShS,EAAQU,EAAOJ,GAClC,YAKA,SAAS2R,GAAUC,EAAOC,EAAMC,GAI9B,QAASC,KACPC,GAAS,EACTF,EAASjQ,MAAMT,KAAMM,WAGvB,QAASuQ,KACHD,IAEcJ,EAAdM,EACFL,EAAK5R,KAAKmB,KAAM8Q,IAAeD,EAAMF,GAErCA,EAAKlQ,MAAMT,KAAMM,YAdrB,GAAIwQ,GAAc,EACdF,GAAS,CAiBbC,KAtBFjS,EAAQqD,YAAa,EACrBrD,EAAQ2R,UAAYA,OAuBdQ,IAAI,SAASzS,EAAQU,EAAOJ,IAClC,SAAWsB,GAEX,YAMA,SAAS6B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAAWF,GAUzF,QAASgP,GAAU/N,GACjB,MAAOgO,GAAYhO,EAGrB,QAASiO,GAAUjO,EAAKkO,GACtB,IACE3M,OAAO4M,eAAeC,QAAQL,EAAU/N,GAAMqO,KAAKC,UAAUJ,IAC7D,MAAOK,GACP,GAAIA,EAAMhQ,OAASiQ,EAKjB,YAFyB,eAAzBvR,EAAQU,IAAI8Q,SAA4BC,EAAU,YAAW,EAAO,4FAA8FrO,OAKpK,IAAIkO,EAAMhQ,OAASoQ,GAAuD,IAAjCpN,OAAO4M,eAAetS,OAI7D,YAFyB,eAAzBoB,EAAQU,IAAI8Q,SAA4BC,EAAU,YAAW,EAAO,0FAA4FrO,OAKlK,MAAMkO,IAIV,QAASK,GAAU5O,GACjB,GAAI6O,GAAOxO,MACX,KACEwO,EAAOtN,OAAO4M,eAAeW,QAAQf,EAAU/N,IAC/C,MAAOuO,GACP,GAAIA,EAAMhQ,OAASiQ,EAKjB,MAFyB,eAAzBvR,EAAQU,IAAI8Q,SAA4BC,EAAU,YAAW,EAAO,4FAA8FrO,OAE3J,KAIX,GAAIwO,EACF,IACE,MAAOR,MAAKU,MAAMF,GAClB,MAAON,IAKX,MAAO,MA/DT5S,EAAQqD,YAAa,EACrBrD,EAAQsS,UAAYA,EACpBtS,EAAQiT,UAAYA,CAIpB,IAAII,GAAW3T,EAAQ,WAEnBqT,EAAY5P,EAAuBkQ,GAEnChB,EAAY,aACZW,EAAqB,qBACrBH,EAAgB,kBAqDjB5S,KAAKmB,KAAK1B,EAAQ,eAClB4T,SAAW,EAAEC,QAAU,KAAKC,IAAI,SAAS9T,EAAQU,EAAOJ,GAC3D,YAaA,SAASyT,GAAiBC,EAAMC,EAAOC,GACjCF,EAAKD,iBACPC,EAAKD,iBAAiBE,EAAOC,GAAU,GAEvCF,EAAKG,YAAY,KAAOF,EAAOC,GAInC,QAASE,GAAoBJ,EAAMC,EAAOC,GACpCF,EAAKI,oBACPJ,EAAKI,oBAAoBH,EAAOC,GAAU,GAE1CF,EAAKK,YAAY,KAAOJ,EAAOC,GAInC,QAASI,KAGP,MAAOpO,QAAOqO,SAASC,KAAKC,MAAM,KAAK,IAAM,GAG/C,QAASC,GAAgBC,GACvBzO,OAAOqO,SAASK,QAAQ1O,OAAOqO,SAASM,SAAW3O,OAAOqO,SAASO,OAAS,IAAMH,GAGpF,QAASI,KACP,MAAO7O,QAAOqO,SAASM,SAAW3O,OAAOqO,SAASO,OAAS5O,OAAOqO,SAASS,KAG7E,QAASC,GAAGvV,GACNA,GAAGwG,OAAOgP,QAAQD,GAAGvV,GAG3B,QAASyV,GAAoBC,EAAShD,GACpCA,EAASlM,OAAOmP,QAAQD,IAW1B,QAASE,KACP,GAAIC,GAAKC,UAAUC,SACnB,OAAkC,KAA7BF,EAAGG,QAAQ,eAAsD,KAA9BH,EAAGG,QAAQ,gBAA0D,KAAhCH,EAAGG,QAAQ,kBAAoD,KAAzBH,EAAGG,QAAQ,WAAoD,KAAhCH,EAAGG,QAAQ,iBAKjI,KAAxBH,EAAGG,QAAQ,UACN,EAEFxP,OAAOgP,SAAW,aAAehP,QAAOgP,SAPtC,EAcX,QAASS,KACP,GAAIJ,GAAKC,UAAUC,SACnB,OAAiC,KAA1BF,EAAGG,QAAQ,WA5EpBpV,EAAQqD,YAAa,EACrBrD,EAAQyT,iBAAmBA,EAC3BzT,EAAQ8T,oBAAsBA,EAC9B9T,EAAQgU,YAAcA,EACtBhU,EAAQoU,gBAAkBA,EAC1BpU,EAAQyU,cAAgBA,EACxBzU,EAAQ2U,GAAKA,EACb3U,EAAQ6U,oBAAsBA,EAC9B7U,EAAQgV,gBAAkBA,EAC1BhV,EAAQqV,iCAAmCA,OAqErCC,IAAI,SAAS5V,EAAQU,EAAOJ,GAClC,YAEAA,GAAQqD,YAAa,CACrB,IAAIkS,KAAiC,mBAAX3P,UAA0BA,OAAOiE,WAAYjE,OAAOiE,SAAS2L,cACvFxV,GAAQuV,UAAYA,OACdE,IAAI,SAAS/V,EAAQU,EAAOJ,IAClC,SAAWsB,GACX,YAMA,SAAS6B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAAWF,GA+BzF,QAASsS,KAUP,QAASC,GAAmBC,GAC1BA,EAAeA,GAAgBhQ,OAAOgP,QAAQrC,SAE9C,IAAI8B,GAAOwB,EAAUpB,gBACjBqB,EAAgBF,EAChBvR,EAAMyR,EAAczR,IAEpBkO,EAAQ7N,MACRL,GACFkO,EAAQwD,EAAiB9C,UAAU5O,IAEnCkO,EAAQ,KACRlO,EAAMuQ,EAAQxC,YAEV4D,GAAapQ,OAAOgP,QAAQqB,aAAaC,KAAaN,GAAgBvR,IAAKA,IAAQ,KAAMgQ,GAG/F,IAAIJ,GAAWkC,EAAY,WAAW9B,EAEtC,OAAOO,GAAQwB,eAAeF,KAAajC,GAAY1B,MAAOA,IAAU7N,OAAWL,GAGrF,QAASgS,GAAsBC,GAG7B,QAASC,GAAiB5C,GACJjP,SAAhBiP,EAAMpB,OAEViE,EAAab,EAAmBhC,EAAMpB,QALxC,GAAIiE,GAAeF,EAAKE,YAUxB,OAFAX,GAAUpC,iBAAiB7N,OAAQ,WAAY2Q,GAExC,WACLV,EAAU/B,oBAAoBlO,OAAQ,WAAY2Q,IAItD,QAASE,GAAiBxC,GACxB,GAAIyC,GAAWzC,EAASyC,SACpBnC,EAAWN,EAASM,SACpBC,EAASP,EAASO,OAClBE,EAAOT,EAASS,KAChBnC,EAAQ0B,EAAS1B,MACjBoE,EAAS1C,EAAS0C,OAClBtS,EAAM4P,EAAS5P,GAEnB,IAAIsS,IAAWC,EAASnF,IAAxB,CAEAsE,EAAiBzD,UAAUjO,EAAKkO,EAEhC,IAAI8B,IAAQqC,GAAY,IAAMnC,EAAWC,EAASE,EAC9CkB,GACFvR,IAAKA,EAGP,IAAIsS,IAAWC,EAASrF,KAAM,CAC5B,GAAIsF,EAEF,MADAjR,QAAOqO,SAASC,KAAOG,GAChB,CAELzO,QAAOgP,QAAQkC,UAAUlB,EAAc,KAAMvB,OAE5C,CAEL,GAAIwC,EAEF,MADAjR,QAAOqO,SAASK,QAAQD,IACjB,CAELzO,QAAOgP,QAAQqB,aAAaL,EAAc,KAAMvB,KAcxD,QAAS0C,GAAanD,GACI,MAAlBoD,IAAqBC,EAAuBZ,EAAsBzB,GAExE,IAAIsC,GAAWtC,EAAQmC,aAAanD,EAEpC,OAAO,YACLsD,IAEwB,MAAlBF,GAAqBC,KAI/B,QAASE,GAAOvD,GACU,MAAlBoD,IAAqBC,EAAuBZ,EAAsBzB,GAExE,IAAIsC,GAAWtC,EAAQuC,OAAOvD,EAE9B,OAAO,YACLsD,IAEwB,MAAlBF,GAAqBC,KAK/B,QAASG,GAAuBC,GACN,MAAlBL,IAAqBC,EAAuBZ,EAAsBzB,IAExEA,EAAQwC,uBAAuBC,GAIjC,QAASC,GAAyBD,GAChCzC,EAAQ0C,yBAAyBD,GAET,MAAlBL,GAAqBC,IA/H7B,GAAIM,GAAU7V,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,MAAwBA,UAAU,EAElF8V,GAAsBjC,UAAmJ7Q,OAA9G,eAAzBpD,EAAQU,IAAI8Q,SAA4B2E,EAAY,YAAW,EAAO,+BAAiCA,EAAY,YAAW,EAEjK,IAAIC,GAAeH,EAAQG,aAEvB1B,EAAcH,EAAUb,kBACxB6B,GAAcb,GAAe0B,EA4E7B9C,EAAU+C,EAAmB,WAAWzB,KAAaqB,GACvD5B,mBAAoBA,EACpBc,iBAAkBA,EAClBnE,UAAWyD,EAAiBzD,aAG1B0E,EAAgB,EAChBC,EAAuBvS,MAwC3B,OAAOwR,MAAatB,GAClBmC,aAAcA,EACdI,OAAQA,EACRC,uBAAwBA,EACxBE,yBAA0BA,IA1K9BtX,EAAQqD,YAAa,CAErB,IAAI6S,GAAW/R,OAAO0I,QAAU,SAAUhJ,GAAU,IAAK,GAAIlE,GAAI,EAAGA,EAAI+B,UAAUxB,OAAQP,IAAK,CAAE,GAAIiY,GAASlW,UAAU/B,EAAI,KAAK,GAAI0E,KAAOuT,GAAczT,OAAOvC,UAAUoP,eAAe/Q,KAAK2X,EAAQvT,KAAQR,EAAOQ,GAAOuT,EAAOvT,IAAY,MAAOR,IAInPgU,EAAanY,EAAQ,aAErB+X,EAActU,EAAuB0U,GAErCjB,EAAWlX,EAAQ,aAEnB8X,EAAwB9X,EAAQ,0BAEhCmW,EAAYnW,EAAQ,cAEpBqW,EAAmBrW,EAAQ,qBAE3BoY,EAAoBpY,EAAQ,sBAE5BiY,EAAqBxU,EAAuB2U,GAE5CC,EAAarY,EAAQ,eAErByW,EAAchT,EAAuB4U,EAsJzC/X,GAAQ,WAAa0V,EACrBtV,EAAOJ,QAAUA,EAAQ,aACtBC,KAAKmB,KAAK1B,EAAQ,eAClBsY,YAAY,GAAGC,oBAAoB,GAAGC,aAAa,GAAGC,yBAAyB,GAAGC,qBAAqB,GAAGC,cAAc,GAAG/E,SAAW,EAAEgF,UAAY,KAAKC,IAAI,SAAS7Y,EAAQU,EAAOJ,IACxL,SAAWsB,GACX,YAMA,SAAS6B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAAWF,GAczF,QAASoV,GAAiBjB,GAOxB,QAASJ,GAAOvD,GAGd,MAFC4D,GAAsBjC,UAA+I7Q,OAA1G,eAAzBpD,EAAQU,IAAI8Q,SAA4B2E,EAAY,YAAW,EAAO,2BAA6BA,EAAY,YAAW,GAEtJ7C,EAAQuC,OAAOvD,GATxB,GAAIgB,GAAU6D,EAAgB,WAAWvC,GACvCrB,oBAAqBgB,EAAUhB,qBAC9B0C,GACD5C,GAAIkB,EAAUlB,KAShB,OAAOuB,MAAatB,GAClBuC,OAAQA,IAhCZnX,EAAQqD,YAAa,CAErB,IAAI6S,GAAW/R,OAAO0I,QAAU,SAAUhJ,GAAU,IAAK,GAAIlE,GAAI,EAAGA,EAAI+B,UAAUxB,OAAQP,IAAK,CAAE,GAAIiY,GAASlW,UAAU/B,EAAI,KAAK,GAAI0E,KAAOuT,GAAczT,OAAOvC,UAAUoP,eAAe/Q,KAAK2X,EAAQvT,KAAQR,EAAOQ,GAAOuT,EAAOvT,IAAY,MAAOR,IAInPgU,EAAanY,EAAQ,aAErB+X,EAActU,EAAuB0U,GAErCL,EAAwB9X,EAAQ,0BAEhCmW,EAAYnW,EAAQ,cAEpBgZ,EAAiBhZ,EAAQ,mBAEzB+Y,EAAkBtV,EAAuBuV,EAoB7C1Y,GAAQ,WAAawY,EACrBpY,EAAOJ,QAAUA,EAAQ,aACtBC,KAAKmB,KAAK1B,EAAQ,eAClBwY,aAAa,GAAGC,yBAAyB,GAAGQ,kBAAkB,GAAGrF,SAAW,EAAEgF,UAAY,KAAKM,IAAI,SAASlZ,EAAQU,EAAOJ,GAE9H,YAMA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAAWF,GA0BzF,QAASyV,GAAgB3Y,GACvB,MAAO4Y,MAAKC,SAASjI,SAAS,IAAIkI,OAAO,EAAG9Y,GAG9C,QAAS+Y,GAAkBxZ,EAAGkQ,GAC5B,MAAOlQ,GAAE8U,WAAa5E,EAAE4E,UAAY9U,EAAE+U,SAAW7E,EAAE6E,QAEnD/U,EAAE4E,MAAQsL,EAAEtL,KAAO6U,EAAY,WAAWzZ,EAAE8S,MAAO5C,EAAE4C,OAKvD,QAAS4G,KAaP,QAASpC,GAAaM,GAGpB,MAFA+B,GAAgBzX,KAAK0V,GAEd,WACL+B,EAAkBA,EAAgBC,OAAO,SAAUrU,GACjD,MAAOA,KAASqS,KAStB,QAASiC,KACP,MAAIC,IAAmBA,EAAgB5C,SAAWC,EAASnF,IAClD+H,EAAQpE,QAAQmE,EAAgBlV,KAC9B4P,EACFuF,EAAQpE,QAAQnB,EAAS5P,KAEzB,GAIX,QAASoV,GAAeC,GACtB,GAAIC,GAAUL,GAEdrF,GAAWyF,EAEPzF,EAAS0C,SAAWC,EAASrF,KAC/BiI,KAAa/Y,OAAO+Y,EAAQ/J,MAAM,EAAGkK,EAAU,IAAK1F,EAAS5P,MACpD4P,EAAS0C,SAAWC,EAASpF,UACtCgI,EAAQG,GAAW1F,EAAS5P,KAG9BuV,EAAgBrU,QAAQ,SAAUqO,GAChCA,EAASK,KAIb,QAASkD,GAAOvD,GAGd,GAFAgG,EAAgBjY,KAAKiS,GAEjBK,EACFL,EAASK,OACJ,CACL,GAAI4F,GAAYlE,GAChB6D,IAAWK,EAAUxV,KACrBoV,EAAeI,GAGjB,MAAO,YACLD,EAAkBA,EAAgBP,OAAO,SAAUrU,GACjD,MAAOA,KAAS4O,KAKtB,QAASkG,GAAoB7F,EAAUnC,GACrCiI,EAAYpI,UAAUyH,EAAgBlZ,OAAQ,SAAU8Z,EAAO/H,EAAMF,GACnEkI,EAAoB,WAAWb,EAAgBY,GAAQ/F,EAAU,SAAUiG,GAC3D,MAAVA,EACFnI,EAAKmI,GAELjI,OAGH,SAAU6C,GACPD,GAA0C,gBAAZC,GAChCD,EAAoBC,EAAS,SAAUqF,GACrCrI,EAASqI,KAAO,KAGlBrI,EAASgD,KAAY,KAO3B,QAAS0B,GAAa4D,GAChBnG,GAAYgF,EAAkBhF,EAAUmG,KAE5Cb,EAAkBa,EAElBN,EAAoBM,EAAc,SAAUD,GAC1C,GAAIZ,IAAoBa,EAExB,GAAID,EAAI,CAEN,GAAIC,EAAazD,SAAWC,EAASrF,KAAM,CACzC,GAAI8I,GAAWC,EAAWrG,GACtBsG,EAAWD,EAAWF,EAEtBG,KAAaF,IAAUD,EAAazD,OAASC,EAASpF,SAGxDiF,EAAiB2D,MAAkB,GAAOX,EAAeW,OACxD,IAAInG,GAAYmG,EAAazD,SAAWC,EAASnF,IAAK,CAC3D,GAAI+I,GAAYhB,EAAQpE,QAAQnB,EAAS5P,KACrCoW,EAAYjB,EAAQpE,QAAQgF,EAAa/V,IAE3B,MAAdmW,GAAkC,KAAdC,GAAkB9F,EAAG6F,EAAYC,OAK/D,QAAS9Y,GAAKsS,GACZuC,EAAaJ,EAAenC,EAAU2C,EAASrF,KAAMa,MAGvD,QAASkC,GAAQL,GACfuC,EAAaJ,EAAenC,EAAU2C,EAASpF,QAASY,MAG1D,QAASsI,KACP/F,EAAG,IAGL,QAASgG,KACPhG,EAAG,GAGL,QAASvC,KACP,MAAOyG,GAAgB+B,GAGzB,QAASN,GAAWrG,GAClB,GAAgB,MAAZA,GAAwC,gBAAbA,GAAuB,MAAOA,EAE7D,IAAIM,GAAWN,EAASM,SACpBC,EAASP,EAASO,OAClBE,EAAOT,EAASS,KAEhBwF,EAAS3F,CAMb,OAJIC,KAAQ0F,GAAU1F,GAElBE,IAAMwF,GAAUxF;AAEbwF,EAGT,QAASW,GAAW5G,GAClB,MAAOqG,GAAWrG,GAGpB,QAASmC,GAAenC,EAAU0C,GAChC,GAAItS,GAAM3C,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB0Q,IAAc1Q,UAAU,EAiBxF,OAfsB,gBAAXiV,KAOe,gBAAb1C,KAAuBA,EAAWkC,EAAY,WAAWlC,IAEpEA,EAAWiC,KAAajC,GAAY1B,MAAOoE,IAE3CA,EAAStS,EACTA,EAAM3C,UAAU,IAAM0Q,KAGjB0I,EAAiB,WAAW7G,EAAU0C,EAAQtS,GAIvD,QAAS0W,GAASxI,GACZ0B,GACF+G,EAAoB/G,EAAU1B,GAC9BkH,EAAexF,IAEf+G,EAAoBrF,IAAsBpD,GAI9C,QAASyI,GAAoB/G,EAAU1B,GACrC0B,EAAS1B,MAAQ2D,KAAajC,EAAS1B,MAAOA,GAC9CD,EAAU2B,EAAS5P,IAAK4P,EAAS1B,OAInC,QAAS6E,GAAuBC,GACQ,KAAlC+B,EAAgBhE,QAAQiC,IAAc+B,EAAgBzX,KAAK0V,GAIjE,QAASC,GAAyBD,GAChC+B,EAAkBA,EAAgBC,OAAO,SAAUrU,GACjD,MAAOA,KAASqS,IAKpB,QAASP,GAAUvE,EAAO8B,GACJ,gBAATA,KAAmBA,EAAO8B,EAAY,WAAW9B,IAE5D1S,EAAKuU,GAAW3D,MAAOA,GAAS8B,IAIlC,QAAS4B,GAAa1D,EAAO8B,GACP,gBAATA,KAAmBA,EAAO8B,EAAY,WAAW9B,IAE5DC,EAAQ4B,GAAW3D,MAAOA,GAAS8B,IA1NrC,GAAIkD,GAAU7V,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,MAAwBA,UAAU,GAC/EiU,EAAqB4B,EAAQ5B,mBAC7Bc,EAAmBc,EAAQd,iBAC3BnE,EAAYiF,EAAQjF,UACpBqC,EAAK4C,EAAQ5C,GACbiG,EAAYrD,EAAQqD,UACpB/F,EAAsB0C,EAAQ1C,mBAET,iBAAd+F,KAAwBA,EAAYK,EAE/C,IAAI7B,MAYAI,KACAI,KACA3F,EAAWvP,OAkEX6U,EAAkB7U,MAmItB,QACEqS,aAAcA,EACdI,OAAQA,EACRX,aAAcA,EACd7U,KAAMA,EACN2S,QAASA,EACTK,GAAIA,EACJ+F,OAAQA,EACRC,UAAWA,EACXvI,UAAWA,EACXkI,WAAYA,EACZO,WAAYA,EACZzE,eAAgBA,EAEhB2E,SAAUG,EAAY,WAAWH,EAAU,kEAC3C3D,uBAAwB8D,EAAY,WAAW9D,EAAwB,kEACvEE,yBAA0B4D,EAAY,WAAW5D,EAA0B,+FAC3ER,UAAWoE,EAAY,WAAWpE,EAAW,6CAC7Cb,aAAciF,EAAY,WAAWjF,EAAc,oDA1RvDjW,EAAQqD,YAAa,CAErB,IAAI6S,GAAW/R,OAAO0I,QAAU,SAAUhJ,GAAU,IAAK,GAAIlE,GAAI,EAAGA,EAAI+B,UAAUxB,OAAQP,IAAK,CAAE,GAAIiY,GAASlW,UAAU/B,EAAI,KAAK,GAAI0E,KAAOuT,GAAczT,OAAOvC,UAAUoP,eAAe/Q,KAAK2X,EAAQvT,KAAQR,EAAOQ,GAAOuT,EAAOvT,IAAY,MAAOR,IAInPsX,EAAazb,EAAQ,cAErBwZ,EAAc/V,EAAuBgY,GAErCpB,EAAcra,EAAQ,gBAEtBkX,EAAWlX,EAAQ,aAEnB0b,EAAmB1b,EAAQ,oBAE3Bob,EAAmB3X,EAAuBiY,GAE1CC,EAAqB3b,EAAQ,uBAE7Bua,EAAsB9W,EAAuBkY,GAE7CtD,EAAarY,EAAQ,eAErByW,EAAchT,EAAuB4U,GAErCuD,EAAa5b,EAAQ,eAErBwb,EAAc/X,EAAuBmY,GAYrCL,EAAmB,CAsPvBjb,GAAQ,WAAamZ,EACrB/Y,EAAOJ,QAAUA,EAAQ,aACtBgY,YAAY,GAAGuD,eAAe,GAAGC,mBAAmB,GAAGC,cAAc,GAAGpD,cAAc,GAAGqD,sBAAsB,GAAGC,aAAa,KAAKC,IAAI,SAASlc,EAAQU,EAAOJ,GAEnK,YAMA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAAWF,GAQzF,QAASgT,KACP,GAAInC,GAAWvS,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,IAAMA,UAAU,GACjFiV,EAASjV,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmBkV,EAASnF,IAAM/P,UAAU,GACxF2C,EAAM3C,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,GAE7Ema,EAAana,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEhE,iBAAbuS,KAAuBA,EAAWkC,EAAY,WAAWlC,IAE9C,gBAAX0C,KAOT1C,EAAWiC,KAAajC,GAAY1B,MAAOoE,IAE3CA,EAAStS,GAAOuS,EAASnF,IACzBpN,EAAMwX,EAGR,IAAItH,GAAWN,EAASM,UAAY,IAChCC,EAASP,EAASO,QAAU,GAC5BE,EAAOT,EAASS,MAAQ,GACxBnC,EAAQ0B,EAAS1B,OAAS,IAE9B,QACEgC,SAAUA,EACVC,OAAQA,EACRE,KAAMA,EACNnC,MAAOA,EACPoE,OAAQA,EACRtS,IAAKA,GA7CTrE,EAAQqD,YAAa,CAErB,IAAI6S,GAAW/R,OAAO0I,QAAU,SAAUhJ,GAAU,IAAK,GAAIlE,GAAI,EAAGA,EAAI+B,UAAUxB,OAAQP,IAAK,CAAE,GAAIiY,GAASlW,UAAU/B,EAAI,KAAK,GAAI0E,KAAOuT,GAAczT,OAAOvC,UAAUoP,eAAe/Q,KAAK2X,EAAQvT,KAAQR,EAAOQ,GAAOuT,EAAOvT,IAAY,MAAOR,IAInP+S,EAAWlX,EAAQ,aAEnBqY,EAAarY,EAAQ,eAErByW,EAAchT,EAAuB4U,EAuCzC/X,GAAQ,WAAaoW,EACrBhW,EAAOJ,QAAUA,EAAQ,aACtBgY,YAAY,GAAGK,cAAc,KAAKyD,IAAI,SAASpc,EAAQU,EAAOJ,GAGjE,YAGA,SAAS+b,GAAUC,GACjB,MAAOA,GAFThc,EAAQqD,YAAa,EASrBrD,EAAQ,WAAa+b,EACrB3b,EAAOJ,QAAUA,EAAQ,gBACnBic,IAAI,SAASvc,EAAQU,EAAOJ,GAClC,YAGA,SAASkc,GAAYC,GACnB,GAAIC,GAAQD,EAAOC,MAAM,qBAEzB,OAAa,OAATA,EAAsBD,EAEnBA,EAAOE,UAAUD,EAAM,GAAGlc,QANnCF,EAAQqD,YAAa,EASrBrD,EAAQ,WAAakc,EACrB9b,EAAOJ,QAAUA,EAAQ,gBACnBsc,IAAI,SAAS5c,EAAQU,EAAOJ,IAClC,SAAWsB,GACX,YAIA,SAAS6B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAAWF,GAUzF,QAASmZ,GAAUlI,GACjB,GAAIE,GAAWiI,EAAc,WAAWnI,GACpCG,EAAS,GACTE,EAAO,EAEc,gBAAzBpT,EAAQU,IAAI8Q,SAA4BC,EAAU,WAAWsB,IAASE,EAAU,oFAAqFF,GAAQ3P,MAE7K,IAAI+X,GAAYlI,EAASa,QAAQ,IACf,MAAdqH,IACF/H,EAAOH,EAAS8H,UAAUI,GAC1BlI,EAAWA,EAAS8H,UAAU,EAAGI,GAGnC,IAAIC,GAAcnI,EAASa,QAAQ,IAQnC,OAPoB,KAAhBsH,IACFlI,EAASD,EAAS8H,UAAUK,GAC5BnI,EAAWA,EAAS8H,UAAU,EAAGK,IAGlB,KAAbnI,IAAiBA,EAAW,MAG9BA,SAAUA,EACVC,OAAQA,EACRE,KAAMA,GApCV1U,EAAQqD,YAAa,CAIrB,IAAIgQ,GAAW3T,EAAQ,WAEnBqT,EAAY5P,EAAuBkQ,GAEnCsJ,EAAejd,EAAQ,iBAEvB8c,EAAgBrZ,EAAuBwZ,EA8B3C3c,GAAQ,WAAauc,EACrBnc,EAAOJ,QAAUA,EAAQ,aACtBC,KAAKmB,KAAK1B,EAAQ,eAClBkd,gBAAgB,GAAGtJ,SAAW,EAAEC,QAAU,KAAKsJ,IAAI,SAASnd,EAAQU,EAAOJ,IAC9E,SAAWsB,GACX,YAIA,SAAS6B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAAWF,GAMzF,QAAS0Z,GAAkBzF,EAAMpD,EAAUnC,GACzC,GAAIoI,GAAS7C,EAAKpD,EAAUnC,EAExBuF,GAAKnX,OAAS,EAGhB4R,EAASoI,GAEgB,eAAzB5Y,EAAQU,IAAI8Q,SAA4BC,EAAU,WAAsBrO,SAAXwV,EAAsB,oGAAsGxV,OAhB7L1E,EAAQqD,YAAa,CAIrB,IAAIgQ,GAAW3T,EAAQ,WAEnBqT,EAAY5P,EAAuBkQ,EAcvCrT,GAAQ,WAAa8c,EACrB1c,EAAOJ,QAAUA,EAAQ,aACtBC,KAAKmB,KAAK1B,EAAQ,eAClB4T,SAAW,EAAEC,QAAU,KAAKwJ,IAAI,SAASrd,EAAQU,EAAOJ,GAU3D,YAaA,IAAIsY,GAAY,SAAS0E,EAAWC,EAAQxd,EAAGkQ,EAAGuN,EAAGC,EAAGje,EAAGU,GAOzD,IAAKod,EAAW,CACd,GAAIpK,EACJ,IAAelO,SAAXuY,EACFrK,EAAQ,GAAI/S,OACV,qIAGG,CACL,GAAI2B,IAAQ/B,EAAGkQ,EAAGuN,EAAGC,EAAGje,EAAGU,GACvBwd,EAAW,CACfxK,GAAQ,GAAI/S,OACVod,EAAO3I,QAAQ,MAAO,WAAa,MAAO9S,GAAK4b,QAEjDxK,EAAMhQ,KAAO,sBAIf,KADAgQ,GAAMyK,YAAc,EACdzK,GAIVxS,GAAOJ,QAAUsY,OAEXgF,IAAI,SAAS5d,EAAQU,EAAOJ,GAUlC,YASA,IAAIuT,GAAU,YAyCdnT,GAAOJ,QAAUuT,OAEXgK,IAAI,SAAS7d,EAAQU,EAAOJ,GAClC,YAaA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA2Eje,QAASxV,GAAOmK,GACd,OACEvF,KAAMuF,EAAM0L,KAAKjR,KACjBkR,SAAU3L,EAAM0L,KAAKC,SACrBC,UAAW5L,EAAM0L,KAAKE,WAhG1B,GAAIxa,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQoI,OAASA,CAEjB,IAAIgW,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YA+DpF,MApEAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,UACLG,MAAO,WACLoB,OAAOqO,SAASwK,YAGlBpa,IAAK,aACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMoa,SACNQ,YAAYC,QAAQ,mFAAqFC,SAAUxd,KAAK0C,MAAMoa,SAASU,WAAY,GACjJxd,KAAK0C,MAAMqa,UACbO,YAAYC,QAAQ,uFAAyFC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,WAAY,GADrJ,UAKTva,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMoa,UAAY9c,KAAK0C,MAAMqa,UAC7B,oBAEA,kBAIX9Z,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,gBAClBT,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAK2d,cAEPV,EAAAA,WAAgB7I,cACd,IACA,KACA6I,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,kBAC3BI,QAAS7d,KAAK8d,SAChBP,QAAQ,gBAEV,IACAN,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kCACbF,QAAQ,4BASbL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IASfc,MAAQ,UAAUC,IAAI,SAAS3f,EAAQU,EAAOJ,GACjD,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCkB,EAAWxT,EAAE,QAAQC,KAAK,QAAU,eAEpCuS,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YA8BpF,MAnCAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,SACLG,MAAO,WACL,GAAI+a,GAAOne,KAAK0C,MAAMyb,MAAQ,IAC1BC,EAAMF,CAUV,OANEE,IAFEpe,KAAK0C,MAAMkJ,MAAQ5L,KAAK0C,MAAMkJ,KAAKyS,GAE9Bre,KAAK0C,MAAMkJ,KAAK0S,YAAc,IAAMH,EAAO,IAAMne,KAAK0C,MAAMkJ,KAAKyS,GAAK,OAGtEF,EAAO,UAMlBlb,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cAAc,OAASmK,IAAKve,KAAKwe,SACtDf,UAAWzd,KAAK0C,MAAM+a,WAAa,cACnC/c,MAAO6c,QAAQ,qBAKdL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAUS,IAAI,SAASngB,EAAQU,EAAOJ,GACjD,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAIwH,GAAUtM,EAAQ,UAElBkM,EAAWzI,EAAuB6I,GAElCoS,EAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAsFpF,MA3FAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,mBACLG,MAAO,WAEL,MAAIpD,MAAK0C,MAAMgR,QAAQgL,KACdzB,EAAAA,WAAgB7I,cAAc,OAASqJ,UAAW,OAAQkB,yBAC7DC,OAAQ5e,KAAK0C,MAAMgR,QAAQgL,QAGxBzB,EAAAA,WAAgB7I,cACrB,KACEqJ,UAAW,QACbzd,KAAK0C,MAAMgR,QAAQmL,UAMzB5b,IAAK,uBACLG,MAAO,WACL,GAAIpD,KAAK0C,MAAMoc,QAAS,CACtB,GAAI9e,KAAK0C,MAAMoc,QAAQC,SAAS,EAAGvU,EAAAA,eAAsB,CAEvD,GAAI9J,GAAQ4c,YAAYC,QAAQ,wCAC9ByB,WAAchf,KAAK0C,MAAMoc,QAAQjD,OAAO,YACvC,GAECnI,EAAU4J,YAAYC,QAAQ,qCAChCyB,WAAchf,KAAK0C,MAAMoc,QAAQG,YAChC,EAEH,OAAOhC,GAAAA,WAAgB7I,cACrB,QACE1T,MAAOA,GACTgT,GAIA,MAAO6J,SAAQ,yBAGnB,MAAOA,SAAQ,6BAInBta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,qCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,kBAGJR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbzd,KAAKkf,mBACLjC,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,oBACbzd,KAAKmf,gCAUZjC,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfrS,OAAS,SAASmT,MAAQ,UAAUoB,IAAI,SAAS9gB,EAAQU,EAAOJ,GACnE,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCqC,EAAU/gB,EAAQ,YAElBghB,EAAWvd,EAAuBsd,GAYlCE,EAAS,SAAUpC,GAGrB,QAASoC,KAGP,MAFApd,GAAgBnC,KAAMuf,GAEfnD,EAA2Bpc,KAAM+C,OAAOqa,eAAemC,GAAQ9e,MAAMT,KAAMM,YA4BpF,MAjCAgc,GAAUiD,EAAQpC,GAQlB5a,EAAagd,IACXtc,IAAK,SACLG,MAAO,WACL,GAAIqa,GAAY,OAASzd,KAAK0C,MAAM+a,UAChC+B,EAAWxf,KAAK0C,MAAM8c,QAQ1B,OANIxf,MAAK0C,MAAM+c,UACbhC,GAAa,eACb+B,GAAW,GAINvC,EAAAA,WAAgB7I,cACrB,UACEwJ,KAAM5d,KAAK0C,MAAMmb,QAAU,SAAW,SACtCJ,UAAWA,EACX+B,SAAUA,EACV3B,QAAS7d,KAAK0C,MAAMmb,SACtB7d,KAAK0C,MAAMgd,SACX1f,KAAK0C,MAAM+c,QAAUxC,EAAAA,WAAgB7I,cAAckL,EAAAA,WAAkB,MAAQ,UAM5EC,GACPtC,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkB2gB,EAElBA,EAAOI,cACLlC,UAAW,cAEXG,KAAM,SAEN6B,SAAS,EACTD,UAAU,EAEV3B,QAAS,QAGR+B,WAAW,GAAG5B,MAAQ,UAAU6B,IAAI,SAASvhB,EAAQU,EAAOJ,GAC/D,YA4BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC8C,EAAUxhB,EAAQ,aAIlByhB,GAFWhe,EAAuB+d,GAExBxhB,EAAQ,cAElB0hB,EAAWje,EAAuBge,GAElC/a,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,2BAEpB8H,EAAarE,EAAuBwE,GAcpC2X,EAAWxT,EAAE,QAAQC,KAAK,QAAU,cAEpCuS,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAsCtF,OApCAsB,GAAMic,WAAa,WACjB,GAAIjc,EAAMmN,MAAM+O,UACd,OAAO,CAGTlc,GAAM2V,UACJuG,WAAa,GAGf,IAAIC,GAAanc,EAAMtB,MAAM0d,OAAS,WAAa,WAC/CC,EAAS3V,EAAE,aAEf/F,GAAAA,WAAe2b,KAAKtc,EAAMtB,MAAMkJ,KAAK2U,QAAQC,QAC3CA,OAAUL,EACVM,MACEC,OAAUL,EAAOA,OAAO,UACxBM,KAAQN,EAAOA,OAAO,WAEvBO,KAAK,SAAUC,GAChB7c,EAAMtB,MAAMoe,WAAWD,EAAKvC,YAAauC,EAAK1K,SAC9C/P,EAAAA,WAAmB2a,QAAQF,EAAKG,SAC/B,SAAUC,GACc,MAArBA,EAAUC,QACZ9a,EAAAA,WAAmBoL,MAAMyP,EAAUD,QACnChd,EAAM2V,UACJuG,WAAa,KAGflc,EAAMtB,MAAMye,UAAUF,MAK5Bjd,EAAMmN,OACJ+O,WAAa,GAERlc,EA0IT,MArLAsY,GAAUY,EAAQC,GA8ClB5a,EAAa2a,IACXja,IAAK,gBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM0d,OACNpgB,KAAK0C,MAAMyT,QAAQiL,SAASjD,KAE5Bne,KAAK0C,MAAMyT,QAAQkL,SAASlD,QAIvClb,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM0d,OACNpgB,KAAK0C,MAAMyT,QAAQiL,SAASE,OAE5BthB,KAAK0C,MAAMyT,QAAQkL,SAASC,UAIvCre,IAAK,gBACLG,MAAO,WACL,MAAOpD,MAAK0C,MAAM0d,QAAUpgB,KAAK0C,MAAMkJ,KAAK0S,eAG9Crb,IAAK,eACLG,MAAO,WACL,OAAQ8a,EAAUle,KAAKuhB,kBAAoB,IAAMvhB,KAAKwhB,gBAAiBxhB,KAAK0C,MAAMkJ,KAAKyS,GAAK,QAAQoD,KAAK,QAG3Gxe,IAAK,oBACLG,MAAO,WACL,GAAIse,GAAS1hB,KAETqgB,EAAS3V,EAAE,aACf2V,GAAOsB,MAAM3hB,KAAK4hB,iBAElBvB,EAAOA,QACLsB,MAAS3hB,KAAK4hB,gBACdC,OAAU7hB,KAAK4hB,gBACfE,YACEvD,IAAOve,KAAK+hB,gBAEdC,cAAe,WACb,GAAIN,EAAOhf,MAAM0d,OAAQ,CAEvB,GAAI6B,GAAY5B,EAAOA,OAAO,QAC1B6B,EAAY7B,EAAOA,OAAO,YAG9B,IAAI6B,EAAUP,MAAQO,EAAUL,OAAQ,CACtC,GAAIM,GAAiBD,EAAUP,MAAQM,EACnCG,GAAWD,EAAiBT,EAAOE,iBAAmB,EAE1DvB,GAAOA,OAAO,UACZlS,EAAKiU,EACLC,EAAK,QAEF,IAAIH,EAAUP,MAAQO,EAAUL,OAAQ,CAC7C,GAAIS,GAAkBJ,EAAUL,OAASI,EACrCM,GAAWD,EAAkBZ,EAAOE,iBAAmB,EAE3DvB,GAAOA,OAAO,UACZlS,EAAK,EACLkU,EAAKE,SAGJ,CAEL,GAAI9B,GAAOiB,EAAOhf,MAAMyT,QAAQkL,SAASZ,IACrCA,KACFJ,EAAOA,OAAO,OAAQI,EAAKE,MAC3BN,EAAOA,OAAO,UACZlS,EAAKsS,EAAKtS,EACVkU,EAAK5B,EAAK4B,YAQtBpf,IAAK,uBACLG,MAAO,WACLsH,EAAE,cAAc2V,OAAO,cAMzBpd,IAAK,SAILG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cAAc,OAASqJ,UAAW,yBAClDR,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,QAASH,UAAW,8BAGvER,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEnC,QAAS7d,KAAKigB,WACdR,QAASzf,KAAKmR,MAAM+O,UACpBzC,UAAW,yBACbzd,KAAK0C,MAAM0d,OAAS7C,QAAQ,cAAgBA,QAAQ,eAEtDN,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEnC,QAAS7d,KAAK0C,MAAM8f,UACpBhD,SAAUxf,KAAKmR,MAAM+O,UACrBzC,UAAW,yBACbF,QAAQ,kBASbL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfuF,sBAAsB,IAAIC,0BAA0B,IAAIC,YAAY,GAAGC,YAAY,GAAG5E,MAAQ,UAAU6E,IAAI,SAASvkB,EAAQU,EAAOJ,GACvI,YAiCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GArCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQkkB,QAAUlkB,EAAQmkB,YAAczf,MAExC,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,aAElB0hB,EAAWje,EAAuBge,GAElChb,EAASzG,EAAQ,eAEjBuG,EAAU9C,EAAuBgD,GAEjCC,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,2BAEpB8H,EAAarE,EAAuBwE,GAEpCyc,EAAS1kB,EAAQ,qBAEjB2kB,EAAUlhB,EAAuBihB,GAejCD,EAAcnkB,EAAQmkB,YAAc,SAAU5F,GAGhD,QAAS4F,KACP,GAAIG,GAEAC,EAAOnf,EAAOof,CAElBjhB,GAAgBnC,KAAM+iB,EAEtB,KAAK,GAAIM,GAAO/iB,UAAUxB,OAAQsB,EAAOC,MAAMgjB,GAAOC,EAAO,EAAUD,EAAPC,EAAaA,IAC3EljB,EAAKkjB,GAAQhjB,UAAUgjB,EAGzB,OAAeH,GAASnf,EAAQoY,EAA2Bpc,MAAOkjB,EAAwBngB,OAAOqa,eAAe2F,IAAclkB,KAAK4B,MAAMyiB,GAAwBljB,MAAMX,OAAOe,KAAiB4D,EAAMgD,OAAS,WAC5MhD,EAAMtB,MAAMsE,OAAOhD,EAAMtB,MAAM6gB,QAD1BH,EAEJD,EAAQ/G,EAA2BpY,EAAOof,GAsC/C,MArDA9G,GAAUyG,EAAa5F,GAmBvB5a,EAAawgB,IACX9f,IAAK,eAILG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8gB,YAAcxjB,KAAK0C,MAAM6gB,MAClCvjB,KAAK0C,MAAM8c,SACN,8CAEA,iCAEAxf,KAAK0C,MAAM8c,SACb,8BAEA,oBAIXvc,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,UACEwJ,KAAM,SACNH,UAAWzd,KAAK0d,eAChB8B,SAAUxf,KAAK0C,MAAM8c,SACrB3B,QAAS7d,KAAKgH,QAChBiW,EAAAA,WAAgB7I,cAAc,OAASmK,IAAK1Z,EAAAA,WAAgBC,IAAI,aAAe9E,KAAK0C,MAAM6gB,aAMzFR,GACP9F,EAAAA,WAAgBc,WAEd+E,EAAUlkB,EAAQkkB,QAAU,SAAUW,GAGxC,QAASX,KAGP,MAFA3gB,GAAgBnC,KAAM8iB,GAEf1G,EAA2Bpc,KAAM+C,OAAOqa,eAAe0F,GAASriB,MAAMT,KAAMM,YA0CrF,MA/CAgc,GAAUwG,EAASW,GAQnBlhB,EAAaugB,IACX7f,IAAK,SACLG,MAAO,WACL,GAAIsgB,GAAS1jB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,mBACbR,EAAAA,WAAgB7I,cACd,KACA,KACApU,KAAK0C,MAAMlB,MAEbyb,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,2BACZ,EAAGwF,EAAAA,YAAiBjjB,KAAK0C,MAAMihB,OAAQ,EAAG,MAAMC,IAAI,SAAUC,EAAKtlB,GAClE,MAAO0e,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,MAAOxa,IAAK1E,GACzBslB,EAAID,IAAI,SAAUhgB,EAAMrF,GACtB,MAAO0e,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,WAAYxa,IAAK1E,GAC9BqF,EAAOqZ,EAAAA,WAAgB7I,cAAc2O,GAAeQ,MAAO3f,EACzD4b,SAAUkE,EAAOhhB,MAAM8c,SACvBxY,OAAQ0c,EAAOhhB,MAAMsE,OACrBwc,UAAWE,EAAOhhB,MAAM8gB,YAAevG,EAAAA,WAAgB7I,cAAc,OAASqJ,UAAW,6BAWpGqF,GACP7F,EAAAA,WAAgBc,WAEdb,EAAS,SAAU4G,GAGrB,QAAS5G,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAI6G,GAAS3H,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GA2CvF,OAzCAqhB,GAAO/c,OAAS,SAAUuc,GACxBQ,EAAOpK,UACL6J,UAAWD,KAIfQ,EAAOC,KAAO,WACZ,MAAID,GAAO5S,MAAM+O,WACR,GAGT6D,EAAOpK,UACLuG,WAAa,QAGfvb,GAAAA,WAAe2b,KAAKyD,EAAOrhB,MAAMkJ,KAAK2U,QAAQC,QAC5CA,OAAQ,YACR+C,MAAOQ,EAAO5S,MAAMqS,YACnB5C,KAAK,SAAUqD,GAChBF,EAAOpK,UACLuG,WAAa,IAGf9Z,EAAAA,WAAmB2a,QAAQkD,EAASjD,QACpC+C,EAAOrhB,MAAMoe,WAAWmD,EAAS3F,YAAa2F,EAAS9N,UACtD,SAAU8K,GACc,MAArBA,EAAUC,QACZ9a,EAAAA,WAAmBoL,MAAMyP,EAAUD,QACnC+C,EAAOpK,UACLuG,WAAa,KAGf6D,EAAOrhB,MAAMye,UAAUF,OAK7B8C,EAAO5S,OACLqS,UAAa,KACbtD,WAAa,GAER6D,EA6DT,MA7GAzH,GAAUY,EAAQ4G,GAqDlBvhB,EAAa2a,IACXja,IAAK,SAILG,MAAO,WACL,GAAI8gB,GAASlkB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,mCACbzd,KAAK0C,MAAMyT,QAAQgO,UAAUP,IAAI,SAAUhgB,EAAMrF,GAC/C,MAAO0e,GAAAA,WAAgB7I,cAAc0O,GAAWthB,KAAMoC,EAAKpC,KACzDmiB,OAAQ/f,EAAK+f,OACbH,UAAWU,EAAO/S,MAAMqS,UACxBhE,SAAU0E,EAAO/S,MAAM+O,UACvBlZ,OAAQkd,EAAOld,OACf/D,IAAK1E,OAGX0e,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEnC,QAAS7d,KAAKgkB,KACdvE,QAASzf,KAAKmR,MAAM+O,UACpBV,UAAWxf,KAAKmR,MAAMqS,UACtB/F,UAAW,yBACbzd,KAAKmR,MAAMqS,UAAYjG,QAAQ,eAAiBA,QAAQ,kBAE1DN,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEnC,QAAS7d,KAAK0C,MAAM8f,UACpBhD,SAAUxf,KAAKmR,MAAM+O,UACrBzC,UAAW,yBACbF,QAAQ,mBAUfL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfkH,cAAc,IAAI3B,sBAAsB,IAAIC,0BAA0B,IAAI2B,oBAAoB,IAAIzB,YAAY,GAAG5E,MAAQ,UAAUsG,IAAI,SAAShmB,EAAQU,EAAOJ,GAClK,YAgCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC8C,EAAUxhB,EAAQ,aAElBimB,EAAWxiB,EAAuB+d,GAElCC,EAAUzhB,EAAQ,aAElB0hB,EAAWje,EAAuBge,GAElCV,EAAU/gB,EAAQ,aAElBghB,EAAWvd,EAAuBsd,GAElCra,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,2BAEpB8H,EAAarE,EAAuBwE,GAYpC2W,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAatF,OAXAsB,GAAMwgB,YAAc,WAClBxgB,EAAMygB,QAAQ,aAGhBzgB,EAAM0gB,aAAe,WACnB1gB,EAAMygB,QAAQ,cAGhBzgB,EAAMmN,OACJ+O,WAAa,GAERlc,EA+KT,MAjMAsY,GAAUY,EAAQC,GAqBlB5a,EAAa2a,IACXja,IAAK,UACLG,MAAO,SAAiB+c,GACtB,GAAIuB,GAAS1hB,IAEb,OAAIA,MAAKmR,MAAM+O,WACN,GAGTlgB,KAAK2Z,UACHuG,WAAa,QAGfvb,GAAAA,WAAe2b,KAAKtgB,KAAK0C,MAAMkJ,KAAK2U,QAAQC,QAC1CA,OAAQL,IACPS,KAAK,SAAUqD,GAChBvC,EAAO/H,UACLuG,WAAa,IAGf9Z,EAAAA,WAAmB2a,QAAQkD,EAASjD,QACpCU,EAAOhf,MAAMoe,WAAWmD,EAAS3F,YAAa2F,EAAS9N,UACtD,SAAU8K,GACc,MAArBA,EAAUC,QACZ9a,EAAAA,WAAmBoL,MAAMyP,EAAUD,QACnCU,EAAO/H,UACLuG,WAAa,KAGfwB,EAAOhf,MAAMye,UAAUF,SAQ7Bhe,IAAK,oBAILG,MAAO,WACL,MAAIpD,MAAK0C,MAAMyT,QAAQwO,SAEd1H,EAAAA,WAAgB7I,cACrB4L,EAAAA,YACEnC,QAAS7d,KAAKwkB,YACdhF,SAAUxf,KAAKmR,MAAM+O,UACrBzC,UAAW,6CACbF,QAAQ,yBAID,QAIbta,IAAK,gBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMyT,QAAQkL,SAEdpE,EAAAA,WAAgB7I,cACrB4L,EAAAA,YACEnC,QAAS7d,KAAK0C,MAAMkiB,SACpBpF,SAAUxf,KAAKmR,MAAM+O,UACrBzC,UAAW,yCACbF,QAAQ,2BAID,QAIbta,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMyT,QAAQiK,OAEdnD,EAAAA,WAAgB7I,cACrB4L,EAAAA,YACEnC,QAAS7d,KAAK0C,MAAMmiB,WACpBrF,SAAUxf,KAAKmR,MAAM+O,UACrBzC,UAAW,2CACbF,QAAQ,qBAID,QAIbta,IAAK,mBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMyT,QAAQgO,UAEdlH,EAAAA,WAAgB7I,cACrB4L,EAAAA,YACEnC,QAAS7d,KAAK0C,MAAMoiB,YACpBtF,SAAUxf,KAAKmR,MAAM+O,UACrBzC,UAAW,4CACbF,QAAQ,6BAID,QAIbta,IAAK,mBACLG,MAAO,WAEL,GAAI2hB,IACF1G,GAAIre,KAAK0C,MAAMkJ,KAAKyS,GACpBC,YAAate,KAAK0C,MAAMyT,QAAQmI,YAIlC,OAAIte,MAAKmR,MAAM+O,UAENjD,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAMmZ,EAAY5G,KAAM,QAC1ElB,EAAAA,WAAgB7I,cAAckL,EAAAA,WAAkB,OAKzCrC,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,kBACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAMmZ,EAAY5G,KAAM,YAMlFlb,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,iCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,YACbzd,KAAKglB,oBAEP/H,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,YACbzd,KAAKilB,oBACLhI,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEnC,QAAS7d,KAAK0kB,aACdlF,SAAUxf,KAAKmR,MAAM+O,UACrBzC,UAAW,6CACbF,QAAQ,kCAEVvd,KAAKklB,gBACLllB,KAAKmlB,kBACLnlB,KAAKolB,0BAQRlI,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfuF,sBAAsB,IAAIC,0BAA0B,IAAIC,YAAY,GAAGC,YAAY,GAAGyC,YAAY,GAAGrH,MAAQ,UAAUsH,IAAI,SAAShnB,EAAQU,EAAOJ,GACtJ,YA4CA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA6Mje,QAASxV,GAAOmK,GACd,OACEvF,KAAQuF,EAAM0L,KAAKjR,MA/PvB,GAAIrJ,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ2mB,kBAAoBjiB,OAC5B1E,EAAQoI,OAASA,CAEjB,IAAIgW,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCjY,EAASzG,EAAQ,WAEjBuG,EAAU9C,EAAuBgD,GAEjCygB,EAAQlnB,EAAQ,UAEhBmnB,EAAS1jB,EAAuByjB,GAEhCE,EAAUpnB,EAAQ,YAElBqnB,EAAW5jB,EAAuB2jB,GAElCE,EAAWtnB,EAAQ,aAEnBunB,EAAY9jB,EAAuB6jB,GAEnCE,EAAexnB,EAAQ,mBAEvBynB,EAAgBhkB,EAAuB+jB,GAEvC3Y,EAAS7O,EAAQ,wBAEjB0G,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCW,EAASrH,EAAQ,wBAEjBgH,EAAUvD,EAAuB4D,GAiBjC4f,EAAoB3mB,EAAQ2mB,kBAAoB,SAAUpI,GAG5D,QAASoI,KAGP,MAFApjB,GAAgBnC,KAAMulB,GAEfnJ,EAA2Bpc,KAAM+C,OAAOqa,eAAemI,GAAmB9kB,MAAMT,KAAMM,YA6C/F,MAlDAgc,GAAUiJ,EAAmBpI,GAQ7B5a,EAAagjB,IACXtiB,IAAK,iBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMsjB,OAEN/I,EAAAA,WAAgB7I,cAAc,KAAOuK,yBAA2BC,OAAQ5e,KAAK0C,MAAMsjB,UAGjF,QAIb/iB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,0BAGJR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAK0C,MAAMgR,SAEb1T,KAAKimB,uBAONV,GACPtI,EAAAA,WAAgBc,WAEdb,EAAS,SAAUuG,GAGrB,QAASvG,KACP,GAAIgG,GAEAC,EAAOzB,EAAQ0B,CAEnBjhB,GAAgBnC,KAAMkd,EAEtB,KAAK,GAAImG,GAAO/iB,UAAUxB,OAAQsB,EAAOC,MAAMgjB,GAAOC,EAAO,EAAUD,EAAPC,EAAaA,IAC3EljB,EAAKkjB,GAAQhjB,UAAUgjB,EAGzB,OAAeH,GAASzB,EAAStF,EAA2Bpc,MAAOkjB,EAAwBngB,OAAOqa,eAAeF,IAASre,KAAK4B,MAAMyiB,GAAwBljB,MAAMX,OAAOe,KAAkBshB,EAAOP,UAAY,SAAU3P,GACvNkQ,EAAO/H,UACLnI,MAAOA,KAERkQ,EAAOc,UAAY,WACpBd,EAAO/H,UACL7R,UAAajD,EAAAA,cAEd6c,EAAOmD,WAAa,WACrBnD,EAAO/H,UACL7R,UAAa6d,EAAAA,cAEdjE,EAAOkD,SAAW,WACnBlD,EAAO/H,UACL7R,UAAa2d,EAAAA,cAEd/D,EAAOoD,YAAc,WACtBpD,EAAO/H,UACL7R,UAAa+d,EAAAA,cAEdnE,EAAOwE,aAAe,SAAUC,EAAYhQ,GAC7C7Q,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOiZ,cAAc1E,EAAOhf,MAAMkJ,KAAMua,IAErEzE,EAAO/H,UACL7R,UAAajD,EAAAA,WACbsR,QAASA,KAzBNiN,EA2BJD,EAAQ/G,EAA2BsF,EAAQ0B,GAiGhD,MAzIA9G,GAAUY,EAAQuG,GA2ClBlhB,EAAa2a,IACXja,IAAK,oBACLG,MAAO,WACL,GAAIsgB,GAAS1jB,IAEb2E,GAAAA,WAAeG,IAAI9E,KAAK0C,MAAMkJ,KAAK2U,QAAQC,QAAQI,KAAK,SAAUzK,GAChEuN,EAAO/J,UACL7R,UAAajD,EAAAA,WACbsR,QAAWA,EACX3E,MAAS,QAEV,SAAUyP,GACXyC,EAAOvC,UAAUF,QAOrBhe,IAAK,UAILG,MAAO,WACL,MAAIpD,MAAKmR,MACHnR,KAAKmR,MAAMK,MAENyL,EAAAA,WAAgB7I,cAAcmR,GAAqB7R,QAAS1T,KAAKmR,MAAMK,MAAMwP,OAClFgF,OAAQhmB,KAAKmR,MAAMK,MAAMwU,SAIlB/I,EAAAA,WAAgB7I,cAAcpU,KAAKmR,MAAMrJ,WAAaqO,QAASnW,KAAKmR,MAAMgF,QAC/EvK,KAAM5L,KAAK0C,MAAMkJ,KACjBkV,WAAY9gB,KAAKkmB,aACjB/E,UAAWnhB,KAAKmhB,UAChBqB,UAAWxiB,KAAKwiB,UAChBoC,SAAU5kB,KAAK4kB,SACfC,WAAY7kB,KAAK6kB,WACjBC,YAAa9kB,KAAK8kB,cAKf7H,EAAAA,WAAgB7I,cAAc2R,EAAAA,WAAuB,SAKlE9iB,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKmR,OAASnR,KAAKmR,MAAMK,MACpB,iDAEA,sCAIXvO,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,eAChB2I,KAAM,YACRpJ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,QAAS6I,eAAgB,QACpDC,aAAchJ,QAAQ,UACxBN,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,QACjB,MAGJvJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,wBAGZvd,KAAKymB,gBAONvJ,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAOfwJ,uBAAuB,IAAIjE,sBAAsB,IAAIkE,uBAAuB,IAAIC,kBAAkB,GAAGC,SAAS,GAAGC,YAAY,GAAGC,UAAU,GAAGC,WAAW,GAAGhJ,MAAQ,UAAUiJ,IAAI,SAAS3oB,EAAQU,EAAOJ,GAC5M,YAgCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCwI,EAAQlnB,EAAQ,UAEhBmnB,EAAS1jB,EAAuByjB,GAEhCzF,EAAUzhB,EAAQ,aAElB0hB,EAAWje,EAAuBge,GAElC/a,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,2BAEpB8H,EAAarE,EAAuBwE,GAEpC2gB,EAAY5oB,EAAQ,yBAEpB6oB,EAAaplB,EAAuBmlB,GAapChK,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAuDtF,OArDAsB,GAAMojB,SAAW,WACf3e,SAASC,eAAe,wBAAwB2e,SAGlDrjB,EAAMsjB,WAAa,WACjB,GAAI/D,GAAQ9a,SAASC,eAAe,wBAAwB6e,MAAM,GAE9DC,EAAkBxjB,EAAMyjB,aAAalE,EACzC,IAAIiE,EAEF,WADAphB,GAAAA,WAAmBoL,MAAMgW,EAI3BxjB,GAAM2V,UACJ4J,MAAOA,EACPmE,QAAWC,IAAIC,gBAAgBrE,GAC/BsE,SAAY,GAGd,IAAIhH,GAAO,GAAIiH,SACfjH,GAAKkH,OAAO,SAAU,UACtBlH,EAAKkH,OAAO,QAASxE,GAErB5e,EAAAA,WAAeyb,OAAOpc,EAAMtB,MAAMkJ,KAAK2U,QAAQC,OAAQK,EAAM,SAAUgH,GACrE7jB,EAAM2V,UACJkO,SAAUA,MAEXjH,KAAK,SAAUC,GAChB7c,EAAM2V,UACJxD,QAAW0K,EAAK1K,QAChB6R,SAAYnH,EAAKG,SAEnB5a,EAAAA,WAAmB6hB,KAAK1K,QAAQ,2DAC/B,SAAU0D,GACc,MAArBA,EAAUC,QACZ9a,EAAAA,WAAmBoL,MAAMyP,EAAUD,QACnChd,EAAM2V,UACJuG,WAAa,EACbqD,MAAS,KACTsE,SAAY,KAGd7jB,EAAMtB,MAAMye,UAAUF,MAK5Bjd,EAAMmN,OACJoS,MAAS,KACTmE,QAAW,KACXG,SAAY,EACZG,SAAY,MAEPhkB,EAoKT,MAhOAsY,GAAUY,EAAQC,GA+DlB5a,EAAa2a,IACXja,IAAK,eACLG,MAAO,SAAsBmgB,GAC3B,GAAIA,EAAMpF,KAAOne,KAAK0C,MAAMyT,QAAQiK,OAAO8H,MACzC,MAAO5K,aAAYC,QAAQ,6CACzB4K,UAAa,EAAGhB,EAAAA,YAAoB5D,EAAMpF,QACzC,EAGL,IAAIiK,GAAiB7K,QAAQ,uCAC7B,IAAyE,KAArEvd,KAAK0C,MAAMyT,QAAQiK,OAAOiI,mBAAmBrU,QAAQuP,EAAM3F,MAC7D,MAAOwK,EAGT,IAAIE,IAAiB,EACjBC,EAAkBhF,EAAM/hB,KAAKgnB,aAOjC,OANAxoB,MAAK0C,MAAMyT,QAAQiK,OAAOqI,mBAAmB7E,IAAI,SAAU8E,GACrDH,EAAgB3Q,OAA0B,GAAnB8Q,EAAU5pB,UAAiB4pB,IACpDJ,GAAiB,KAIhBA,GAIE,EAHEF,KASXnlB,IAAK,wBAILG,MAAO,SAA+B+S,GACpC,GAAIwS,GAAaxS,EAAQsS,mBAAmB7E,IAAI,SAAU8E;AACxD,MAAOA,GAAU9Q,OAAO,IAG1B,OAAO0F,aAAYC,QAAQ,2CACzBgK,MAASoB,EAAWlH,KAAK,MACzByG,OAAU,EAAGf,EAAAA,YAAoBhR,EAAQ+R,SACxC,MAGLjlB,IAAK,kBACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,gBACXI,QAAS7d,KAAKonB,UAChBnK,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACb,SAEFF,QAAQ,gBAEVN,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,cACbzd,KAAK4oB,sBAAsB5oB,KAAK0C,MAAMyT,QAAQiK,aAMpDnd,IAAK,yBACLG,MAAO,WACL,MAAOka,aAAYC,QAAQ,4BACzBsK,SAAY7nB,KAAKmR,MAAM0W,WACtB,MAGL5kB,IAAK,oBACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,mBACbR,EAAAA,WAAgB7I,cAAc,OAASmK,IAAKve,KAAKmR,MAAMuW,UACvDzK,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,YACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,eAAgB4I,KAAM,cACjCwC,gBAAiB,wBACjBC,gBAAiB,IAAKC,gBAAiB,MACvCC,OAASrH,MAAO3hB,KAAKmR,MAAM0W,SAAW,MACxC5K,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,WACbzd,KAAKipB,iCASjBhmB,IAAK,eACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAC7CS,GAAI,uBACJZ,UAAW,qBACXyL,SAAUlpB,KAAKsnB,aACjBtnB,KAAKmR,MAAMoS,MAAQvjB,KAAKmpB,oBAAsBnpB,KAAKmlB,kBACnDlI,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEnC,QAAS7d,KAAK0C,MAAM8f,UACpBhD,WAAYxf,KAAKmR,MAAMoS,MACvB9F,UAAW,yBACbF,QAAQ,iBAQlBta,IAAK,aACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cAAcqR,EAAAA,YAAkBtP,QAASnW,KAAKmR,MAAMgF,QACzEvK,KAAM5L,KAAK0C,MAAMkJ,KACjBwU,OAAQpgB,KAAKmR,MAAM6W,SACnBlH,WAAY9gB,KAAK0C,MAAMoe,WACvBK,UAAWnhB,KAAK0C,MAAMye,UACtBqB,UAAWxiB,KAAK0C,MAAM8f,eAI1Bvf,IAAK,SACLG,MAAO,WAEL,MAAOpD,MAAKmR,MAAM6W,SAAWhoB,KAAKopB,aAAeppB,KAAKqpB,mBAKnDnM,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfuF,sBAAsB,IAAIC,0BAA0B,IAAI4G,wBAAwB,IAAI1G,YAAY,GAAGiE,SAAS,GAAG7I,MAAQ,UAAUuL,IAAI,SAASjrB,EAAQU,EAAOJ,GAChK,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAuHpF,MA5HAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,cACLG,MAAO,WACL,MAAwC,mBAA1BpD,MAAK0C,MAAM8mB,cAG3BvmB,IAAK,eACLG,MAAO,WACL,GAAIqa,GAAY,YAShB,OARIzd,MAAKypB,gBACPhM,GAAa,gBAEXA,GAD4B,OAA1Bzd,KAAK0C,MAAM8mB,WACA,eAEA,cAGV/L,KAGTxa,IAAK,cACLG,MAAO,WACL,GAAIse,GAAS1hB,IAEb,OAAIA,MAAK0C,MAAM8mB,WAENvM,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,qBACbzd,KAAK0C,MAAM8mB,WAAW5F,IAAI,SAAUpS,EAAOjT,GACzC,MAAO0e,GAAAA,WAAgB7I,cACrB,KACEnR,IAAKye,EAAOhf,MAAPgf,OAAmB,eAAiBnjB,GAC3CiT,MAMG,QAIbvO,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAKypB,cAEAxM,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,sCACX+I,cAAe,OAAQvjB,IAAKjD,KAAK0C,MAAL1C,OAAiB,gBAC/CA,KAAK0C,MAAM8mB,WAAa,QAAU,SAI3B,QAIbvmB,IAAK,yBACLG,MAAO,WACL,MAAIpD,MAAKypB,cAEAxM,EAAAA,WAAgB7I,cACrB,QACEiK,GAAIre,KAAK0C,MAAL1C,OAAiB,UAAWyd,UAAW,WAC7Czd,KAAK0C,MAAM8mB,WAAajM,QAAQ,WAAaA,QAAQ,cAI9C,QAIbta,IAAK,cACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMgnB,SAENzM,EAAAA,WAAgB7I,cACrB,KACEqJ,UAAW,cACbzd,KAAK0C,MAAMgnB,UAIJ,QAIbzmB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,gBAClBT,EAAAA,WAAgB7I,cACd,SACEqJ,UAAW,kBAAoBzd,KAAK0C,MAAMinB,YAAc,IACxDC,QAAS5pB,KAAK0C,MAAL1C,QAAkB,IAC7BA,KAAK0C,MAAMmnB,MAAQ,KAErB5M,EAAAA,WAAgB7I,cACd,OACEqJ,UAAWzd,KAAK0C,MAAMonB,cAAgB,IACxC9pB,KAAK0C,MAAMgd,SACX1f,KAAK+pB,kBACL/pB,KAAKgqB,yBACLhqB,KAAKiqB,cACLjqB,KAAKkqB,cACLlqB,KAAK0C,MAAMynB,OAAS,WAOrBjN,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAUoM,IAAI,SAAS9rB,EAAQU,EAAOJ,GACjD,YAkBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASqoB,GAAgBroB,EAAKiB,EAAKG,GAAiK,MAApJH,KAAOjB,GAAOe,OAAOC,eAAehB,EAAKiB,GAAOG,MAAOA,EAAOR,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBd,EAAIiB,GAAOG,EAAgBpB,EAE3M,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAxBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCsN,EAAchsB,EAAQ,uBAEtBiI,EAAYjI,EAAQ,wBAEpB8H,EAAarE,EAAuBwE,GAcpCgkB,GAAoB,EAAGD,EAAYE,YAEnCtN,EAAS,SAAUC,GAGrB,QAASD,KACP,GAAIgG,GAEAC,EAAOnf,EAAOof,CAElBjhB,GAAgBnC,KAAMkd,EAEtB,KAAK,GAAImG,GAAO/iB,UAAUxB,OAAQsB,EAAOC,MAAMgjB,GAAOC,EAAO,EAAUD,EAAPC,EAAaA,IAC3EljB,EAAKkjB,GAAQhjB,UAAUgjB,EAGzB,OAAeH,GAASnf,EAAQoY,EAA2Bpc,MAAOkjB,EAAwBngB,OAAOqa,eAAeF,IAASre,KAAK4B,MAAMyiB,GAAwBljB,MAAMX,OAAOe,KAAiB4D,EAAMymB,UAAY,SAAUjpB,GACpN,MAAO,UAAU+Q,GACf,GAAImY,GAAWL,KAAoB7oB,EAAM+Q,EAAM9P,OAAOW,OAElDunB,EAAa3mB,EAAMmN,MAAMyZ,UAC7BD,GAAWnpB,GAAQwC,EAAM6mB,cAAcrpB,EAAMkpB,EAASlpB,IACtDkpB,EAASE,OAASD,EAElB3mB,EAAM2V,SAAS+Q,KAEhB1mB,EAAM8mB,aAAe,SAAUvY,GAGhC,GADAA,EAAMwY,kBACF/mB,EAAMmN,MAAM+O,WAIZlc,EAAMgnB,QAAS,CACjBhnB,EAAM2V,UAAWuG,WAAW,GAC5B,IAAI+K,GAAUjnB,EAAMknB,MAEhBD,GACFA,EAAQrK,KAAK,SAAUG,GACrB/c,EAAM2V,UAAWuG,WAAW,IAC5Blc,EAAMmnB,cAAcpK,IACnB,SAAUE,GACXjd,EAAM2V,UAAWuG,WAAW,IAC5Blc,EAAMonB,YAAYnK,KAGpBjd,EAAM2V,UAAWuG,WAAW,MA9B3BkD,EAiCJD,EAAQ/G,EAA2BpY,EAAOof,GAgI/C,MA9KA9G,GAAUY,EAAQC,GAiDlB5a,EAAa2a,IACXja,IAAK,WACLG,MAAO,WACL,GAAIwnB,KACJ,KAAK5qB,KAAKmR,MAAMka,WACd,MAAOT,EAGT,IAAIS,IACFb,SAAUxqB,KAAKmR,MAAMka,WAAWb,UAAYxqB,KAAKmR,MAAMka,WACvDC,SAAUtrB,KAAKmR,MAAMka,WAAWC,cAG9BC,IAGJ,KAAK,GAAI/pB,KAAQ6pB,GAAWb,SACtBa,EAAWb,SAAS5a,eAAepO,IAAS6pB,EAAWb,SAAShpB,IAClE+pB,EAAgBhrB,KAAKiB,EAKzB,KAAK,GAAIA,KAAQ6pB,GAAWC,SACtBD,EAAWC,SAAS1b,eAAepO,IAAS6pB,EAAWC,SAAS9pB,IAClE+pB,EAAgBhrB,KAAKiB,EAKzB,KAAK,GAAIjD,KAAKgtB,GAAiB,CAC7B,GAAI/pB,GAAO+pB,EAAgBhtB,GACvBitB,EAAcxrB,KAAK6qB,cAAcrpB,EAAMxB,KAAKmR,MAAM3P,GAElC,QAAhBgqB,EACFZ,EAAOppB,GAAQ,KACNgqB,IACTZ,EAAOppB,GAAQgqB,GAInB,MAAOZ,MAGT3nB,IAAK,UACLG,MAAO,WACL,GAAIwnB,GAAS5qB,KAAKyrB,UAClB,KAAK,GAAIC,KAASd,GAChB,GAAIA,EAAOhb,eAAe8b,IACF,OAAlBd,EAAOc,GACT,OAAO,CAKb,QAAO,KAGTzoB,IAAK,gBACLG,MAAO,SAAuB5B,EAAM4B,GAClC,GAAIwnB,KACJ,KAAK5qB,KAAKmR,MAAMka,WACd,MAAOT,EAGT,IAAIS,IACFb,UAAWxqB,KAAKmR,MAAMka,WAAWb,UAAYxqB,KAAKmR,MAAMka,YAAY7pB,GACpE8pB,UAAWtrB,KAAKmR,MAAMka,WAAWC,cAAgB9pB,IAG/CmqB,EAAgBpB,EAAiBnnB,KAAU,CAE/C,IAAIioB,EAAWb,SAAU,CACvB,GAAImB,EACFf,GAAUe,OAEV,KAAK,GAAIptB,KAAK8sB,GAAWb,SAAU,CACjC,GAAIhD,GAAkB6D,EAAWb,SAASjsB,GAAG6E,EACzCokB,IACFoD,EAAOrqB,KAAKinB,GAKlB,MAAOoD,GAAO9rB,OAAS8rB,EAAS,KAC3B,GAAIe,KAAkB,GAASN,EAAWC,SAAU,CACzD,IAAK,GAAI/sB,KAAK8sB,GAAWC,SAAU,CACjC,GAAI9D,GAAkB6D,EAAWC,SAAS/sB,GAAG6E,EACzCokB,IACFoD,EAAOrqB,KAAKinB,GAIhB,MAAOoD,GAAO9rB,OAAS8rB,EAAS,KAGlC,OAAO,KAMT3nB,IAAK,QACLG,MAAO,WACL,OAAO,KAGTH,IAAK,OACLG,MAAO,WACL,MAAO,SAGTH,IAAK,gBACLG,MAAO,SAAuB2d,OAI9B9d,IAAK,cAGLG,MAAO,SAAqB6d,GAC1B7a,EAAAA,WAAmBwlB,SAAS3K,OAIzB/D,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf2O,uBAAuB,IAAIC,sBAAsB,IAAI9N,MAAQ,UAAU+N,IAAI,SAASztB,EAAQU,EAAOJ,GACtG,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAkCpF,MAvCAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,WACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMuQ,KACkD,IAAxDxK,SAASoK,SAASM,SAASa,QAAQhU,KAAK0C,MAAMuQ,OAE9C,KAIXhQ,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKgsB,YACChsB,KAAK0C,MAAM+a,WAAa,IAAM,KAAOzd,KAAK0C,MAAMupB,iBAAmB,UAEpEjsB,KAAK0C,MAAM+a,WAAa,MAInCxa,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAWzd,KAAK0d,gBAClB1d,KAAK0C,MAAMgd,cAMVxC,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAUkO,IAAI,SAAS5tB,EAAQU,EAAOJ,GACjD,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAgBpF,MArBAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0C,MAAM+a,WAAa,UACrCR,EAAAA,WAAgB7I,cAAc,OAASqJ,UAAW,+BAMjDP,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAUmO,IAAI,SAAS7tB,EAAQU,EAAOJ,GACjD,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCqC,EAAU/gB,EAAQ,YAElBghB,EAAWvd,EAAuBsd,GAYlCnC,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAgBpF,MArBAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,2BACbR,EAAAA,WAAgB7I,cAAckL,EAAAA,WAAkB,WAM/CpC,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf0C,WAAW,GAAG5B,MAAQ,UAAUoO,IAAI,SAAS9tB,EAAQU,EAAOJ,GAC/D,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCqP,EAAgB/tB,EAAQ,mBAExBguB,EAAiBvqB,EAAuBsqB,GAUxCnP,EAAS,SAAUqP,GAGrB,QAASrP,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAiDpF,MAtDAgc,GAAUY,EAAQqP,GAQlBhqB,EAAa2a,IACXja,IAAK,cACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMgnB,SAENzM,EAAAA,WAAgB7I,cACrB,KACEqJ,UAAW,cACbzd,KAAK0C,MAAMgnB,UAIJ,QAIbzmB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACbzd,KAAK0C,MAAM8pB,MAAQ,iBAGvBvP,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAK0C,MAAMgR,SAEb1T,KAAKkqB,oBAONhN,GACPoP,EAAAA,WAEF1tB,GAAAA,WAAkBse,IAEfuP,kBAAkB,GAAGzO,MAAQ,UAAU0O,IAAI,SAASpuB,EAAQU,EAAOJ,GACtE,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC2P,EAAeruB,EAAQ,sBAEvBsuB,EAAgB7qB,EAAuB4qB,GAYvCzP,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAyBpF,MA9BAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,qBAGZN,EAAAA,WAAgB7I,cAAcwY,EAAAA,WAAuB,WAMpD1P,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf2P,qBAAqB,GAAG7O,MAAQ,UAAU8O,IAAI,SAASxuB,EAAQU,EAAOJ,GACzE,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCqP,EAAgB/tB,EAAQ,uBAExBguB,EAAiBvqB,EAAuBsqB,GAYxCnP,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAmCpF,MAxCAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,cACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMyT,QAAQ4W,QACdzP,YAAYC,QAAQ,8DAAgEyP,YAAehtB,KAAK0C,MAAMyT,QAAQ4W,QAAQ9N,YAAa,GAE3I1B,QAAQ,+CAInBta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,qBAGZN,EAAAA,WAAgB7I,cAAckY,EAAAA,YAA0B5Y,QAAS6J,QAAQ,iDACvEmM,SAAU1pB,KAAKkqB,qBAMhBhN,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf+P,sBAAsB,GAAGjP,MAAQ,UAAUkP,IAAI,SAAS5uB,EAAQU,EAAOJ,GAC1E,YAoCA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA1Cje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,gBAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,cAEhBgvB,EAASvrB,EAAuBsrB,GAEhCE,EAAajvB,EAAQ,oBAErBkvB,EAAczrB,EAAuBwrB,GAErCvoB,EAAQ1G,EAAQ,0BAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,8BAEpB8H,EAAarE,EAAuBwE,GAEpC+jB,EAAchsB,EAAQ,6BAEtB+sB,EAAa8B,EAAwB7C,GAcrCpN,EAAS,SAAUuQ,GAGrB,QAASvQ,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAetF,OAbAsB,GAAMmN,OACJqM,SAAU,GAEV6N,YACE7N,UAAW6N,EAAWqC,kBAAmBrC,EAAWsC,mBAClDC,oBAAqBlrB,EAAMyT,QAAQ0X,aACjCxC,EAAWyC,mBACbC,oBAAqBrrB,EAAMyT,QAAQ6X,eAIvC9N,WAAW,GAENlc,EAqHT,MAzIAsY,GAAUY,EAAQuQ,GAuBlBlrB,EAAa2a,IACXja,IAAK,cACLG,MAAO,WACL,GAAI6qB,KAEJ,IAAIjuB,KAAK0C,MAAMyT,QAAQ+X,aAAe,EAAG,CACvC,GAAIxa,GAAUya,SAAS,2DAA4D,4DAA6DnuB,KAAK0C,MAAMyT,QAAQ+X,aAEnKD,GAAQ1tB,KAAK+c,YAAY5J,GACvBwa,aAAgBluB,KAAK0C,MAAMyT,QAAQ+X,eAClC,IAGL,GAAIluB,KAAK0C,MAAMkJ,KAAKwiB,IAAIC,oBAAsB,EAAG,CAC/C,GAAI3a,GAAUya,SAAS,yDAA0D,0DAA2DnuB,KAAK0C,MAAMkJ,KAAKwiB,IAAIC,oBAEhKJ,GAAQ1tB,KAAK+c,YAAY5J,GACvB2a,oBAAuBruB,KAAK0C,MAAMkJ,KAAKwiB,IAAIC,sBAC1C,IAGL,MAAOJ,GAAQnvB,OAASmvB,EAAQxM,KAAK,KAAO,QAG9Cxe,IAAK,QACLG,MAAO,WACL,GAAIwnB,GAAS5qB,KAAKyrB,UAClB,OAAIb,GAAOpN,UACTpX,EAAAA,WAAmBoL,MAAMoZ,EAAOpN,SAAS,KAClC,GACJxd,KAAKmR,MAAMqM,SAAS8Q,SAAWtuB,KAAK0C,MAAMkJ,KAAK4R,UAClDpX,EAAAA,WAAmB6hB,KAAK1K,QAAQ,+CACzB,IAEA,KAIXta,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKtgB,KAAK0C,MAAMkJ,KAAK2U,QAAQ/C,UACjDA,SAAYxd,KAAKmR,MAAMqM,cAI3Bva,IAAK,gBACLG,MAAO,SAAuB2d,GAC5B/gB,KAAK2Z,UACH6D,SAAY,KAGdxd,KAAK0C,MAAM6rB,SAASxN,EAAQvD,SAAUuD,EAAQyN,KAAMzN,EAAQ5K,YAG9DlT,IAAK,cACLG,MAAO,SAAqB6d,GAC1B7a,EAAAA,WAAmBwlB,SAAS3K,MAG9Bhe,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqa,SAAUzuB,KAAK8qB,aAAcrN,UAAW,mBAC1CR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,qBAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,gBAAiBmR,MAAO,cACvC/E,WAAY,WAAYG,aAAc,WACtCJ,SAAU1pB,KAAKkqB,eACjBjN,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQS,GAAI,cAAeZ,UAAW,eACnF+B,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAMqM,aAGxBP,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,cAAegC,QAASzf,KAAKmR,MAAM+O,WAChD3C,QAAQ,6BAWjBL,GACPoQ,EAAAA,WAEF1uB,GAAAA,WAAkBse,IAEfyR,yBAAyB,IAAIC,6BAA6B,IAAIC,4BAA4B,IAAIC,eAAe,GAAGC,aAAa,GAAGC,mBAAmB,GAAGhR,MAAQ,UAAUiR,IAAI,SAAS3wB,EAAQU,EAAOJ,GACvM,YAwDA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA5Dje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAIwH,GAAUtM,EAAQ,UAElBkM,EAAWzI,EAAuB6I,GAElCoS,EAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCkS,EAAe5wB,EAAQ,kBAEvB6wB,EAAgBptB,EAAuBmtB,GAEvCE,EAAc9wB,EAAQ,iBAEtB+wB,EAAettB,EAAuBqtB,GAEtC/B,EAAQ/uB,EAAQ,UAEhBgvB,EAASvrB,EAAuBsrB,GAEhCtgB,EAAmBzO,EAAQ,0BAE3BwO,EAAoB/K,EAAuBgL,GAE3ChI,EAASzG,EAAQ,kBAEjBuG,EAAU9C,EAAuBgD,GAEjCuqB,EAAoBhxB,EAAQ,sCAE5B6O,EAAS7O,EAAQ,2BAEjB0G,EAAQ1G,EAAQ,0BAEhBqG,EAAS5C,EAAuBiD,GAEhCiG,EAAa3M,EAAQ,gCAErByM,EAAchJ,EAAuBkJ,GAErC1E,EAAYjI,EAAQ,8BAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,2BAEjBgH,EAAUvD,EAAuB4D,GAgBjCuX,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAiBtF,OAfAsB,GAAM8c,WAAa,SAAUtD,EAAUgR,EAAMrY,GAC3CnS,EAAM2V,UACJxD,QAASA,IAGX7Q,EAAAA,WAAgB2G,UAAU,EAAGqjB,EAAkBC,gBAAiB/R,SAAUA,EAAUgR,KAAMA,GAAQxqB,EAAMtB,MAAMkJ,KAAM5H,EAAMtB,MAAMkJ,OAChItG,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOqiB,gBAAgBxrB,EAAMtB,MAAMkJ,KAAM4R,EAAUgR,IAEhFpoB,EAAAA,WAAmB2a,QAAQxD,QAAQ,kDAGrCvZ,EAAMmN,OACJse,UAAU,EACVtZ,QAAS,MAEJnS,EAqET,MA3FAsY,GAAUY,EAAQC,GAyBlB5a,EAAa2a,IACXja,IAAK,oBACLG,MAAO,WACL,GAAIse,GAAS1hB,IAEb+K,GAAAA,WAAoB2kB,KAClBhvB,MAAO6c,QAAQ,mBACfoS,OAAQpS,QAAQ,yBAGlBqS,QAAQC,KAAKlrB,EAAAA,WAAeG,IAAI9E,KAAK0C,MAAMkJ,KAAK2U,QAAQ/C,UAAW7Y,EAAAA,WAAeG,IAAID,EAAAA,WAAgBC,IAAI,yBAA2B8G,KAAM5L,KAAK0C,MAAMkJ,KAAKyS,OAAQuC,KAAK,SAAUC,GAChLvb,EAAAA,WAAgB2G,UAAU,EAAGqjB,EAAkBnjB,WAAW0U,EAAK,GAAGiP,UAElEpO,EAAO/H,UACL8V,UAAU,EACVtZ,SACE+X,aAAcrN,EAAK,GAAGqN,aACtBL,WAAYhN,EAAK,GAAGgN,WACpBG,WAAYnN,EAAK,GAAGmN,WACpBjB,QAASlM,EAAK,GAAGkM,SAAW,EAAGviB,EAAAA,YAAkBqW,EAAK,GAAGkM,SAAW,aAS5E9pB,IAAK,gBAILG,MAAO,WACL,MAAIpD,MAAKmR,MAAMse,SACTzvB,KAAKmR,MAAMgF,QAAQ+X,aAAe,EAE7BjR,EAAAA,WAAgB7I,cAAckZ,EAAAA,YAAkB1hB,KAAM5L,KAAK0C,MAAMkJ,KACtEuK,QAASnW,KAAKmR,MAAMgF,QACpBoY,SAAUvuB,KAAK8gB,aAIR7D,EAAAA,WAAgB7I,cAAcib,EAAAA,YAAwBlZ,QAASnW,KAAKmR,MAAMgF,UAK5E8G,EAAAA,WAAgB7I,cAAc+a,EAAAA,WAAuB,SAKlElsB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACA,KACApU,KAAK+vB,gBACL9S,EAAAA,WAAgB7I,cAActH,EAAAA,YAA6B2iB,SAAUzvB,KAAKmR,MAAMse,SAC9EO,QAAShwB,KAAK0C,MAAM,2BAMrBwa,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf+S,iBAAiB,IAAIC,qCAAqC,IAAIC,0BAA0B,IAAIxB,yBAAyB,IAAIyB,+BAA+B,IAAIxB,6BAA6B,IAAIyB,0BAA0B,IAAIC,yBAAyB,IAAIC,SAAS,GAAGC,iBAAiB,GAAGC,gBAAgB,GAAG5lB,OAAS,SAASmT,MAAQ,UAAU0S,IAAI,SAASpyB,EAAQU,EAAOJ,GAC9W,YAkDA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAtDje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,aAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,WAEhBgvB,EAASvrB,EAAuBsrB,GAEhCE,EAAajvB,EAAQ,iBAErBkvB,EAAczrB,EAAuBwrB,GAErCoD,EAAUryB,EAAQ,aAElBsyB,EAAW7uB,EAAuB4uB,GAElCE,EAAevyB,EAAQ,oBAEvBwyB,EAAgB/uB,EAAuB8uB,GAEvCprB,EAAQnH,EAAQ,uBAEhB0G,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCiG,EAAa3M,EAAQ,6BAErByM,EAAchJ,EAAuBkJ,GAErC1E,EAAYjI,EAAQ,2BAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,wBAEjBgH,EAAUvD,EAAuB4D,GAcjCuX,EAAS,SAAUuQ,GAGrB,QAASvQ,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAwCtF,OAtCAsB,GAAMmN,OACJ+O,WAAa,EAEb6Q,mBAAsBruB,EAAMkJ,KAAKmlB,mBACjCC,iCAAoCtuB,EAAMkJ,KAAKolB,iCAC/CC,6BAAgCvuB,EAAMkJ,KAAKqlB,6BAC3CC,6BAAgCxuB,EAAMkJ,KAAKslB,6BAE3CtG,WAGF5mB,EAAMmtB,8BACJ/tB,MAAS,EACTopB,KAAQ,eACR3C,MAAStM,QAAQ,eAEjBna,MAAS,EACTopB,KAAQ,WACR3C,MAAStM,QAAQ,oBAEjBna,MAAS,EACTopB,KAAQ,gBACR3C,MAAStM,QAAQ,YAGnBvZ,EAAMotB,qBACJhuB,MAAS,EACTopB,KAAQ,kBACR3C,MAAStM,QAAQ,QAEjBna,MAAS,EACTopB,KAAQ,WACR3C,MAAStM,QAAQ,cAEjBna,MAAS,EACTopB,KAAQ,OACR3C,MAAStM,QAAQ,uCAEZvZ,EAyJT,MAtMAsY,GAAUY,EAAQuQ,GAgDlBlrB,EAAa2a,IACXja,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKtgB,KAAK0C,MAAMkJ,KAAK2U,QAAQpK,SACjD4a,mBAAoB/wB,KAAKmR,MAAM4f,mBAC/BC,iCAAkChxB,KAAKmR,MAAM6f,iCAC7CC,6BAA8BjxB,KAAKmR,MAAM8f,6BACzCC,6BAA8BlxB,KAAKmR,MAAM+f,kCAI7CjuB,IAAK,gBACLG,MAAO,WACLkC,EAAAA,WAAgB2G,UAAU,EAAGxG,EAAM4rB,YACjCN,mBAAoB/wB,KAAKmR,MAAM4f,mBAC/BC,iCAAkChxB,KAAKmR,MAAM6f,iCAC7CC,6BAA8BjxB,KAAKmR,MAAM8f,6BACzCC,6BAA8BlxB,KAAKmR,MAAM+f,gCAE3C9qB,EAAAA,WAAmB2a,QAAQxD,QAAQ,6CAGrCta,IAAK,cACLG,MAAO,SAAqB6d,GACD,MAArBA,EAAUC,OACZ9a,EAAAA,WAAmBoL,MAAM+L,QAAQ,sCAEjCnX,EAAAA,WAAmBwlB,SAAS3K,MAIhChe,IAAK,oBACLG,MAAO,WACL2H,EAAAA,WAAoB2kB,KAClBhvB,MAAO6c,QAAQ,iBACfoS,OAAQpS,QAAQ,4BAIpBta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqa,SAAUzuB,KAAK8qB,aAAcrN,UAAW,mBAC1CR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,0BAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,WACA,KACA6I,EAAAA,WAAgB7I,cACd,SACA,KACAmJ,QAAQ,qBAEVN,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,oBACfmM,SAAUnM,QAAQ,6GAClBmR,MAAO,wBACP/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAc0c,EAAAA,YAAyBzS,GAAI,wBACzDmB,SAAUxf,KAAKmR,MAAM+O,UACrBoR,OAAQ,iBACRC,QAAS,aACTC,QAASjU,QAAQ,qCACjBkU,SAAUlU,QAAQ,mCAClB2L,SAAUlpB,KAAKyqB,UAAU,sBACzBrnB,MAAOpD,KAAKmR,MAAM4f,sBAEtB9T,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,8BACfmR,MAAO,sCACP/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAcwc,EAAAA,YAAoBvS,GAAI,sCACpDmB,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,oCACzBrnB,MAAOpD,KAAKmR,MAAM6f,iCAClBU,QAAS1xB,KAAKmxB,gCAGpBlU,EAAAA,WAAgB7I,cACd,WACA,KACA6I,EAAAA,WAAgB7I,cACd,SACA,KACAmJ,QAAQ,4BAEVN,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,mBACfmR,MAAO,kCACP/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAcwc,EAAAA,YAAoBvS,GAAI,kCACpDmB,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,gCACzBrnB,MAAOpD,KAAKmR,MAAM8f,6BAClBS,QAAS1xB,KAAKoxB,sBAElBnU,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,sBACfmR,MAAO,kCACP/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAcwc,EAAAA,YAAoBvS,GAAI,kCACpDmB,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,gCACzBrnB,MAAOpD,KAAKmR,MAAM+f,6BAClBQ,QAAS1xB,KAAKoxB,wBAItBnU,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,cAAegC,QAASzf,KAAKmR,MAAM+O,WAChD3C,QAAQ,0BAWjBL,GACPoQ,EAAAA,WAEF1uB,GAAAA,WAAkBse,IAEfyU,sBAAsB,IAAIlP,sBAAsB,IAAImP,4BAA4B,IAAIlP,0BAA0B,IAAIiE,uBAAuB,IAAI/D,YAAY,GAAGiP,UAAU,GAAGC,gBAAgB,GAAGC,YAAY,GAAGC,mBAAmB,IAAIhU,MAAQ,UAAUiU,IAAI,SAAS3zB,EAAQU,EAAOJ,GACnR,YAuBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ;AAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA3Bje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQszB,WAAatzB,EAAQuzB,QAAU7uB,MAEvC,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCoV,EAAe9zB,EAAQ,gBAEvB+zB,EAAM/zB,EAAQ,SAEdg0B,EAAOvwB,EAAuBswB,GAE9BttB,EAASzG,EAAQ,cAEPyD,GAAuBgD,GAavBnG,EAAQuzB,QAAU,SAAUhV,GAGxC,QAASgV,KAGP,MAFAhwB,GAAgBnC,KAAMmyB,GAEf/V,EAA2Bpc,KAAM+C,OAAOqa,eAAe+U,GAAS1xB,MAAMT,KAAMM,YAgCrF,MArCAgc,GAAU6V,EAAShV,GAQnB5a,EAAa4vB,IACXlvB,IAAK,SACLG,MAAO,WACL,GAAIse,GAAS1hB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,uBACbzd,KAAK0C,MAAMyT,QAAQyN,IAAI,SAAU2O,GAC/B,MAAOtV,GAAAA,WAAgB7I,cACrBge,EAAaI,MACXC,GAAI/Q,EAAOhf,MAAMgwB,QAAUH,EAAOzqB,UAAY,IAC9C2V,UAAW,kBACXwO,gBAAiB,SACjBhpB,IAAKsvB,EAAOzqB,WACdmV,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb8U,EAAO/F,MAET+F,EAAO/wB,aAQV2wB,GACPlV,EAAAA,WAAgBc,WAEDnf,EAAQszB,WAAa,SAAUzO,GAG9C,QAASyO,KAGP,MAFA/vB,GAAgBnC,KAAMkyB,GAEf9V,EAA2Bpc,KAAM+C,OAAOqa,eAAe8U,GAAYzxB,MAAMT,KAAMM,YAmCxF,MAxCAgc,GAAU4V,EAAYzO,GAQtBlhB,EAAa2vB,IACXjvB,IAAK,SACLG,MAAO,WACL,GAAI2gB,GAAS/jB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,gBAAiB4I,KAAM,QACpCrmB,KAAK0C,MAAMyT,QAAQyN,IAAI,SAAU2O,GAC/B,MAAOtV,GAAAA,WAAgB7I,cACrBke,EAAAA,YACErf,KAAM8Q,EAAOrhB,MAAMgwB,QAAUH,EAAOzqB,UAAY,IAChD7E,IAAKsvB,EAAOzqB,WACdmV,EAAAA,WAAgB7I,cACdge,EAAaI,MACXC,GAAI1O,EAAOrhB,MAAMgwB,QAAUH,EAAOzqB,UAAY,IAC9C+V,QAASkG,EAAOrhB,MAAMiwB,SACxB1V,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb8U,EAAO/F,MAET+F,EAAO/wB,cASZ0wB,GACPjV,EAAAA,WAAgBc,aAEfqG,cAAc,IAAIwO,QAAQ,GAAG5U,MAAQ,QAAQ6U,eAAe,iBAAiBC,IAAI,SAASx0B,EAAQU,EAAOJ,GAC5G,YAkCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA6Hje,QAASxV,GAAO+rB,GACd,OACEC,KAAQD,EAAMC,KAAKA,KACnBpnB,KAAQmnB,EAAMlW,KAAKjR,KACnBqnB,mBAAoBF,EAAM,qBAI9B,QAAS/qB,KACP,QACEiL,KAAMpO,EAAAA,WAAgBC,IAAI,cAAgB,iBAC1CgD,WAAY,EAAGjB,EAAYC,SAASE,GAAQksB,EAAAA,cAE5CjgB,KAAMpO,EAAAA,WAAgBC,IAAI,cAAgB,mBAC1CgD,WAAY,EAAGjB,EAAYC,SAASE,GAAQe,EAAAA,cAE5CkL,KAAMpO,EAAAA,WAAgBC,IAAI,cAAgB,uBAC1CgD,WAAY,EAAGjB,EAAYC,SAASE,GAAQmsB,EAAAA,cApLhD,GAAI5wB,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQoI,OAASA,EACjBpI,EAAQoJ,MAAQA,CAEhB,IAAIgV,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCnW,EAAcvI,EAAQ,eAEtB80B,EAAQ90B,EAAQ,UAEhB+0B,EAAgB/0B,EAAQ,mBAExB40B,EAAiBnxB,EAAuBsxB,GAExCprB,EAAQ3J,EAAQ,0BAEhByJ,EAAShG,EAAuBkG,GAEhCqrB,EAASh1B,EAAQ,8BAEjB60B,EAASpxB,EAAuBuxB,GAEhCvuB,EAASzG,EAAQ,eAEjBuG,EAAU9C,EAAuBgD,GAUjCmY,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAuBtF,OArBAsB,GAAMuvB,UAAY,WACZvvB,EAAMmN,MAAMqiB,SACdxvB,EAAM2V,UACJ6Z,UAAU,IAGZxvB,EAAM2V,UACJ6Z,UAAU,KAKhBxvB,EAAM2uB,QAAU,WACd3uB,EAAM2V,UACJ6Z,UAAU,KAIdxvB,EAAMmN,OACJqiB,UAAU,GAELxvB,EA0FT,MAtHAsY,GAAUY,EAAQC,GAiClB5a,EAAa2a,IACXja,IAAK,wBAILG,MAAO,WACL,MAAIpD,MAAKmR,MAAMqiB,SACN,gCAEA,8BAIXvwB,IAAK,yBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMqiB,SACN,mBAEA,iBAIXvwB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,qBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,aACbF,QAAQ,wBAEVN,EAAAA,WAAgB7I,cACd,UACEqJ,UAAW,+EACXG,KAAM,SACNC,QAAS7d,KAAKuzB,UACdE,gBAAiB,OACjBC,gBAAiB1zB,KAAKmR,MAAMqiB,SAAW,OAAS,SAClDvW,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,iBACb,WAKRR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAWzd,KAAK2zB,0BAClB1W,EAAAA,WAAgB7I,cAAcgf,EAAMlB,YAAc/b,QAAStR,EAAAA,WAAgBC,IAAI,gBAC7E4tB,QAAS7tB,EAAAA,WAAgBC,IAAI,cAC7B6tB,QAAS3yB,KAAK2yB,WAElB1V,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gCACbR,EAAAA,WAAgB7I,cAAcgf,EAAMjB,SAAWhc,QAAStR,EAAAA,WAAgBC,IAAI,gBAC1E4tB,QAAS7tB,EAAAA,WAAgBC,IAAI,iBAEjCmY,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,YACbzd,KAAK0C,MAAMgd,iBAShBxC,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAsBfkH,cAAc,IAAIwP,yBAAyB,GAAGC,kBAAkB,GAAGC,SAAS,GAAGC,6BAA6B,GAAG/V,MAAQ,QAAQ1W,cAAc,gBAAgB0sB,IAAI,SAAS11B,EAAQU,EAAOJ,GAC5L,YAoCA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA1Cje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,gBAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,cAEhBgvB,EAASvrB,EAAuBsrB,GAEhCE,EAAajvB,EAAQ,oBAErBkvB,EAAczrB,EAAuBwrB,GAErCvoB,EAAQ1G,EAAQ,0BAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,8BAEpB8H,EAAarE,EAAuBwE,GAEpC+jB,EAAchsB,EAAQ,6BAEtB+sB,EAAa8B,EAAwB7C,GAcrCpN,EAAS,SAAUuQ,GAGrB,QAASvQ,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAatF,OAXAsB,GAAMmN,OACJ8iB,UAAW,GACXC,SAAU,GAEV7I,YACE4I,WAAY5I,EAAW8I,SACvBD,aAGFhU,WAAW,GAENlc,EAuHT,MAzIAsY,GAAUY,EAAQuQ,GAqBlBlrB,EAAa2a,IACXja,IAAK,QACLG,MAAO,WACL,GAAIwnB,GAAS5qB,KAAKyrB,WACd2I,GAAWp0B,KAAKmR,MAAM8iB,UAAU3F,OAAOxvB,OAAQkB,KAAKmR,MAAM+iB,SAAS5F,OAAOxvB,OAE9E,OAA2B,KAAvBs1B,EAAQpgB,QAAQ,IAClB5N,EAAAA,WAAmBoL,MAAM+L,QAAQ,0BAC1B,GAGLqN,EAAOqJ,WACT7tB,EAAAA,WAAmBoL,MAAMoZ,EAAOqJ,UAAU,KACnC,IAGF,KAGThxB,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKtgB,KAAK0C,MAAMkJ,KAAK2U,QAAQ8T,cACjDJ,UAAWj0B,KAAKmR,MAAM8iB,UACtBC,SAAUl0B,KAAKmR,MAAM+iB,cAIzBjxB,IAAK,gBACLG,MAAO,SAAuB6gB,GAC5BjkB,KAAK2Z,UACHsa,UAAW,GACXC,SAAU,KAGZ9tB,EAAAA,WAAmB2a,QAAQkD,EAASjD,WAGtC/d,IAAK,cACLG,MAAO,SAAqB6d,GACD,MAArBA,EAAUC,OACRD,EAAUgT,UACZ7tB,EAAAA,WAAmBoL,MAAMyP,EAAUgT,WAEnC7tB,EAAAA,WAAmBoL,MAAMyP,EAAUiT,UAGrC9tB,EAAAA,WAAmBwlB,SAAS3K,MAIhChe,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqa,SAAUzuB,KAAK8qB,aAAcrN,UAAW,mBAC1CR,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQoL,OAASsL,QAAS,UACzErX,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYoL,OAASsL,QAAS,UAC7ErX,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,2BAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,cAAemR,MAAO,eACrC/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQS,GAAI,eAAgBZ,UAAW,eACpF+B,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,aACzBrnB,MAAOpD,KAAKmR,MAAM8iB,aAEtBhX,EAAAA,WAAgB7I,cAAc,KAAM,MACpC6I,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,yBAA0BmR,MAAO,cAChD/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYS,GAAI,cAAeZ,UAAW,eACvF+B,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAM+iB,aAGxBjX,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,cAAegC,QAASzf,KAAKmR,MAAM+O,WAChD3C,QAAQ,2BAWjBL,GACPoQ,EAAAA,WAEF1uB,GAAAA,WAAkBse,IAEfyR,yBAAyB,IAAIC,6BAA6B,IAAIC,4BAA4B,IAAIC,eAAe,GAAGC,aAAa,GAAGC,mBAAmB,GAAGhR,MAAQ,UAAUuW,IAAI,SAASj2B,EAAQU,EAAOJ,GACvM,YAwCA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA9Cje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,gBAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,cAEhBgvB,EAASvrB,EAAuBsrB,GAEhCE,EAAajvB,EAAQ,oBAErBkvB,EAAczrB,EAAuBwrB,GAErCxoB,EAASzG,EAAQ,kBAEjBuG,EAAU9C,EAAuBgD,GAEjCC,EAAQ1G,EAAQ,0BAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,8BAEpB8H,EAAarE,EAAuBwE,GAEpC+jB,EAAchsB,EAAQ,6BAEtB+sB,EAAa8B,EAAwB7C,GAcrCpN,EAAS,SAAUuQ,GAGrB,QAASvQ,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAetF,OAbAsB,GAAMmN,OACJqjB,aAAc,GACdC,gBAAiB,GACjBP,SAAU,GAEV7I,YACEmJ,cAAenJ,EAAWqJ,kBAAkB7vB,EAAAA,WAAgBC,IAAI,cAChE2vB,mBACAP,aAGFhU,WAAW,GAENlc,EAsIT,MA1JAsY,GAAUY,EAAQuQ,GAuBlBlrB,EAAa2a,IACXja,IAAK,QACLG,MAAO,WACL,GAAIwnB,GAAS5qB,KAAKyrB,WACd2I,GAAWp0B,KAAKmR,MAAMqjB,aAAalG,OAAOxvB,OAAQkB,KAAKmR,MAAMsjB,gBAAgBnG,OAAOxvB,OAAQkB,KAAKmR,MAAM+iB,SAAS5F,OAAOxvB,OAE3H,OAA2B,KAAvBs1B,EAAQpgB,QAAQ,IAClB5N,EAAAA,WAAmBoL,MAAM+L,QAAQ,0BAC1B,GAGLqN,EAAO4J,cACTpuB,EAAAA,WAAmBoL,MAAMoZ,EAAO4J,aAAa,KACtC,GAGLx0B,KAAKmR,MAAMqjB,aAAalG,SAAWtuB,KAAKmR,MAAMsjB,gBAAgBnG,QAChEloB,EAAAA,WAAmBoL,MAAM+L,QAAQ,kCAC1B,IAGF,KAGTta,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKtgB,KAAK0C,MAAMkJ,KAAK2U,QAAQoU,iBACjDH,aAAcx0B,KAAKmR,MAAMqjB,aACzBN,SAAUl0B,KAAKmR,MAAM+iB,cAIzBjxB,IAAK,gBACLG,MAAO,SAAuB6gB,GAC5BjkB,KAAK2Z,UACH6a,aAAc,GACdC,gBAAiB,GACjBP,SAAU,KAGZ9tB,EAAAA,WAAmB2a,QAAQkD,EAASjD,WAGtC/d,IAAK,cACLG,MAAO,SAAqB6d,GACD,MAArBA,EAAUC,OACRD,EAAUuT,aACZpuB,EAAAA,WAAmBoL,MAAMyP,EAAUuT,cAEnCpuB,EAAAA,WAAmBoL,MAAMyP,EAAUiT,UAGrC9tB,EAAAA,WAAmBwlB,SAAS3K,MAIhChe,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqa,SAAUzuB,KAAK8qB,aAAcrN,UAAW,mBAC1CR,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQoL,OAASsL,QAAS,UACzErX,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYoL,OAASsL,QAAS,UAC7ErX,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,qBAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,gBAAiBmR,MAAO,kBACvC/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYS,GAAI,kBAAmBZ,UAAW,eAC3F+B,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,gBACzBrnB,MAAOpD,KAAKmR,MAAMqjB,gBAEtBvX,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,mBAAoBmR,MAAO,qBAC1C/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYS,GAAI,qBAAsBZ,UAAW,eAC9F+B,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,mBACzBrnB,MAAOpD,KAAKmR,MAAMsjB,mBAEtBxX,EAAAA,WAAgB7I,cAAc,KAAM,MACpC6I,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,yBAA0BmR,MAAO,cAChD/E,WAAY,WAAYG,aAAc,YACxC7M,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYS,GAAI,cAAeZ,UAAW,eACvF+B,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAM+iB,aAGxBjX,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,cAAegC,QAASzf,KAAKmR,MAAM+O,WAChD3C,QAAQ,6BAWjBL,GACPoQ,EAAAA,WAEF1uB,GAAAA,WAAkBse,IAEf+S,iBAAiB,IAAItB,yBAAyB,IAAIC,6BAA6B,IAAIC,4BAA4B,IAAIC,eAAe,GAAGC,aAAa,GAAGC,mBAAmB,GAAGhR,MAAQ,UAAU4W,IAAI,SAASt2B,EAAQU,EAAOJ,GAC5N,YA4BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC6X,EAAev2B,EAAQ,kBAEvBw2B,EAAgB/yB,EAAuB8yB,GAEvCE,EAAkBz2B,EAAQ,qBAE1B02B,EAAmBjzB,EAAuBgzB,GAE1ChwB,EAASzG,EAAQ,kBAEjBuG,EAAU9C,EAAuBgD,GAEjCkG,EAAa3M,EAAQ,gCAErByM,EAAchJ,EAAuBkJ,GAYrCiS,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAuCpF,MA5CAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,oBACLG,MAAO,WACL2H,EAAAA,WAAoB2kB,KAClBhvB,MAAO6c,QAAQ,4BACfoS,OAAQpS,QAAQ,4BAIpBta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cAAc0gB,EAAAA,YAAyBlpB,KAAM5L,KAAK0C,MAAMkJ,OACxEqR,EAAAA,WAAgB7I,cAAc4gB,EAAAA,YAA4BppB,KAAM5L,KAAK0C,MAAMkJ,OAC3EqR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,WAEFR,EAAAA,WAAgB7I,cACd,KACEtB,KAAMjO,EAAAA,WAAgBC,IAAI,2BAC5ByY,QAAQ,oCAQXL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf+S,iBAAiB,IAAIG,+BAA+B,IAAI6E,iBAAiB,GAAGC,oBAAoB,GAAGlX,MAAQ,UAAUmX,IAAI,SAAS72B,EAAQU,EAAOJ,GACpJ,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCqC,EAAU/gB,EAAQ,YAElBghB,EAAWvd,EAAuBsd,GAYlCnC,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAgBpF,MArBAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,iCACbR,EAAAA,WAAgB7I,cAAckL,EAAAA,YAAoB7B,UAAW,8BAM5DP,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf0C,WAAW,GAAG5B,MAAQ,UAAUoX,IAAI,SAAS92B,EAAQU,EAAOJ,GAC/D,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAiDpF,MAtDAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,cACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMgnB,SAENzM,EAAAA,WAAgB7I,cACrB,KACEqJ,UAAW,cACbzd,KAAK0C,MAAMgnB,UAIJ,QAIbzmB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,iCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACbzd,KAAK0C,MAAM8pB,MAAQ,iBAGvBvP,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAK0C,MAAMgR,SAEb1T,KAAKkqB,oBAONhN,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAUqX,IAAI,SAAS/2B,EAAQU,EAAOJ,GACjD,YAiBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GArBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ02B,OAAS12B,EAAQ22B,OAASjyB,MAElC,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjClP,EAAUxP,EAAQ,sBAElBuP,EAAW9L,EAAuB+L,GAUlCynB,EAAS32B,EAAQ22B,QAAU,sBAAuB,uBAAwB,uBAAwB,uBAAwB,wBAE1HD,EAAS12B,EAAQ02B,QAAU/X,QAAQ,kCAAmCA,QAAQ,6BAA8BA,QAAQ,gCAAiCA,QAAQ,+BAAgCA,QAAQ,qCAErML,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAKtF,OAHAsB,GAAMwxB,OAAS,EACfxxB,EAAMyxB,UAAY,KAClBzxB,EAAM0xB,WACC1xB,EAuET,MAjFAsY,GAAUY,EAAQC,GAalB5a,EAAa2a,IACXja,IAAK,WACLG,MAAO,SAAkB8wB,EAAUyB,GACjC,GAAIjU,GAAS1hB,KAET41B,GAAa,CAwBjB,OAtBI1B,GAAS5F,SAAWtuB,KAAKy1B,YAC3BG,GAAa,GAGXD,EAAO72B,SAAWkB,KAAK01B,QAAQ52B,OACjC82B,GAAa,EAEbD,EAAO/R,IAAI,SAAUxgB,EAAO7E,GACtB6E,EAAMkrB,SAAW5M,EAAOgU,QAAQn3B,KAClCq3B,GAAa,KAKfA,IACF51B,KAAKw1B,OAAS3nB,EAAAA,WAAiBgoB,cAAc3B,EAAUyB,GACvD31B,KAAKy1B,UAAYvB,EAAS5F,OAC1BtuB,KAAK01B,QAAUC,EAAO/R,IAAI,SAAUxgB,GAClC,MAAOA,GAAMkrB,UAIVtuB,KAAKw1B,UAGdvyB,IAAK,SACLG,MAAO,WAEL,GAAI0yB,GAAQ91B,KAAK+1B,SAAS/1B,KAAK0C,MAAMwxB,SAAUl0B,KAAK0C,MAAMizB,OAE1D,OAAO1Y,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,gCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,YACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBAAkB8X,EAAOO,GACpC9M,OAASrH,MAAO,GAAK,GAAKmU,EAAQ,KAClCzP,KAAM,eACNwC,gBAAiBiN,EACjBhN,gBAAiB,IACjBC,gBAAiB,KACnB9L,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,WACb6X,EAAOQ,MAIb7Y,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,cACb6X,EAAOQ,SAOR5Y,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf8Y,qBAAqB,IAAIhY,MAAQ,UAAUiY,IAAI,SAAS33B,EAAQU,EAAOJ,GAC1E,YA4BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC8C,EAAUxhB,EAAQ,aAElBimB,EAAWxiB,EAAuB+d,GAElCoW,EAAgB53B,EAAQ,mBAExB63B,EAAiBp0B,EAAuBm0B,GAExCE,EAAO93B,EAAQ,oBAEf+3B,EAAQt0B,EAAuBq0B,GAE/BE,EAAch4B,EAAQ,kBAEtBi4B,EAAex0B,EAAuBu0B,GActCpZ,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAuOpF,MA5OAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,gBACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,uBACbR,EAAAA,WAAgB7I,cACdmiB,EAAAA,YACE3qB,KAAM5L,KAAK0C,MAAM8zB,QAAStV,OAAQlhB,KAAK0C,MAAM8zB,QAAQtV,QACvDjE,EAAAA,WAAgB7I,cAAckiB,EAAYG,YAAc7qB,KAAM5L,KAAK0C,MAAM8zB,QACvEtV,OAAQlhB,KAAK0C,MAAM8zB,QAAQtV,SAC7BjE,EAAAA,WAAgB7I,cAAckiB,EAAYI,aAAe9qB,KAAM5L,KAAK0C,MAAM8zB,QACxEtV,OAAQlhB,KAAK0C,MAAM8zB,QAAQtV,OAC3BzD,UAAW,sBAMnBxa,IAAK,cACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQG,KAAKC,OAEnB3Z,EAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,KACEtB,KAAM9S,KAAK0C,MAAM8zB,QAAQG,KAAKruB,aAAcmV,UAAW,cACzDzd,KAAK0C,MAAM8zB,QAAQG,KAAKn1B,OAMnByb,EAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,cACbzd,KAAK0C,MAAM8zB,QAAQG,KAAKn1B,UAOlCyB,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQ91B,MAEduc,EAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,cACbzd,KAAK0C,MAAM8zB,QAAQ91B,OAGZV,KAAK0C,MAAM8zB,QAAQG,KAAKj2B,MAExBuc,EAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,cACbzd,KAAK0C,MAAM8zB,QAAQG,KAAKj2B,OAIjB,QAIfuC,IAAK,cACLG,MAAO,WAEL,GAAI1C,GAAQ4c,YAAYC,QAAQ,4BAC9BsZ,UAAa72B,KAAK0C,MAAM8zB,QAAQK,UAAUhb,OAAO,YAChD,GAECib,EAAMxZ,YAAYC,QAAQ,yBAC5BsZ,UAAa72B,KAAK0C,MAAM8zB,QAAQK,UAAU5X,YACzC,EAEH,OAAOhC,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,kBACbR,EAAAA,WAAgB7I,cACd,QACE1T,MAAOA,GACTo2B,OAMN7zB,IAAK,WACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQrC,MAEdlX,EAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,KACEtB,KAAM,UAAY9S,KAAK0C,MAAM8zB,QAAQrC,MAAO1W,UAAW,cACzDzd,KAAK0C,MAAM8zB,QAAQrC,QAKd,QAIblxB,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQpI,IAAI2I,WAElB9Z,EAAAA,WAAgB7I,cAAc+hB,EAAAA,YAA0B1Y,UAAW,sCACxE+Y,QAASx2B,KAAK0C,MAAM8zB,UAGb,QAIbvzB,IAAK,sBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQpI,IAAI4I,aAElB/Z,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,6CACbR,EAAAA,WAAgB7I,cACd,UACEqJ,UAAW,+CACXG,KAAM,SACNqZ,cAAe,WACfxD,gBAAiB,OACjBC,gBAAiB,SACnBzW,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,YAEFF,QAAQ,eAEVN,EAAAA,WAAgB7I,cAAciiB,EAAAA,YAAiBG,QAASx2B,KAAK0C,MAAM8zB,WAI5D,QAIbvzB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAM5L,KAAK0C,MAAM8zB,QAASrY,KAAM,QAClFlB,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,aACbzd,KAAK0C,MAAM8zB,QAAQhZ,WAGvBxd,KAAKk3B,kBACLl3B,KAAKm3B,sBACLla,EAAAA,WAAgB7I,cACd,UACEqJ,UAAW,+EACXG,KAAM,SACNC,QAAS7d,KAAK0C,MAAM6wB,UACpBE,gBAAiB,OACjBC,gBAAiB1zB,KAAK0C,MAAM8wB,SAAW,OAAS,SAClDvW,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,iBACb,YAMVR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbzd,KAAKo3B,gBACLp3B,KAAKq3B,cACLr3B,KAAKs3B,eACLt3B,KAAKu3B,cACLv3B,KAAKw3B,qBAWdta,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfyF,YAAY,GAAG8U,iBAAiB,IAAIC,kBAAkB,GAAGC,mBAAmB,GAAG3Z,MAAQ,UAAU4Z,IAAI,SAASt5B,EAAQU,EAAOJ,GAChI,YAoCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAxCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAIwH,GAAUtM,EAAQ,UAElBkM,EAAWzI,EAAuB6I,GAElCoS,EAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC2P,EAAeruB,EAAQ,mBAEvBsuB,EAAgB7qB,EAAuB4qB,GAEvCN,EAAgB/tB,EAAQ,oBAExBguB,EAAiBvqB,EAAuBsqB,GAExCtnB,EAASzG,EAAQ,eAEjBuG,EAAU9C,EAAuBgD,GAEjCsG,EAAS/M,EAAQ,wBAEjB8M,EAAUrJ,EAAuBsJ,GAEjCJ,EAAa3M,EAAQ,6BAErByM,EAAchJ,EAAuBkJ,GAWrCiS,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GA8BtF,OA5BAsB,GAAM6zB,OAAS,SAAUC,GACnBA,EAAI9Y,aACN8Y,EAAI9Y,YAAc,EAAGxU,EAAAA,YAAkBstB,EAAI9Y,aAG7Chb,EAAM2V,UACJ8V,UAAU,EACVje,MAAO,KAEPsmB,IAAKA,KAIT9zB,EAAMwN,MAAQ,SAAUA,GACtBxN,EAAM2V,UACJ8V,UAAU,EACVje,MAAOA,EAAMwP,OACb8W,IAAK,QAILjzB,EAAAA,WAAgBR,IAAI,eACtBL,EAAM+zB,sBAAsBlzB,EAAAA,WAAgBmzB,IAAI,gBAEhDh0B,EAAMi0B,2BAGRj0B,EAAMk0B,aAAax1B,EAAM8zB,QAAQjW,QAAQuX,KAClC9zB,EA8MT,MAjPAsY,GAAUY,EAAQC,GAsClB5a,EAAa2a,IACXja,IAAK,wBACLG,MAAO,SAA+B00B,GAChCA,EAAI9Y,aACN8Y,EAAI9Y,YAAc,EAAGxU,EAAAA,YAAkBstB,EAAI9Y,aAG7Chf,KAAKmR,OACHse,UAAU,EACVqI,IAAKA,MAIT70B,IAAK,2BACLG,MAAO,WACLpD,KAAKmR,OACHse,UAAU,MAIdxsB,IAAK,eACLG,MAAO,SAAsB+0B,GAC3B/sB,EAAAA,WAAgBgtB,OACdC,KAAM,cACNja,IAAK+Z,EACLG,UAAW,IACXT,OAAQ73B,KAAK63B,OACbrmB,MAAOxR,KAAKwR,WAOhBvO,IAAK,oBAILG,MAAO,WACL2H,EAAAA,WAAoB2kB,KAClBhvB,MAAO6c,QAAQ,eACfoS,OAAQ3vB,KAAK0C,MAAM8zB,QAAQhZ,cAI/Bva,IAAK,uBACLG,MAAO,WACLgI,EAAAA,WAAgBmtB,KAAK,kBAGvBt1B,IAAK,iBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAM2mB,IAAIU,aAEVvb,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,2CACbR,EAAAA,WAAgB7I,cACd,KACA,KACAmJ,QAAQ,2BAEVN,EAAAA,WAAgB7I,cAAc,OAASqJ,UAAW,OAAQkB,yBACtDC,OAAQ5e,KAAKmR,MAAM2mB,IAAIU,aAAa9Z,SAKjC,QAIbzb,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAM2mB,IAAIW,cAEVxb,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,4CACbR,EAAAA,WAAgB7I,cACd,KACA,KACAmJ,QAAQ,2BAEVN,EAAAA,WAAgB7I,cAAc,OAASqJ,UAAW,OAAQkB,yBACtDC,OAAQ5e,KAAKmR,MAAM2mB,IAAIW,cAAc/Z,SAKlC,QAIbzb,IAAK,uBACLG,MAAO,WACL,GAAIpD,KAAKmR,MAAM2mB,IAAI9Y,WAAY,CAC7B,GAAIhf,KAAKmR,MAAM2mB,IAAI9Y,WAAWD,SAAS,EAAGvU,EAAAA,eAAsB,CAE9D,GAAIkuB,GAASpb,YAAYC,QAAQ,wCAC/ByB,WAAchf,KAAKmR,MAAM2mB,IAAI9Y,WAAWnD,OAAO,YAC9C,GAECnI,EAAU4J,YAAYC,QAAQ,qCAChCyB,WAAchf,KAAKmR,MAAM2mB,IAAI9Y,WAAWC,YACvC,EAEH,OAAOhC,GAAAA,WAAgB7I,cACrB,QACE1T,MAAOg4B,GACThlB,GAIA,MAAO6J,SAAQ,yBAGnB,MAAOD,aAAYC,QAAQ,qCACzBC,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,WAC9B,MAIPva,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAM2mB,IACT/0B,OAAOkN,KAAKjQ,KAAKmR,MAAM2mB,KAAKh5B,OAEvBme,EAAAA,WAAgB7I,cACrB,MACA,KACApU,KAAK24B,iBACL34B,KAAK44B,kBACL3b,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,0BACbR,EAAAA,WAAgB7I,cACd,KACA,KACAmJ,QAAQ,mBAEVN,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAKmf,0BAOFlC,EAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cAAckY,EAAAA,YAA0B5Y,QAAS6J,QAAQ,sCAItEvd,KAAKmR,MAAMK,MAEXyL,EAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cAAckY,EAAAA,YAA0BE,KAAM,gBAC5D9Y,QAAS1T,KAAKmR,MAAMK,SAKfyL,EAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cAAcwY,EAAAA,WAAuB,UAM/D3pB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,uBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,uBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,iBAGZvd,KAAK64B,qBAON3b,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfkH,cAAc,IAAIwN,4BAA4B,IAAIkH,uBAAuB,IAAIC,kBAAkB,GAAGC,mBAAmB,GAAGnuB,OAAS,SAASmT,MAAQ,UAAUib,IAAI,SAAS36B,EAAQU,EAAOJ,GAC3L,YA8BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc;AAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAlCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,aAElB0hB,EAAWje,EAAuBge,GAElC7T,EAAW5N,EAAQ,0BAEnB0G,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,2BAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,wBAEjBgH,EAAUvD,EAAuB4D,GAejCuX,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAoCtF,OAlCAsB,GAAMuR,OAAS,WACbvR,EAAM2V,UACJuG,WAAW,IAGTlc,EAAMtB,MAAM8zB,QAAQ0C,YACtB5zB,EAAAA,WAAgB2G,UAAU,EAAGC,EAASitB,eACpCD,aAAa,EACbE,UAAWp1B,EAAMtB,MAAM8zB,QAAQ4C,UAAY,KAG7C9zB,EAAAA,WAAgB2G,UAAU,EAAGC,EAASitB,eACpCD,aAAa,EACbE,UAAWp1B,EAAMtB,MAAM8zB,QAAQ4C,UAAY,KAI/Cz0B,EAAAA,WAAe2b,KAAKtc,EAAMtB,MAAM8zB,QAAQjW,QAAQ8Y,QAAQzY,KAAK,SAAUC,GACrE7c,EAAM2V,UACJuG,WAAW,IAGb5a,EAAAA,WAAgB2G,UAAU,EAAGC,EAASitB,cAActY,KACnD,SAAUI,GACXjd,EAAM2V,UACJuG,WAAW,IAEb9Z,EAAAA,WAAmBwlB,SAAS3K,MAIhCjd,EAAMmN,OACJ+O,WAAW,GAENlc,EAwDT,MAjGAsY,GAAUY,EAAQC,GA4ClB5a,EAAa2a,IACXja,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQ0C,YACdl5B,KAAK0C,MAAM+a,UAAY,6BAEvBzd,KAAK0C,MAAM+a,UAAY,6BAIlCxa,IAAK,UACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQ0C,YACd,WAEA,qBAIXj2B,IAAK,WACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQ0C,YACd3b,QAAQ,aAERA,QAAQ,aAOnBta,IAAK,SAILG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB4L,EAAAA,YACEvC,UAAWzd,KAAK0d,eAChB8B,SAAUxf,KAAKmR,MAAM+O,UACrBrC,QAAS7d,KAAKuV,QAChB0H,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACbzd,KAAKs5B,WAEPt5B,KAAKu5B,gBAMJrc,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfsc,yBAAyB,IAAI/W,sBAAsB,IAAIC,0BAA0B,IAAIiE,uBAAuB,IAAI/D,YAAY,GAAG5E,MAAQ,UAAUyb,IAAI,SAASn7B,EAAQU,EAAOJ,GAChL,YA8CA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASqoB,GAAgBroB,EAAKiB,EAAKG,GAAiK,MAApJH,KAAOjB,GAAOe,OAAOC,eAAehB,EAAKiB,GAAOG,MAAOA,EAAOR,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBd,EAAIiB,GAAOG,EAAgBpB,EAE3M,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApDje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,aAElB0hB,EAAWje,EAAuBge,GAElC2Z,EAAUp7B,EAAQ,aAElBq7B,EAAW53B,EAAuB23B,GAElCzxB,EAAQ3J,EAAQ,sBAEhByJ,EAAShG,EAAuBkG,GAEhClD,EAASzG,EAAQ,eAEjBuG,EAAU9C,EAAuBgD,GAEjCoI,EAAS7O,EAAQ,wBAEjB0G,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,2BAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,wBAEjBgH,EAAUvD,EAAuB4D,GAEjCsF,EAAa3M,EAAQ,6BAErByM,EAAchJ,EAAuBkJ,GAerCiS,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAkCtF,OAhCAsB,GAAM41B,SAAW,WACf51B,EAAM2V,UACJkgB,QAAQ,IAGV71B,EAAM81B,UAAU91B,EAAMmN,MAAM4oB,KAAO,EAAG/1B,EAAMmN,MAAMiC,SAGpDpP,EAAMoP,OAAS,SAAU4mB,GACvBh2B,EAAM2V,UACJ8V,UAAU,EACVoK,QAAQ,EAERzmB,OAAQ4mB,EAAGv3B,OAAOW,MAElB62B,MAAO,EACPC,KAAM,EAENH,KAAM,EACNI,MAAO,IAGTn2B,EAAM81B,UAAU,EAAGE,EAAGv3B,OAAOW,QAG/BY,EAAMo2B,kBAEFv1B,EAAAA,WAAgBR,IAAIL,EAAMq2B,oBAC5Br2B,EAAM+zB,sBAAsBlzB,EAAAA,WAAgBmzB,IAAIh0B,EAAMq2B,qBAEtDr2B,EAAMi0B,2BAEDj0B,EA+MT,MAtPAsY,GAAUY,EAAQC,GA0ClB5a,EAAa2a,IACXja,IAAK,kBACLG,MAAO,WACLpD,KAAKq6B,mBAAqB,oBAC1Br6B,KAAKs6B,MAAQ/c,QAAQ,aACrBvd,KAAKu6B,WAAa,eAGpBt3B,IAAK,wBACLG,MAAO,SAA+Byd,GACpC7gB,KAAKmR,OACHse,UAAU,EACVoK,QAAQ,EAERzmB,OAAQ,GAER6mB,MAAOpZ,EAAKoZ,MACZC,KAAMrZ,EAAKqZ,KAEXH,KAAMlZ,EAAKkZ,KACXI,MAAOtZ,EAAKsZ,OAGd70B,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOhB,WAAW0U,EAAKiP,aAGtD7sB,IAAK,2BACLG,MAAO,WACLpD,KAAKmR,OACHse,UAAU,EACVoK,QAAQ,EAERzmB,OAAQ,GAER6mB,MAAO,EACPC,KAAM,EAENH,KAAM,EACNI,MAAO,GAGTn6B,KAAK85B,eAGP72B,IAAK,YACLG,MAAO,WACL,GAAIo3B,GACA9Y,EAAS1hB,KAET+5B,EAAOz5B,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,EAAIA,UAAU,GAC3E8S,EAAS9S,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEpFqE,GAAAA,WAAeG,IAAID,EAAAA,WAAgBC,IAAI,cAAe01B,KAAgBnQ,EAAgBmQ,EAAWx6B,KAAKu6B,WAAYv6B,KAAK0C,MAAM8zB,QAAQnY,IAAKgM,EAAgBmQ,EAAW,OAAQpnB,GAASiX,EAAgBmQ,EAAW,OAAQT,GAAQ,GAAIS,GAAY,QAAUx6B,KAAKu6B,YAAY3Z,KAAK,SAAUC,GAC5Q,IAATkZ,EACFz0B,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOhB,WAAW0U,EAAKiP,UAEpDxqB,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAO4a,QAAQlH,EAAKiP,UAGnDpO,EAAO/H,UACL8V,UAAU,EACVoK,QAAQ,EAERI,MAAOpZ,EAAKoZ,MACZC,KAAMrZ,EAAKqZ,KAEXH,KAAMlZ,EAAKkZ,KACXI,MAAOtZ,EAAKsZ,SAEb,SAAUlZ,GACX7a,EAAAA,WAAmBwlB,SAAS3K,QAIhChe,IAAK,oBACLG,MAAO,WACL2H,EAAAA,WAAoB2kB,KAClBhvB,MAAOV,KAAKs6B,MACZ3K,OAAQ3vB,KAAK0C,MAAM8zB,QAAQhZ,cAO/Bva,IAAK,WAILG,MAAO,WACL,GAAKpD,KAAKmR,MAAMse,SAET,CAAA,GAAIzvB,KAAKmR,MAAMiC,OAAQ,CAC5B,GAAIM,GAAUya,SAAS,wBAAyB,yBAA0BnuB,KAAKmR,MAAM8oB,MAErF,OAAO3c,aAAY5J,GACjB+mB,MAASz6B,KAAKmR,MAAM8oB,QACnB,GACE,GAAIj6B,KAAK0C,MAAM8zB,QAAQnY,KAAOre,KAAK0C,MAAMkJ,KAAKyS,GAAI,CACvD,GAAI3K,GAAUya,SAAS,+BAAgC,gCAAiCnuB,KAAKmR,MAAM8oB,MAEnG,OAAO3c,aAAY5J,GACjB+mB,MAASz6B,KAAKmR,MAAM8oB,QACnB,GAEH,GAAIvmB,GAAUya,SAAS,uCAAwC,wCAAyCnuB,KAAKmR,MAAM8oB,MAEnH,OAAO3c,aAAY5J,GACjB8J,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,SAC/Bid,MAASz6B,KAAKmR,MAAM8oB,QACnB,GAnBH,MAAO1c,SAAQ,iBAuBnBta,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMiC,OACNmK,QAAQ,yDACNvd,KAAK0C,MAAMkJ,KAAKyS,KAAOre,KAAK0C,MAAM8zB,QAAQnY,GAC5Cd,QAAQ,0BAERD,YAAYC,QAAQ,mCACzBC,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,WAC9B,MAIPva,IAAK,gBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAM+oB,KAENjd,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEP,QAASzf,KAAKmR,MAAM0oB,OACpBhc,QAAS7d,KAAK45B,UAChBtc,YAAYC,QAAQ,yBAClB2c,KAAQl6B,KAAKmR,MAAM+oB,OAClB,KAKE,QAIbj3B,IAAK,cACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMse,UAAiC,IAArBzvB,KAAKmR,MAAM8oB,MAE7Bhd,EAAAA,WAAgB7I,cACrB,KACEqJ,UAAW,QACbzd,KAAK06B,mBAKEzd,EAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cAAcrM,EAAAA,YAAkB0nB,SAAUzvB,KAAKmR,MAAMse,SACnEgL,MAAOz6B,KAAK0C,MAAM+3B,MAClBE,UAAU,EACVC,KAAM,IACR56B,KAAK66B,oBAMb53B,IAAK,eACLG,MAAO,WACL,MAAO,WAAapD,KAAKu6B,cAG3Bt3B,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,gBAClBT,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,WACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,gBACbzd,KAAKu5B,YAEPtc,EAAAA,WAAgB7I,cAAculB,EAAAA,YAAoBlc,UAAW,gBAC3Dra,MAAOpD,KAAKmR,MAAMiC,OAClB8V,SAAUlpB,KAAKoT,OACf0nB,YAAavd,QAAQ,wBAEzBvd,KAAK+6B,mBAMJ7d,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfkH,cAAc,IAAIsC,uBAAuB,IAAIjE,sBAAsB,IAAImP,4BAA4B,IAAIlP,0BAA0B,IAAIiE,uBAAuB,IAAI/D,YAAY,GAAGoY,YAAY,GAAGC,qBAAqB,IAAIjd,MAAQ,UAAUkd,IAAI,SAAS58B,EAAQU,EAAOJ,GACxQ,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAIjB68B,GAFUp5B,EAAuBib,GAEpB1e,EAAQ,gBAErB88B,EAAcr5B,EAAuBo5B,GAUrCje,EAAS,SAAUme,GAGrB,QAASne,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAmDpF,MAxDAgc,GAAUY,EAAQme,GAQlB94B,EAAa2a,IACXja,IAAK,kBACLG,MAAO,WACLpD,KAAKq6B,mBAAqB,kBAC1Br6B,KAAKs6B,MAAQ/c,QAAQ,WACrBvd,KAAKu6B,WAAa,aAGpBt3B,IAAK,WACLG,MAAO,WACL,GAAKpD,KAAKmR,MAAMse,SAET,CAAA,GAAIzvB,KAAKmR,MAAMiC,OAAQ,CAC5B,GAAIM,GAAUya,SAAS,wBAAyB,yBAA0BnuB,KAAKmR,MAAM8oB,MAErF,OAAO3c,aAAY5J,GACjB+mB,MAASz6B,KAAKmR,MAAM8oB,QACnB,GACE,GAAIj6B,KAAK0C,MAAM8zB,QAAQnY,KAAOre,KAAK0C,MAAMkJ,KAAKyS,GAAI,CACvD,GAAI3K,GAAUya,SAAS,oCAAqC,qCAAsCnuB,KAAKmR,MAAM8oB,MAE7G,OAAO3c,aAAY5J,GACjB+mB,MAASz6B,KAAKmR,MAAM8oB,QACnB,GAEH,GAAIvmB,GAAUya,SAAS,4CAA6C,6CAA8CnuB,KAAKmR,MAAM8oB,MAE7H,OAAO3c,aAAY5J,GACjB8J,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,SAC/Bid,MAASz6B,KAAKmR,MAAM8oB,QACnB,GAnBH,MAAO1c,SAAQ,iBAuBnBta,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMiC,OACNmK,QAAQ,yDACNvd,KAAK0C,MAAMkJ,KAAKyS,KAAOre,KAAK0C,MAAM8zB,QAAQnY,GAC5Cd,QAAQ,oCAERD,YAAYC,QAAQ,6CACzBC,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,WAC9B,OAKFN,GACPke,EAAAA,WAEFx8B,GAAAA,WAAkBse,IAEfoe,cAAc,GAAGtd,MAAQ,UAAUud,IAAI,SAASj9B,EAAQU,EAAOJ,GAClE,YAkDA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAtDje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,gBAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,cAEhBgvB,EAASvrB,EAAuBsrB,GAEhCE,EAAajvB,EAAQ,oBAErBkvB,EAAczrB,EAAuBwrB,GAErCzH,EAAexnB,EAAQ,sBAEvBynB,EAAgBhkB,EAAuB+jB,GAEvC+K,EAAevyB,EAAQ,uBAEvBwyB,EAAgB/uB,EAAuB8uB,GAEvC2K,EAAgBl9B,EAAQ,uBAExBm9B,EAAiB15B,EAAuBy5B,GAExCruB,EAAS7O,EAAQ,2BAEjB0G,EAAQ1G,EAAQ,0BAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,8BAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,2BAEjBgH,EAAUvD,EAAuB4D,GAgBjCuX,EAAS,SAAUuQ,GAGrB,QAASvQ,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAWtF,OATAsB,GAAMmN,OACJse,UAAU,EACVvP,WAAW,EACX1O,MAAO,KAEPkqB,iBAAkB,GAClBC,yBAA0B,GAC1BC,0BAA2B,IAEtB53B,EAgLT,MAhMAsY,GAAUY,EAAQuQ,GAmBlBlrB,EAAa2a,IACXja,IAAK,oBACLG,MAAO,WACL,GAAIse,GAAS1hB,IAEb2E,GAAAA,WAAeG,IAAI9E,KAAK0C,MAAM8zB,QAAQjW,QAAQsb,iBAAiBjb,KAAK,SAAUzK,GAC5EuL,EAAO/H,UACL8V,UAAU,EAEViM,iBAAkBvlB,EAAQulB,iBAC1BC,yBAA0BxlB,EAAQwlB,yBAClCC,0BAA2BzlB,EAAQylB,6BAEpC,SAAU3a,GACXS,EAAO/H,UACL8V,UAAU,EACVje,MAAOyP,EAAUD,cAKvB/d,IAAK,QACLG,MAAO,WACL,MAAIpD,MAAK87B,WACA,GAEP11B,EAAAA,WAAmBoL,MAAMxR,KAAKyrB,WAAWjO,SAAS,KAC3C,MAIXva,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKtgB,KAAK0C,MAAM8zB,QAAQjW,QAAQsb,iBACpDH,iBAAkB17B,KAAKmR,MAAMuqB,iBAC7BC,yBAA0B37B,KAAKmR,MAAMwqB,yBACrCC,0BAA2B57B,KAAKmR,MAAMyqB,+BAI1C34B,IAAK,gBACLG,MAAO,SAAuB24B,GAC5Bz2B,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOiZ,cAAcpmB,KAAK0C,MAAM8zB,QAASuF,EAAYzd,cAClFlY,EAAAA,WAAmB2a,QAAQxD,QAAQ,0CAGrCta,IAAK,cACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqa,SAAUzuB,KAAK8qB,cACjB7N,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,eACfmM,SAAUnM,QAAQ,iHAClBmR,MAAO,uBACTzR,EAAAA,WAAgB7I,cAAc0c,EAAAA,YAAyBzS,GAAI,sBACzDmB,SAAUxf,KAAKmR,MAAM+O,UACrBoR,OAAQ,eACRC,QAAS,YACTC,QAASjU,QAAQ,sCACjBkU,SAAUlU,QAAQ,+BAClB2L,SAAUlpB,KAAKyqB,UAAU,oBACzBrnB,MAAOpD,KAAKmR,MAAMuqB,oBAEtBze,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,gBACfmM,SAAUnM,QAAQ,uFAClBmR,MAAO,+BACTzR,EAAAA,WAAgB7I,cAAc,YAAciK,GAAI,8BAC9CZ,UAAW,eACXue,KAAM,IACNxc,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,4BACzBrnB,MAAOpD,KAAKmR,MAAMwqB,4BAEtB1e,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,iBACfmM,SAAUnM,QAAQ,mGAClBmR,MAAO,gCACTzR,EAAAA,WAAgB7I,cAAc,YAAciK,GAAI,+BAC9CZ,UAAW,eACXue,KAAM,IACNxc,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,6BACzBrnB,MAAOpD,KAAKmR,MAAMyqB,8BAGxB3e,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,kBAAmB6I,eAAgB,SAChE/I,QAAQ,UAEVN,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,cAAegC,QAASzf,KAAKmR,MAAM+O,WAChD3C,QAAQ,sBAOhBta,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMK,MAENyL,EAAAA,WAAgB7I,cAAcqnB,EAAAA,YAA0BjP,KAAM,wBACnE9Y,QAAS1T,KAAKmR,MAAMK,QAEbxR,KAAKmR,MAAMse,SACXzvB,KAAKi8B,cAGLhf,EAAAA,WAAgB7I,cAAc2R,EAAAA,WAAuB,SAKlE9iB,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMK,MACN,mDAEA,wCAIXvO,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,eAChB2I,KAAM,YACRpJ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,QAAS6I,eAAgB,QACpDC,aAAchJ,QAAQ,UACxBN,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,QACjB,MAGJvJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,qBAGZvd,KAAKk8B,qBAONhf,GACPoQ,EAAAA,WAEF1uB,GAAAA,WAAkBse,IAEfiT,0BAA0B,IAAIxB,yBAAyB,IAAIC,6BAA6B,IAAIyB,0BAA0B,IAAIvB,eAAe,GAAGC,aAAa,GAAGC,mBAAmB,GAAGmN,qBAAqB,GAAGC,sBAAsB,GAAGC,sBAAsB,IAAIre,MAAQ,UAAUse,IAAI,SAASh+B,EAAQU,EAAOJ,GAC9S,YAwDA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA9Dje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,gBAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,cAEhBgvB,EAASvrB,EAAuBsrB,GAEhCE,EAAajvB,EAAQ,oBAErBkvB,EAAczrB,EAAuBwrB,GAErCzH,EAAexnB,EAAQ,sBAEvBynB,EAAgBhkB,EAAuB+jB,GAEvC0V,EAAgBl9B,EAAQ,uBAExBm9B,EAAiB15B,EAAuBy5B,GAExCz2B,EAASzG,EAAQ,kBAEjBuG,EAAU9C,EAAuBgD,GAEjCgI,EAAmBzO,EAAQ,sCAE3B6O,EAAS7O,EAAQ,2BAEjB0G,EAAQ1G,EAAQ,0BAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,8BAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,2BAEjBgH,EAAUvD,EAAuB4D,GAEjC2kB,EAAchsB,EAAQ,6BAEtB+sB,EAAa8B,EAAwB7C,GAkBrCpN,EAAS,SAAUuQ,GAGrB,QAASvQ,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAYtF,OAVAsB,GAAMmN,OACJse,UAAU,EACVvP,WAAW,EACX1O,MAAO,KAEPgM,SAAU,GACV6N,YACE7N,UAAW6N,EAAWqC,kBAAmBrC,EAAWsC,kBAAkB9oB,EAAAA,WAAgBC,IAAI,aAAcumB,EAAWyC,kBAAkBjpB,EAAAA,WAAgBC,IAAI,gBAGtJd,EAkJT,MAnKAsY,GAAUY,EAAQuQ,GAoBlBlrB,EAAa2a,IACXja,IAAK,oBACLG,MAAO,WACL,GAAIse,GAAS1hB,IAEb2E,GAAAA,WAAeG,IAAI9E,KAAK0C,MAAM8zB,QAAQjW,QAAQgc,mBAAmB3b,KAAK,WACpEc,EAAO/H,UACL8V,UAAU,KAEX,SAAUxO,GACXS,EAAO/H,UACL8V,UAAU,EACVje,MAAOyP,EAAUD,cAKvB/d,IAAK,QACLG,MAAO,WACL,MAAIpD,MAAK87B,WACA,GAEP11B,EAAAA,WAAmBoL,MAAMxR,KAAKyrB,WAAWjO,SAAS,KAC3C,MAIXva,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKtgB,KAAK0C,MAAM8zB,QAAQjW,QAAQgc,mBACpD/e,SAAUxd,KAAKmR,MAAMqM,cAIzBva,IAAK,gBACLG,MAAO,SAAuB24B,GAC5B/7B,KAAK2Z,UACH6D,SAAU,KAGZlY,EAAAA,WAAgB2G,UAAU,EAAGc,EAAiBwiB,eAAewM,EAAa/7B,KAAK0C,MAAM8zB,QAASx2B,KAAK0C,MAAMkJ,OACzGtG,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOqiB,gBAAgBxvB,KAAK0C,MAAM8zB,QAASuF,EAAYve,SAAUue,EAAYvN,OAE1GpoB,EAAAA,WAAmB2a,QAAQxD,QAAQ,kCAGrCta,IAAK,cACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqa,SAAUzuB,KAAK8qB,cACjB7N,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,gBAAiBmR,MAAO,eACzCzR,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQS,GAAI,cAAeZ,UAAW,eACnF+B,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAMqM,aAGxBP,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,kBAAmB6I,eAAgB,SAChE/I,QAAQ,UAEVN,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,cAAegC,QAASzf,KAAKmR,MAAM+O,WAChD3C,QAAQ,yBAOhBta,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMK,MAENyL,EAAAA,WAAgB7I,cAAcqnB,EAAAA,YAA0BjP,KAAM,wBACnE9Y,QAAS1T,KAAKmR,MAAMK,QAEbxR,KAAKmR,MAAMse,SACXzvB,KAAKi8B,cAGLhf,EAAAA,WAAgB7I,cAAc2R,EAAAA,WAAuB,SAKlE9iB,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMK,MACN,+CAEA,oCAIXvO,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,eAChB2I,KAAM,YACRpJ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,QAAS6I,eAAgB,QACpDC,aAAchJ,QAAQ,UACxBN,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,QACjB,MAGJvJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,qBAGZvd,KAAKk8B,qBAONhf,GACPoQ,EAAAA,WAEF1uB,GAAAA,WAAkBse,IAEf+S,iBAAiB,IAAIC,qCAAqC,IAAIC,0BAA0B,IAAIxB,yBAAyB,IAAIC,6BAA6B,IAAIyB,0BAA0B,IAAIxB,4BAA4B,IAAIC,eAAe,GAAGC,aAAa,GAAGC,mBAAmB,GAAGmN,qBAAqB,GAAGC,sBAAsB,GAAGpe,MAAQ,UAAUwe,IAAI,SAASl+B,EAAQU,EAAOJ,GAClX,YAgDA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApDje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,gBAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,cAEhBgvB,EAASvrB,EAAuBsrB,GAEhCE,EAAajvB,EAAQ,oBAErBkvB,EAAczrB,EAAuBwrB,GAErCzH,EAAexnB,EAAQ,sBAEvBynB,EAAgBhkB,EAAuB+jB,GAEvC0V,EAAgBl9B,EAAQ,uBAExBm9B,EAAiB15B,EAAuBy5B,GAExC3K,EAAevyB,EAAQ,uBAEvBwyB,EAAgB/uB,EAAuB8uB,GAEvC9rB,EAASzG,EAAQ,kBAEjBuG,EAAU9C,EAAuBgD,GAEjCC,EAAQ1G,EAAQ,0BAEhBqG,EAAS5C,EAAuBiD,GAEhCqG,EAAS/M,EAAQ,2BAEjB8M,EAAUrJ,EAAuBsJ,GAgBjC6R,EAAS,SAAUuQ,GAGrB,QAASvQ,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GA4BtF,OA1BAsB,GAAMy4B,UAAY,WAChBj4B,OAAO/E,WAAW,WACZuE,EAAMmN,MAAMsrB,UAAY,GAC1Bz4B,EAAM2V,UACJ8iB,UAAWz4B,EAAMmN,MAAMsrB,UAAY,IAErCz4B,EAAMy4B,aACIz4B,EAAMmN,MAAMwC,SACtB3P,EAAM2V,UACJhG,SAAS,KAGZ,MAGL3P,EAAMmN,OACJse,UAAU,EACVvP,WAAW,EACXwc,WAAW,EACXlrB,MAAO,KAEPirB,UAAW,EACX9oB,SAAS,EAETgpB,cAAc,GAET34B,EAqNT,MAtPAsY,GAAUY,EAAQuQ,GAoClBlrB,EAAa2a,IACXja,IAAK,oBACLG,MAAO,WACL,GAAIse,GAAS1hB,IAEb2E,GAAAA,WAAeG,IAAI9E,KAAK0C,MAAM8zB,QAAQjW,QAAnBvgB,WAAmC4gB,KAAK,WACzDc,EAAO/H,UACL8V,UAAU,IAGZ/N,EAAO+a,aACN,SAAUxb,GACXS,EAAO/H,UACL8V,UAAU,EACVje,MAAOyP,EAAUD,cAQvB/d,IAAK,OAILG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKtgB,KAAK0C,MAAM8zB,QAAQjW,QAAnBvgB,WACzB28B,aAAc38B,KAAKmR,MAAMwrB,kBAI7B15B,IAAK,gBACLG,MAAO,WACLgI,EAAAA,WAAgBmtB,KAAK,gBAEjBv4B,KAAKmR,MAAMwrB,aACb38B,KAAK2Z,UACH+iB,UAAWpf,YAAYC,QAAQ,+EAC7BC,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,WAC9B,KAGLxd,KAAK2Z,UACH+iB,UAAWpf,YAAYC,QAAQ,+EAC7BC,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,WAC9B,QAKTva,IAAK,iBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMwC,QACN2J,YAAYC,QAAQ,wBACzBC,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,WAC9B,GAEIF,YAAYC,QAAQ,oCACzBkf,UAAaz8B,KAAKmR,MAAMsrB,YACvB,MAIPx5B,IAAK,UACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqa,SAAUzuB,KAAK8qB,aAAcrN,UAAW,mBAC1CR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,gBACfoM,WAAY,WAAYG,aAAc,WACtC4E,MAAO,mBACTzR,EAAAA,WAAgB7I,cAAc0c,EAAAA,YAAyBzS,GAAI,kBACzDmB,SAAUxf,KAAKmR,MAAM+O,UACrBsR,QAASjU,QAAQ,uCACjBkU,SAAUlU,QAAQ,sCAClB2L,SAAUlpB,KAAKyqB,UAAU,gBACzBrnB,MAAOpD,KAAKmR,MAAMwrB,iBAGxB1f,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SACNH,UAAW,kBACX6I,eAAgB,SAClB/I,QAAQ,WAEVN,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,aACXgC,QAASzf,KAAKmR,MAAM+O,UACpBV,UAAWxf,KAAKmR,MAAMwC,SACxB3T,KAAK48B,uBAOb35B,IAAK,iBACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,iBAGJR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAKmR,MAAMurB,WAEbzf,EAAAA,WAAgB7I,cACd,IACA,KACA6I,EAAAA,WAAgB7I,cACd,KACEtB,KAAMjO,EAAAA,WAAgBC,IAAI,mBAC5ByY,QAAQ,+BAQlBta,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMK,MAENyL,EAAAA,WAAgB7I,cAAcqnB,EAAAA,YAA0BjP,KAAM,wBACnE9Y,QAAS1T,KAAKmR,MAAMK,QAEbxR,KAAKmR,MAAMse,SACdzvB,KAAKmR,MAAMurB,UACN18B,KAAK68B,iBAEL78B,KAAK88B,UAIP7f,EAAAA,WAAgB7I,cAAc2R,EAAAA,WAAuB,SAKlE9iB,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMK,OAASxR,KAAKmR,MAAMurB,UAC1B,kDAEA,uCAIXz5B,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,eAChB2I,KAAM,YACRpJ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,QAAS6I,eAAgB,QACpDC,aAAchJ,QAAQ,UACxBN,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,QACjB,MAGJvJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,yBAGZvd,KAAKk8B,qBAONhf,GACPoQ,EAAAA,WAEF1uB,GAAAA,WAAkBse,IAEf+S,iBAAiB,IAAItB,yBAAyB,IAAIoO,0BAA0B,IAAIjO,eAAe,GAAGC,aAAa,GAAGC,mBAAmB,GAAGmN,qBAAqB,GAAGC,sBAAsB,GAAGC,sBAAsB,IAAIre,MAAQ,UAAUgf,IAAI,SAAS1+B,EAAQU,EAAOJ,GACpQ,YA8BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAlCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCnW,EAAcvI,EAAQ,eAEtB2+B,EAAkB3+B,EAAQ,qBAE1B4+B,EAAmBn7B,EAAuBk7B,GAE1CE,EAAkB7+B,EAAQ,qBAE1B8+B,EAAmBr7B,EAAuBo7B,GAE1CE,EAAiB/+B,EAAQ,oBAEzBg/B,EAAkBv7B,EAAuBs7B,GAEzC33B,EAASpH,EAAQ,2BAEjBkH,EAAUzD,EAAuB2D,GAgBjCsB,EAAS,SAAgB+rB,GAC3B,OACEC,KAAMD,EAAMC,KACZpnB,KAAMmnB,EAAMlW,KACZ2Z,QAASzD,EAAMyD,UAKftZ,EAAS,SAAUC,GAGrB,QAASD,KACP,GAAIgG,GAEAC,EAAOnf,EAAOof,CAElBjhB,GAAgBnC,KAAMkd,EAEtB,KAAK,GAAImG,GAAO/iB,UAAUxB,OAAQsB,EAAOC,MAAMgjB,GAAOC,EAAO,EAAUD,EAAPC,EAAaA,IAC3EljB,EAAKkjB,GAAQhjB,UAAUgjB,EAGzB,OAAeH,GAASnf,EAAQoY,EAA2Bpc,MAAOkjB,EAAwBngB,OAAOqa,eAAeF,IAASre,KAAK4B,MAAMyiB,GAAwBljB,MAAMX,OAAOe,KAAiB4D,EAAMu5B,iBAAmB,WACjN/3B,EAAAA,WAAgBg4B,MAAM,EAAG32B,EAAYC,SAASE,GAAQk2B,EAAAA,cACrDl5B,EAAMy5B,iBAAmB,WAC1Bj4B,EAAAA,WAAgBg4B,MAAM,EAAG32B,EAAYC,SAASE,GAAQo2B,EAAAA,cACrDp5B,EAAM05B,iBAAmB,WAC1Bl4B,EAAAA,WAAgBg4B,MAAM,EAAG32B,EAAYC,SAASE,GAAQs2B,EAAAA,cALjDla,EAMJD,EAAQ/G,EAA2BpY,EAAOof,GA6H/C,MAhJA9G,GAAUY,EAAQC,GAuBlB5a,EAAa2a,IACXja,IAAK,kBAILG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQpI,IAAIuP,oBAElB1gB,EAAAA,WAAgB7I,cACrB,KACA,KACA6I,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,WAC3BI,QAAS7d,KAAKu9B,kBAChBtgB,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,YAEFF,QAAQ,qBAKH,QAObta,IAAK,kBAILG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQpI,IAAIwP,WAElB3gB,EAAAA,WAAgB7I,cACrB,KACA,KACA6I,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,WAC3BI,QAAS7d,KAAKy9B,kBAChBxgB,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,eAEFF,QAAQ,qBAKH,QAObta,IAAK,kBAILG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQpI,IAAIyP,WAElB5gB,EAAAA,WAAgB7I,cACrB,KACA,KACA6I,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,WAC3BI,QAAS7d,KAAK09B,kBAChBzgB,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,SAEFF,QAAQ,oBAKH,QAIbta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,oCAAqC4I,KAAM,QACxDrmB,KAAK89B,kBACL99B,KAAK+9B,kBACL/9B,KAAKg+B,kBACL/gB,EAAAA,WAAgB7I,cAAc,MAAQqJ,UAAW,gCACjDR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,wCACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,4BAC3BI,QAAS7d,KAAK0C,MAAM6wB,WACtBtW,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,QAEFF,QAAQ,eAQXL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf+gB,0BAA0B,IAAIC,oBAAoB,GAAGC,oBAAoB,GAAGC,mBAAmB,GAAGpgB,MAAQ,QAAQ1W,cAAc,gBAAgB+2B,IAAI,SAAS//B,EAAQU,EAAOJ,GAC/K,YA2BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA/Bje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQszB,WAAatzB,EAAQuzB,QAAU7uB,MAEvC,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCoV,EAAe9zB,EAAQ,gBAEvB+zB,EAAM/zB,EAAQ,SAEdg0B,EAAOvwB,EAAuBswB,GAE9B6D,EAAgB53B,EAAQ,mBAExB63B,EAAiBp0B,EAAuBm0B,GAExCnxB,EAASzG,EAAQ,eAgBjB6zB,GAdUpwB,EAAuBgD,GAcvBnG,EAAQuzB,QAAU,SAAUhV,GAGxC,QAASgV,KAGP,MAFAhwB,GAAgBnC,KAAMmyB,GAEf/V,EAA2Bpc,KAAM+C,OAAOqa,eAAe+U,GAAS1xB,MAAMT,KAAMM,YAgDrF,MArDAgc,GAAU6V,EAAShV,GAQnB5a,EAAa4vB,IACXlvB,IAAK,UACLG,MAAO,SAAiBk7B,GACtB,MAAIA,GAEKrhB,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,SACbzd,KAAK0C,MAAM8zB,QAAQ8H,EAAK3zB,OAIjB,QAIb1H,IAAK,SACLG,MAAO,WACL,GAAIse,GAAS1hB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,uBACbzd,KAAK0C,MAAMy3B,MAAMvW,IAAI,SAAUmW,GAC7B,MAAO9c,GAAAA,WAAgB7I,cACrBge,EAAaI,MACXC,GAAI/Q,EAAOhf,MAAMgwB,QAAUqH,EAAKjyB,UAAY,IAC5C2V,UAAW,kBACXwO,gBAAiB,SACjBhpB,IAAK82B,EAAKjyB,WACZmV,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACbsc,EAAKvN,MAEPuN,EAAKv4B,KACLkgB,EAAO6c,QAAQxE,EAAKuE,cAQvBnM,GACPlV,EAAAA,WAAgBc,WAEDnf,GAAQszB,WAAa,SAAUsM,GAG9C,QAAStM,KAGP,MAFA/vB,GAAgBnC,KAAMkyB,GAEf9V,EAA2Bpc,KAAM+C,OAAOqa,eAAe8U,GAAYzxB,MAAMT,KAAMM,YA4FxF,MAjGAgc,GAAU4V,EAAYsM,GAQtBj8B,EAAa2vB,IACXjvB,IAAK,qBACLG,MAAO,WACL,MAAOpD,MAAK0C,MAAM8zB,QAAQpI,IAAI2I,YAAc/2B,KAAK0C,MAAM8zB,QAAQpI,IAAI4I,gBAGrE/zB,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQpI,IAAI2I,WAElB9Z,EAAAA,WAAgB7I,cAAc+hB,EAAAA,YAA0B1Y,UAAW,gBACxE+Y,QAASx2B,KAAK0C,MAAM8zB,UAGb,QAIbvzB,IAAK,sBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM8zB,QAAQpI,IAAI4I,aAElB/Z,EAAAA,WAAgB7I,cACrB,UACEwJ,KAAM,SAAUH,UAAW,4BAC3BI,QAAS7d,KAAK0C,MAAM+7B,kBACtBxhB,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,YAEFF,QAAQ,eAID,QAIbta,IAAK,oBACLG,MAAO,WACL,MAAIpD,MAAK0+B,qBAEAzhB,EAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,oBACbzd,KAAKk3B,kBACLl3B,KAAKm3B,uBAIE,QAIbl0B,IAAK,SACLG,MAAO,WACL,GAAI2gB,GAAS/jB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,gBAAiB4I,KAAM,QACpCrmB,KAAK2+B,oBACL3+B,KAAK0+B,qBAAuBzhB,EAAAA,WAAgB7I,cAAc,MAAQqJ,UAAW,YAAe,KAC5Fzd,KAAK0C,MAAMy3B,MAAMvW,IAAI,SAAUmW,GAC7B,MAAO9c,GAAAA,WAAgB7I,cACrBke,EAAAA,YACErf,KAAM8Q,EAAOrhB,MAAMgwB,QAAUqH,EAAKjyB,UAAY,IAC9C7E,IAAK82B,EAAKjyB;EACZmV,EAAAA,WAAgB7I,cACdge,EAAaI,MACXC,GAAI1O,EAAOrhB,MAAMgwB,QAAUqH,EAAKjyB,UAAY,IAC5C+V,QAASkG,EAAOrhB,MAAMiwB,SACxB1V,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACbsc,EAAKvN,MAEPuN,EAAKv4B,KACLuiB,EAAOwa,QAAQxE,EAAKuE,eASzBpM,GACPC,KAEC/N,cAAc,IAAIwO,QAAQ,GAAG8E,kBAAkB,GAAG1Z,MAAQ,QAAQ6U,eAAe,iBAAiB+L,IAAI,SAAStgC,EAAQU,EAAOJ,GACjI,YA4DA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAqLje,QAASxV,GAAO+rB,GACd,OACEC,KAAQD,EAAMC,KAAKA,KACnBpnB,KAAQmnB,EAAMlW,KAAKjR,KACnB6uB,MAAS1H,EAAM0H,MACfjE,QAAWzD,EAAMyD,QACjBvD,mBAAoBF,EAAM,qBA0C9B,QAAS/qB,KACP,GAAIA,KASJ,OAPAnD,GAAAA,WAAgBC,IAAI,iBAAiBX,QAAQ,SAAUP,GACrDoE,EAAMzH,KAAKwC,OAAO0I,UAAW7H,GAC3BqP,KAAMpO,EAAAA,WAAgBC,IAAI,WAAWwD,aAAe1E,EAAKkE,UAAY,IACrEA,WAAY,EAAGjB,EAAYC,SAASE,GAAQ63B,EAAWj7B,EAAKkE,iBAIzDE,EA/ST,GAAIzF,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQoI,OAASA,EACjBpI,EAAQoJ,MAAQA,CAEhB,IAAIgV,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCnW,EAAcvI,EAAQ,eAEtBwhB,EAAUxhB,EAAQ,aAElBimB,EAAWxiB,EAAuB+d,GAElCgf,EAAcxgC,EAAQ,iBAEtBygC,EAAeh9B,EAAuB+8B,GAEtC3D,EAAa78B,EAAQ,eAErB88B,EAAcr5B,EAAuBo5B,GAErC6D,EAAW1gC,EAAQ,aAEnB2gC,EAAYl9B,EAAuBi9B,GAEnCjyB,EAAmBzO,EAAQ,sBAE3BwO,EAAoB/K,EAAuBgL,GAE3CmyB,EAAU5gC,EAAQ,YAElB6gC,EAAWp9B,EAAuBm9B,GAElC9I,EAAO93B,EAAQ,oBAEf+3B,EAAQt0B,EAAuBq0B,GAE/BhD,EAAQ90B,EAAQ,UAEhByG,EAASzG,EAAQ,eAEjBuG,EAAU9C,EAAuBgD,GAEjCmH,EAAW5N,EAAQ,0BAEnB+M,EAAS/M,EAAQ,wBAEjB8M,EAAUrJ,EAAuBsJ,GAEjC1F,EAASrH,EAAQ,wBAEjBgH,EAAUvD,EAAuB4D,GAoBjCuX,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAyCtF,OAvCAsB,GAAM6zB,OAAS,SAAUhX,GACvBvb,EAAAA,WAAgB2G,UAAU,EAAGC,EAASC,WAAW0U,KAGnD7c,EAAMuvB,UAAY,WACa,UAAzBvvB,EAAMmN,MAAMqiB,SACdxvB,EAAM2V,UACJ6Z,UAAU,IAGZxvB,EAAM2V,UACJ6Z,SAAU,WAKhBxvB,EAAMy6B,iBAAmB,WACM,eAAzBz6B,EAAMmN,MAAMqiB,SACdxvB,EAAM2V,UACJ6Z,UAAU,IAGZxvB,EAAM2V,UACJ6Z,SAAU,gBAKhBxvB,EAAM2uB,QAAU,WACd3uB,EAAM2V,UACJ6Z,UAAU,KAIdxvB,EAAMmN,OACJqiB,UAAU,GAGZxvB,EAAMk0B,aAAax1B,EAAM8zB,QAAQjW,QAAQ1Y,MAClC7D,EAsHT,MApKAsY,GAAUY,EAAQC,GAiDlB5a,EAAa2a,IACXja,IAAK,eACLG,MAAO,SAAsB+0B,GAC3B/sB,EAAAA,WAAgBgtB,OACdC,KAAM,eACNja,IAAK+Z,EACLG,UAAW,IACXT,OAAQ73B,KAAK63B,YAWjB50B,IAAK,wBAILG,MAAO,WACL,MAAIpD,MAAKmR,MAAMqiB,SACN,gCAEA,8BAIXvwB,IAAK,yBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMqiB,SACN,mBAEA,iBAIXvwB,IAAK,iBACLG,MAAO,WACL,MAA4B,UAAxBpD,KAAKmR,MAAMqiB,SAENvW,EAAAA,WAAgB7I,cAAcgf,EAAMlB,YAAciI,MAAOt1B,EAAAA,WAAgBC,IAAI,iBAClF4tB,QAAS7tB,EAAAA,WAAgBC,IAAI,WAAWwD,aACxCkuB,QAASx2B,KAAK0C,MAAM8zB,QACpBiI,iBAAkBz+B,KAAKy+B,iBACvB9L,QAAS3yB,KAAK2yB,UAEiB,eAAxB3yB,KAAKmR,MAAMqiB,SAEXvW,EAAAA,WAAgB7I,cAAciiB,EAAAA,YAAiBG,QAASx2B,KAAK0C,MAAM8zB,QACxEjD,UAAWvzB,KAAKuzB,UAChBZ,QAAS3yB,KAAK2yB,UAGP,QAIf1vB,IAAK,eACLG,MAAO,WACL,GAAIg8B,GAAY,wBAId,OAAOA,MAIXn8B,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,gBAClBT,EAAAA,WAAgB7I,cAAc+qB,EAAAA,YAAoBvzB,KAAM5L,KAAK0C,MAAMkJ,KACjE4qB,QAASx2B,KAAK0C,MAAM8zB,QACpBjD,UAAWvzB,KAAKuzB,UAChBkL,iBAAkBz+B,KAAKy+B,mBACzBxhB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAWzd,KAAK2zB,0BAClB3zB,KAAKq/B,kBAEPpiB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,uBACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAM5L,KAAK0C,MAAM8zB,QAASrY,KAAM,SAEpFlB,EAAAA,WAAgB7I,cAAcgf,EAAMjB,SAAWgI,MAAOt1B,EAAAA,WAAgBC,IAAI,iBACxE4tB,QAAS7tB,EAAAA,WAAgBC,IAAI,WAAWwD,aACxCkuB,QAASx2B,KAAK0C,MAAM8zB,WAExBvZ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,YACbzd,KAAK0C,MAAMgd,iBAShBxC,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,CAWlB,IAAIoiB,GAAc,SAAU7b,GAG1B,QAAS6b,KAGP,MAFAn9B,GAAgBnC,KAAMs/B,GAEfljB,EAA2Bpc,KAAM+C,OAAOqa,eAAekiB,GAAa7+B,MAAMT,KAAMM,YAoBzF,MAzBAgc,GAAUgjB,EAAa7b,GAQvBlhB,EAAa+8B,IACXr8B,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,IACA,KACA,8BAAgCpU,KAAK0C,MAAM68B,MAAM/9B,WAOlD89B,GACPriB,EAAAA,WAAgBc,WAEd8gB,GACFW,MAASF,EACTG,QAAWH,EACXlG,UAAagC,EAAAA,WACbsE,QAAWT,EAAAA,WACXhM,mBAAoBnmB,EAAAA,WACpB6yB,cAAeZ,EAAAA,cAgBd3a,cAAc,IAAIoV,yBAAyB,IAAIV,uBAAuB,IAAInS,uBAAuB,IAAIhE,YAAY,GAAGid,WAAW,GAAGC,gBAAgB,GAAGvE,cAAc,GAAGwE,YAAY,GAAGnI,mBAAmB,GAAG7D,SAAS,GAAGiM,qBAAqB,GAAG/hB,MAAQ,QAAQ1W,cAAc,gBAAgB04B,IAAI,SAAS1hC,EAAQU,EAAOJ,GAC5T,YA8CA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAlDje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,aAElB0hB,EAAWje,EAAuBge,GAElC2Z,EAAUp7B,EAAQ,aAElBq7B,EAAW53B,EAAuB23B,GAElC3sB,EAAmBzO,EAAQ,uBAE3BwO,EAAoB/K,EAAuBgL,GAE3ChI,EAASzG,EAAQ,eAEjBuG,EAAU9C,EAAuBgD,GAEjCuqB,EAAoBhxB,EAAQ,mCAE5B0G,EAAQ1G,EAAQ,uBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,2BAEpB8H,EAAarE,EAAuBwE,GAEpCZ,EAASrH,EAAQ,wBAEjBgH,EAAUvD,EAAuB4D,GAEjCsF,EAAa3M,EAAQ,6BAErByM,EAAchJ,EAAuBkJ,GAarCiS,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAgCtF,OA9BAsB,GAAM41B,SAAW,WACf51B,EAAM2V,UACJkgB,QAAQ,IAGV71B,EAAMi8B,YAAYj8B,EAAMmN,MAAM4oB,KAAO,EAAG/1B,EAAMmN,MAAMiC,SAGtDpP,EAAMoP,OAAS,SAAU4mB,GACvBh2B,EAAM2V,UACJ8V,UAAU,EACVoK,QAAQ,EAERzmB,OAAQ4mB,EAAGv3B,OAAOW,MAElB62B,MAAO,EACPC,KAAM,EAENH,KAAM,EACNI,MAAO,IAGTn2B,EAAMi8B,YAAY,EAAGjG,EAAGv3B,OAAOW,QAG7ByB,EAAAA,WAAgBR,IAAI,wBACtBL,EAAM+zB,sBAAsBlzB,EAAAA,WAAgBmzB,IAAI,yBAEhDh0B,EAAMi0B,2BAEDj0B,EAgLT,MArNAsY,GAAUY,EAAQC,GAwClB5a,EAAa2a,IACXja,IAAK,wBACLG,MAAO,SAA+Byd,GACpC7gB,KAAKmR,OACHse,UAAU,EACVoK,QAAQ,EAERzmB,OAAQ,GAER6mB,MAAOpZ,EAAKoZ,MACZC,KAAMrZ,EAAKqZ,KAEXH,KAAMlZ,EAAKkZ,KACXI,MAAOtZ,EAAKsZ,OAGd70B,EAAAA,WAAgB2G,UAAU,EAAGqjB,EAAkBnjB,WAAW0U,EAAKiP,aAGjE7sB,IAAK,2BACLG,MAAO,WACLpD,KAAKmR,OACHse,UAAU,EACVoK,QAAQ,EAERzmB,OAAQ,GAER6mB,MAAO,EACPC,KAAM,EAENH,KAAM,EACNI,MAAO,GAGTn6B,KAAKigC,iBAGPh9B,IAAK,cACLG,MAAO,WACL,GAAIse,GAAS1hB,KAET+5B,EAAOz5B,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,EAAIA,UAAU,GAC3E8S,EAAS9S,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEpFqE,GAAAA,WAAeG,IAAID,EAAAA,WAAgBC,IAAI,yBACrC8G,KAAM5L,KAAK0C,MAAM8zB,QAAQnY,GACzBjL,OAAQA,EACR2mB,KAAMA,GAAQ,GACb,2BAA2BnZ,KAAK,SAAUC,GAC9B,IAATkZ,EACFz0B,EAAAA,WAAgB2G,UAAU,EAAGqjB,EAAkBnjB,WAAW0U,EAAKiP,UAE/DxqB,EAAAA,WAAgB2G,UAAU,EAAGqjB,EAAkBvH,QAAQlH,EAAKiP,UAG9DpO,EAAO/H,UACL8V,UAAU,EACVoK,QAAQ,EAERI,MAAOpZ,EAAKoZ,MACZC,KAAMrZ,EAAKqZ,KAEXH,KAAMlZ,EAAKkZ,KACXI,MAAOtZ,EAAKsZ,SAEb,SAAUlZ,GACX7a,EAAAA,WAAmBwlB,SAAS3K,QAIhChe,IAAK,oBACLG,MAAO,WACL2H,EAAAA,WAAoB2kB,KAClBhvB,MAAO6c,QAAQ,oBACfoS,OAAQ3vB,KAAK0C,MAAM8zB,QAAQhZ,cAO/Bva,IAAK,WAILG,MAAO,WACL,GAAKpD,KAAKmR,MAAMse,SAET,CAAA,GAAIzvB,KAAKmR,MAAMiC,OAAQ,CAC5B,GAAIM,GAAUya,SAAS,qCAAsC,sCAAuCnuB,KAAKmR,MAAM8oB,MAE/G,OAAO3c,aAAY5J,GACjBsc,QAAWhwB,KAAKmR,MAAM8oB,QACrB,GACE,GAAIj6B,KAAK0C,MAAM8zB,QAAQnY,KAAOre,KAAK0C,MAAMkJ,KAAKyS,GAAI,CACvD,GAAI3K,GAAUya,SAAS,8CAA+C,+CAAgDnuB,KAAKmR,MAAM8oB,MAEjI,OAAO3c,aAAY5J,GACjBsc,QAAWhwB,KAAKmR,MAAM8oB,QACrB,GAEH,GAAIvmB,GAAUya,SAAS,wDAAyD,yDAA0DnuB,KAAKmR,MAAM8oB,MAErJ,OAAO3c,aAAY5J,GACjB8J,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,SAC/BwS,QAAWhwB,KAAKmR,MAAM8oB,QACrB,GAnBH,MAAO1c,SAAQ,iBAuBnBta,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMiC,OACNmK,QAAQ,oEACNvd,KAAK0C,MAAMkJ,KAAKyS,KAAOre,KAAK0C,MAAM8zB,QAAQnY,GAC5Cd,QAAQ,wDAERD,YAAYC,QAAQ,+CACzBC,SAAYxd,KAAK0C,MAAM8zB,QAAQhZ,WAC9B,MAIPva,IAAK,gBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAM+oB,KAENjd,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEP,QAASzf,KAAKmR,MAAM0oB,OACpBhc,QAAS7d,KAAK45B,UAChBtc,YAAYC,QAAQ,0BAClB2c,KAAQl6B,KAAKmR,MAAM+oB,OAClB,KAKE,QAIbj3B,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,4BACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,WACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,gBACbzd,KAAKu5B,YAEPtc,EAAAA,WAAgB7I,cAAculB,EAAAA,YAAoBlc,UAAW,gBAC3Dra,MAAOpD,KAAKmR,MAAMiC,OAClB8V,SAAUlpB,KAAKoT,OACf0nB,YAAavd,QAAQ,wBAEzBN,EAAAA,WAAgB7I,cAActH,EAAAA,YAA6B2iB,SAAUzvB,KAAKmR,MAAMse,SAC9EyQ,aAAclgC,KAAK06B,kBACnB1K,QAAShwB,KAAK0C,MAAM,sBACtB1C,KAAK66B,qBAMJ3d,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfkH,cAAc,IAAI+b,kCAAkC,IAAI1d,sBAAsB,IAAImP,4BAA4B,IAAIlP,0BAA0B,IAAIiE,uBAAuB,IAAI/D,YAAY,GAAGoY,YAAY,GAAGoF,sBAAsB,IAAIpiB,MAAQ,UAAUqiB,IAAI,SAAS/hC,EAAQU,EAAOJ,GACpR,YAoCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAxCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCqC,EAAU/gB,EAAQ,YAElBghB,EAAWvd,EAAuBsd,GAElCihB,EAAYhiC,EAAQ,iBAEpBiiC,EAAax+B,EAAuBu+B,GAEpCj6B,EAAW/H,EAAQ,uBAEnB4H,EAAYnE,EAAuBsE,GAEnCX,EAASpH,EAAQ,qBAEjBkH,EAAUzD,EAAuB2D,GAEjCa,EAAYjI,EAAQ,wBAEpB8H,EAAarE,EAAuBwE,GAEpCuH,EAAUxP,EAAQ,sBAElBuP,EAAW9L,EAAuB+L,GAgBlCoP,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GA6BtF,OA3BAsB,GAAMw8B,kBAAoB,WAC0B,WAA9Cl8B,OAAOQ,IAAI,YAAY27B,mBACzBr6B,EAAAA,WAAmB6hB,KAAK1K,QAAQ,8CACvBvZ,EAAMmN,MAAMse,SACrBjqB,EAAAA,WAAgBg4B,KAAK+C,EAAAA,aAErBv8B,EAAM2V,UACJuG,WAAa,IAGf0P,QAAQC,KAAK3pB,EAAAA,WAAkBw6B,OAAQ7yB,EAAAA,WAAiB6yB,SAAS9f,KAAK,WAC/D5c,EAAMmN,MAAMse,UACfzrB,EAAM2V,UACJuG,WAAa,EACbuP,UAAY,IAIhBjqB,EAAAA,WAAgBg4B,KAAK+C,EAAAA,gBAK3Bv8B,EAAMmN,OACJ+O,WAAa,EACbuP,UAAY,GAEPzrB,EA6BT,MA/DAsY,GAAUY,EAAQC,GAuClB5a,EAAa2a,IACXja,IAAK,eAILG,MAAO,WACL,MAAOpD,MAAK0C,MAAM+a,WAAazd,KAAKmR,MAAM+O,UAAY,eAAiB,OAGzEjd,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,UACEwJ,KAAM,SAAUC,QAAS7d,KAAKwgC,kBAC9B/iB,UAAW,OAASzd,KAAK0d,eACzB8B,SAAUxf,KAAKmR,MAAMse,UACvBlS,QAAQ,YACRvd,KAAKmR,MAAM+O,UAAYjD,EAAAA,WAAgB7I,cAAckL,EAAAA,WAAkB,MAAQ,UAM9EpC,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfyjB,sBAAsB,IAAIC,oBAAoB,IAAI/U,uBAAuB,IAAImK,qBAAqB,IAAIpW,WAAW,GAAGihB,gBAAgB,GAAG7iB,MAAQ,UAAU8iB,IAAI,SAASxiC,EAAQU,EAAOJ,GACxL,YA6DA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAnEje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQmiC,iBAAmBniC,EAAQoiC,aAAe19B,MAElD,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+C,EAAUzhB,EAAQ,YAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,UAEhBgvB,EAASvrB,EAAuBsrB,GAEhCE,EAAajvB,EAAQ,gBAErBkvB,EAAczrB,EAAuBwrB,GAErC0T,EAAoB3iC,EAAQ,uBAE5B4iC,EAAqBn/B,EAAuBk/B,GAE5Cl8B,EAASzG,EAAQ,YAEjBuG,EAAU9C,EAAuBgD,GAEjCC,EAAQ1G,EAAQ,oBAEhBqG,EAAS5C,EAAuBiD,GAEhCS,EAAQnH,EAAQ,oBAEhB+G,EAAStD,EAAuB0D,GAEhCY,EAAW/H,EAAQ,uBAEnB4H,EAAYnE,EAAuBsE,GAEnCX,EAASpH,EAAQ,qBAEjBkH,EAAUzD,EAAuB2D,GAEjCa,EAAYjI,EAAQ,wBAEpB8H,EAAarE,EAAuBwE,GAEpCkB,EAAcnJ,EAAQ,wBAEtBkJ,EAAezF,EAAuB0F,GAEtC6iB,EAAchsB,EAAQ,uBAEtB+sB,EAAa8B,EAAwB7C,GAerC0W,EAAepiC,EAAQoiC,aAAe,SAAUvT,GAGlD,QAASuT,GAAat+B,GACpBP,EAAgBnC,KAAMghC,EAEtB,IAAIh9B,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAe4jB,GAAcniC,KAAKmB,KAAM0C,GAmB5F,OAjBAsB,GAAMmN,OACJ+O,WAAW,EAEX1C,SAAU,GACV2W,MAAO,GACPD,SAAU,GACViN,QAAS,GAET9V,YACE7N,UAAW6N,EAAWqC,kBAAmBrC,EAAWsC,kBAAkB9oB,EAAAA,WAAgBC,IAAI,aAAcumB,EAAWyC,kBAAkBjpB,EAAAA,WAAgBC,IAAI,cACzJqvB,OAAQ9I,EAAW8I,SACnBD,UAAW7I,EAAWqJ,kBAAkB7vB,EAAAA,WAAgBC,IAAI,cAC5Dq8B,QAASj7B,EAAAA,WAAkBk7B,aAG7BxW,WAEK5mB,EA6JT,MArLAsY,GAAU0kB,EAAcvT,GA2BxBlrB,EAAay+B,IACX/9B,IAAK,QACLG,MAAO,WACL,MAAIpD,MAAK87B,WACA,GAEP11B,EAAAA,WAAmBoL,MAAM+L,QAAQ,0BACjCvd,KAAK2Z,UACHiR,OAAQ5qB,KAAKyrB,cAER,MAIXxoB,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKzb,EAAAA,WAAgBC,IAAI,cAC7C0Y,SAAUxd,KAAKmR,MAAMqM,SACrB2W,MAAOn0B,KAAKmR,MAAMgjB,MAClBD,SAAUl0B,KAAKmR,MAAM+iB,SACrBiN,QAASnhC,KAAKmR,MAAMgwB,aAIxBl+B,IAAK,gBACLG,MAAO,SAAuB24B,GAC5B/7B,KAAK0C,MAAMgO,SAASqrB,MAGtB94B,IAAK,cACLG,MAAO,SAAqB6d,GACD,MAArBA,EAAUC,QACZlhB,KAAK2Z,UACHiR,OAAU7nB,OAAO0I,UAAWzL,KAAKmR,MAAMyZ,OAAQ3J,KAEjD7a,EAAAA,WAAmBoL,MAAM+L,QAAQ,2BACH,MAArB0D,EAAUC,QAAkBD,EAAU6W,MAC9C,EAAGtwB,EAAAA,YAAsByZ,EAAU6W,KACpCtyB,EAAAA,WAAgB67B,QAEhBj7B,EAAAA,WAAmBwlB,SAAS3K,MAIhChe,IAAK,mBACLG,MAAO,WACL,MAAIyB,GAAAA,WAAgBC,IAAI,wBAEfmY,EAAAA,WAAgB7I,cACrB,KACEtB,KAAMjO,EAAAA,WAAgBC,IAAI,wBAC1BrC,OAAQ,UACV8a,QAAQ,6DAID,QAIbta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,8BAA+B4I,KAAM,YAClDpJ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,QAAS6I,eAAgB,QACpDC,aAAchJ,QAAQ,UACxBN,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,QACjB,MAGJvJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,cAGZN,EAAAA,WAAgB7I,cACd,QACEqa,SAAUzuB,KAAK8qB,aAAcrN,UAAW,mBAC1CR,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQoL,OAASsL,QAAS,UACzErX,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYoL,OAASsL,QAAS,UAC7ErX,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,YAAamR,MAAO,cACnC/E,WAAY,WAAYG,aAAc,WACtCN,WAAYxpB,KAAKmR,MAAMyZ,OAAOpN,UAChCP,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQS,GAAI,cAAeZ,UAAW,eACnF6jB,mBAAoB,qBACpB9hB,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAMqM,YAEtBP,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,UAAWmR,MAAO,WACjC/E,WAAY,WAAYG,aAAc,WACtCN,WAAYxpB,KAAKmR,MAAMyZ,OAAOuJ,OAChClX,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQS,GAAI,WAAYZ,UAAW,eAChF6jB,mBAAoB,kBACpB9hB,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,SACzBrnB,MAAOpD,KAAKmR,MAAMgjB,SAEtBlX,EAAAA,WAAgB7I,cACdoZ,EAAAA,YACE3D,MAAOtM,QAAQ,YAAamR,MAAO,cACnC/E,WAAY,WAAYG,aAAc,WACtCN,WAAYxpB,KAAKmR,MAAMyZ,OAAOsJ,SAC9B/J,MAAOlN,EAAAA,WAAgB7I,cAAc8sB,EAAAA,YAA8BhN,SAAUl0B,KAAKmR,MAAM+iB,SACtFyB,QAAS31B,KAAKmR,MAAMqM,SAAUxd,KAAKmR,MAAMgjB,UAC7ClX,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYS,GAAI,cAAeZ,UAAW,eACvF6jB,mBAAoB,qBACpB9hB,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAM+iB,YAEtBhuB,EAAAA,WAAkB4B,WAChBy5B,KAAMvhC,KACN2pB,WAAY,WACZG,aAAc,cAGlB7M,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbzd,KAAKwhC,mBACLvkB,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,cAAegC,QAASzf,KAAKmR,MAAM+O,WAChD3C,QAAQ,6BAUfyjB,GACP1T,EAAAA,YAEEyT,EAAmBniC,EAAQmiC,iBAAmB,SAAU5jB,GAG1D,QAAS4jB,KAGP,MAFA5+B,GAAgBnC,KAAM+gC,GAEf3kB,EAA2Bpc,KAAM+C,OAAOqa,eAAe2jB,GAAkBtgC,MAAMT,KAAMM,YAoF9F,MAzFAgc,GAAUykB,EAAkB5jB,GAQ5B5a,EAAaw+B,IACX99B,IAAK,UACLG,MAAO,WACL,MAA8B,SAA1BpD,KAAK0C,MAAM++B,WACNlkB,QAAQ,+GACoB,UAA1Bvd,KAAK0C,MAAM++B,WACblkB,QAAQ,oIADV,UAKTta,IAAK,eACLG,MAAO,WACL,MAA8B,SAA1BpD,KAAK0C,MAAM++B,WACNlkB,QAAQ,kGACoB,UAA1Bvd,KAAK0C,MAAM++B,WACblkB,QAAQ,8DADV,UAKTta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,4CACX4I,KAAM,YACRpJ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,QAAS6I,eAAgB,QACpDC,aAAchJ,QAAQ,UACxBN,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,QACjB,MAGJvJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,2BAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,iBAGJR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbH,YAAYtd,KAAK0hC,WAAalkB,SAAYxd,KAAK0C,MAAM8a,WAAY,IAEnEP,EAAAA,WAAgB7I,cACd,IACA,KACAkJ,YAAYtd,KAAK2hC,gBAAkBxN,MAASn0B,KAAK0C,MAAMyxB,QAAS,YAUvE4M,GACP9jB,EAAAA,WAAgBc,WAEdb,EAAS,SAAUuG,GAGrB,QAASvG,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIwG,GAAStH,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAgBvF,OAdAghB,GAAOke,qBAAuB,SAAU7F,GACP,WAA3BA,EAAY0F,YACdj8B,EAAAA,WAAgB67B,OAChBh8B,EAAAA,WAAew8B,OAAO9F,IAEtBrY,EAAO/J,UACL4U,SAAUwN,KAKhBrY,EAAOvS,OACLod,UAAU,GAEL7K,EAuBT,MA5CApH,GAAUY,EAAQuG,GA0BlBlhB,EAAa2a,IACXja,IAAK,SAILG,MAAO,WAEL,MAAIpD,MAAKmR,MAAMod,SACNtR,EAAAA,WAAgB7I,cAAc2sB,GAAoBU,WAAYzhC,KAAKmR,MAAMod,SAASkT,WACvFjkB,SAAUxd,KAAKmR,MAAMod,SAAS/Q,SAC9B2W,MAAOn0B,KAAKmR,MAAMod,SAAS4F,QAEtBlX,EAAAA,WAAgB7I,cAAc4sB,GAAgBtwB,SAAU1Q,KAAK4hC,2BAMnE1kB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf4kB,WAAW,IAAIC,mBAAmB,IAAIC,mBAAmB,IAAIrB,sBAAsB,IAAIC,oBAAoB,IAAI/U,uBAAuB,IAAIoW,uBAAuB,IAAInW,sBAAsB,IAAIoW,WAAW,GAAG3R,SAAS,GAAG4R,eAAe,GAAGC,sBAAsB,GAAGpkB,MAAQ,UAAUqkB,IAAI,SAAS/jC,EAAQU,EAAOJ,GACrT,YAyCA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA/Cje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ0jC,SAAW1jC,EAAQ2jC,gBAAkBj/B,MAE7C,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCjY,EAASzG,EAAQ,YAEjBuG,EAAU9C,EAAuBgD,GAEjCgb,EAAUzhB,EAAQ,YAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,UAEhBgvB,EAASvrB,EAAuBsrB,GAEhCroB,EAAQ1G,EAAQ,oBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,wBAEpB8H,EAAarE,EAAuBwE,GAEpC+jB,EAAchsB,EAAQ,uBAEtB+sB,EAAa8B,EAAwB7C,GAErC7iB,EAAcnJ,EAAQ,wBAEtBkJ,EAAezF,EAAuB0F,GAatC86B,EAAkB3jC,EAAQ2jC,gBAAkB,SAAU9U,GAGxD,QAAS8U,GAAgB7/B,GACvBP,EAAgBnC,KAAMuiC,EAEtB,IAAIv+B,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAemlB,GAAiB1jC,KAAKmB,KAAM0C,GAW/F,OATAsB,GAAMmN,OACJ+O,WAAa,EAEbiU,MAAS,GAET9I,YACE8I,OAAU9I,EAAW8I,WAGlBnwB,EAuET,MAvFAsY,GAAUimB,EAAiB9U,GAmB3BlrB,EAAaggC,IACXt/B,IAAK,QACLG,MAAO,WACL,MAAIpD,MAAK87B,WACA,GAEP11B,EAAAA,WAAmBoL,MAAM+L,QAAQ,kCAC1B,MAIXta,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKzb,EAAAA,WAAgBC,IAAI,wBAC7CqvB,MAASn0B,KAAKmR,MAAMgjB,WAIxBlxB,IAAK,gBACLG,MAAO,SAAuB24B,GAC5B/7B,KAAK0C,MAAMgO,SAASqrB,MAGtB94B,IAAK,cACLG,MAAO,SAAqB6d,IACrB,iBAAkB,kBAAkBjN,QAAQiN,EAAUviB,MAAQ,GACjE0H,EAAAA,WAAmB6hB,KAAKhH,EAAUD,QACJ,MAArBC,EAAUC,QAAkBD,EAAU6W,KAC9C,EAAGtwB,EAAAA,YAAsByZ,EAAU6W,KAEpC1xB,EAAAA,WAAmBwlB,SAAS3K,MAIhChe,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,oDACbR,EAAAA,WAAgB7I,cACd,QACEqa,SAAUzuB,KAAK8qB,cACjB7N,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQH,UAAW,eAChEqd,YAAavd,QAAQ,uBACrBiC,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,SACzBrnB,MAAOpD,KAAKmR,MAAMgjB,UAGxBlX,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,wBACXgC,QAASzf,KAAKmR,MAAM+O,WACtB3C,QAAQ,oBAQXglB,GACPjV,EAAAA,YAEEgV,EAAW1jC,EAAQ0jC,SAAW,SAAUnlB,GAG1C,QAASmlB,KAGP,MAFAngC,GAAgBnC,KAAMsiC,GAEflmB,EAA2Bpc,KAAM+C,OAAOqa,eAAeklB,GAAU7hC,MAAMT,KAAMM,YAkDtF,MAvDAgc,GAAUgmB,EAAUnlB,GAQpB5a,EAAa+/B,IACXr/B,IAAK,aACLG,MAAO,WACL,MAAOka,aAAYC,QAAQ,0CACzB4W,MAAOn0B,KAAK0C,MAAMkJ,KAAKuoB,QACtB,MAGLlxB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,8DACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,UAGJR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,IACA,KACApU,KAAK2d,eAGTV,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,4BAC3BI,QAAS7d,KAAK0C,MAAMgO,UACtB6M,QAAQ,+BAQX+kB,GACPrlB,EAAAA,WAAgBc,WAEdb,EAAS,SAAUuG,GAGrB,QAASvG,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIwG,GAAStH,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAiBvF,OAfAghB,GAAO6K,SAAW,SAAUwN,GAC1BrY,EAAO/J,UACL4U,SAAUwN,KAIdrY,EAAO8e,MAAQ,WACb9e,EAAO/J,UACL4U,UAAU,KAId7K,EAAOvS,OACLod,UAAU,GAEL7K,EAqBT,MA3CApH,GAAUY,EAAQuG,GA2BlBlhB,EAAa2a,IACXja,IAAK,SAILG,MAAO,WAEL,MAAIpD,MAAKmR,MAAMod,SACNtR,EAAAA,WAAgB7I,cAAckuB,GAAY12B,KAAM5L,KAAKmR,MAAMod,SAAU7d,SAAU1Q,KAAKwiC,QAEpFvlB,EAAAA,WAAgB7I,cAAcmuB,GAAmB7xB,SAAU1Q,KAAKuuB,eAMtErR,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf4kB,WAAW,IAAIC,mBAAmB,IAAIlW,uBAAuB,IAAIoW,uBAAuB,IAAInW,sBAAsB,IAAIoW,WAAW,GAAG3R,SAAS,GAAGvS,MAAQ,UAAUykB,IAAI,SAASnkC,EAAQU,EAAOJ,GACjM,YA6CA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAnDje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ8jC,oBAAsB9jC,EAAQ0jC,SAAW1jC,EAAQ+jC,iBAAmBr/B,MAE5E,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC4lB,EAAYtkC,EAAQ,aAEpBukC,EAAa9gC,EAAuB6gC,GAEpC79B,EAASzG,EAAQ,YAEjBuG,EAAU9C,EAAuBgD,GAEjCgb,EAAUzhB,EAAQ,YAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,UAEhBgvB,EAASvrB,EAAuBsrB,GAEhCroB,EAAQ1G,EAAQ,oBAEhBqG,EAAS5C,EAAuBiD,GAEhCuB,EAAYjI,EAAQ,wBAEpB8H,EAAarE,EAAuBwE,GAEpC+jB,EAAchsB,EAAQ,uBAEtB+sB,EAAa8B,EAAwB7C,GAErC7iB,EAAcnJ,EAAQ,wBAEtBkJ,EAAezF,EAAuB0F,GActCk7B,EAAmB/jC,EAAQ+jC,iBAAmB,SAAUlV,GAG1D,QAASkV,GAAiBjgC,GACxBP,EAAgBnC,KAAM2iC,EAEtB,IAAI3+B,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeulB,GAAkB9jC,KAAKmB,KAAM0C,GAWhG,OATAsB,GAAMmN,OACJ+O,WAAa,EAEbiU,MAAS,GAET9I,YACE8I,OAAU9I,EAAW8I,WAGlBnwB,EAuET,MAvFAsY,GAAUqmB,EAAkBlV,GAmB5BlrB,EAAaogC,IACX1/B,IAAK,QACLG,MAAO,WACL,MAAIpD,MAAK87B,WACA,GAEP11B,EAAAA,WAAmBoL,MAAM+L,QAAQ,kCAC1B,MAIXta,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKzb,EAAAA,WAAgBC,IAAI,4BAC7CqvB,MAASn0B,KAAKmR,MAAMgjB,WAIxBlxB,IAAK,gBACLG,MAAO,SAAuB24B,GAC5B/7B,KAAK0C,MAAMgO,SAASqrB,MAGtB94B,IAAK,cACLG,MAAO,SAAqB6d,IACrB,gBAAiB,kBAAkBjN,QAAQiN,EAAUviB,MAAQ,GAChEsB,KAAK0C,MAAMogC,iBAAiB7hB,GACE,MAArBA,EAAUC,QAAkBD,EAAU6W,KAC9C,EAAGtwB,EAAAA,YAAsByZ,EAAU6W,KAEpC1xB,EAAAA,WAAmBwlB,SAAS3K,MAIhChe,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,mDACbR,EAAAA,WAAgB7I,cACd,QACEqa,SAAUzuB,KAAK8qB,cACjB7N,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQH,UAAW,eAChEqd,YAAavd,QAAQ,uBACrBiC,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,SACzBrnB,MAAOpD,KAAKmR,MAAMgjB,UAGxBlX,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,wBACXgC,QAASzf,KAAKmR,MAAM+O,WACtB3C,QAAQ,oBAQXolB,GACPrV,EAAAA,YAEEgV,EAAW1jC,EAAQ0jC,SAAW,SAAUnlB,GAG1C,QAASmlB,KAGP,MAFAngC,GAAgBnC,KAAMsiC,GAEflmB,EAA2Bpc,KAAM+C,OAAOqa,eAAeklB,GAAU7hC,MAAMT,KAAMM,YAkDtF,MAvDAgc,GAAUgmB,EAAUnlB,GAQpB5a,EAAa+/B,IACXr/B,IAAK,aACLG,MAAO,WACL,MAAOka,aAAYC,QAAQ,8CACzB4W,MAAOn0B,KAAK0C,MAAMkJ,KAAKuoB,QACtB,MAGLlxB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,6DACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,UAGJR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,IACA,KACApU,KAAK2d,eAGTV,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,4BAC3BI,QAAS7d,KAAK0C,MAAMgO,UACtB6M,QAAQ,+BAQX+kB,GACPrlB,EAAAA,WAAgBc,WAEd2kB,EAAsB9jC,EAAQ8jC,oBAAsB,SAAUjf,GAGhE,QAASif,KAGP,MAFAvgC,GAAgBnC,KAAM0iC,GAEftmB,EAA2Bpc,KAAM+C,OAAOqa,eAAeslB,GAAqBjiC,MAAMT,KAAMM,YAkEjG,MAvEAgc,GAAUomB,EAAqBjf,GAQ/BlhB,EAAamgC,IACXz/B,IAAK,oBACLG,MAAO,WACL,MAA8B,kBAA1BpD,KAAK0C,MAAM++B,WAENxkB,EAAAA,WAAgB7I,cACrB,IACA,KACA6I,EAAAA,WAAgB7I,cACd,KACEtB,KAAMjO,EAAAA,WAAgBC,IAAI,2BAC5ByY,QAAQ,4BAKH,QAIbta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,wEACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,iBAGJR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbF,QAAQ,8BAEVN,EAAAA,WAAgB7I,cACd,IACA,KACApU,KAAK0C,MAAMgR,SAEb1T,KAAK+iC,4BASVL,GACPzlB,EAAAA,WAAgBc,WAEdb,EAAS,SAAU4G,GAGrB,QAAS5G,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAI6G,GAAS3H,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAiBvF,OAfAqhB,GAAOwK,SAAW,SAAUwN,GAC1BhY,EAAOpK,UACL4U,SAAUwN,KAIdhY,EAAOye,MAAQ,WACbze,EAAOpK,UACL4U,UAAU,KAIdxK,EAAO5S,OACLod,UAAU,GAELxK,EA2BT,MAjDAzH,GAAUY,EAAQ4G,GA2BlBvhB,EAAa2a,IACXja,IAAK,mBACLG,MAAO,SAA0B24B,GAC/B8G,EAAAA,WAAmBG,OAAO/lB,EAAAA,WAAgB7I,cAAcsuB,GAAuBjB,WAAY1F,EAAYr9B,KACrGgV,QAASqoB,EAAY/a,SAAWvY,SAASC,eAAe,kBAK5DzF,IAAK,SACLG,MAAO,WAEL,MAAIpD,MAAKmR,MAAMod,SACNtR,EAAAA,WAAgB7I,cAAckuB,GAAY12B,KAAM5L,KAAKmR,MAAMod,SAAU7d,SAAU1Q,KAAKwiC,QAEpFvlB,EAAAA,WAAgB7I,cAAcuuB,GAAoBjyB,SAAU1Q,KAAKuuB,SACtEuU,iBAAkB9iC,KAAK8iC,uBAMxB5lB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf4kB,WAAW,IAAIC,mBAAmB,IAAIlW,uBAAuB,IAAIoW,uBAAuB,IAAInW,sBAAsB,IAAIoW,WAAW,GAAG3R,SAAS,GAAGvS,MAAQ,QAAQilB,YAAY,cAAcC,IAAI,SAAS5kC,EAAQU,EAAOJ,GACzN,YAyDA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA/Dje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQukC,oBAAsBvkC,EAAQwkC,kBAAoB9/B,MAE1D,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC4lB,EAAYtkC,EAAQ,aAEpBukC,EAAa9gC,EAAuB6gC,GAEpC79B,EAASzG,EAAQ,YAEjBuG,EAAU9C,EAAuBgD,GAEjCgb,EAAUzhB,EAAQ,YAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,UAEhBgvB,EAASvrB,EAAuBsrB,GAEhCgW,EAAU/kC,EAAQ,gBAElBglC,EAAWvhC,EAAuBshC,GAElCr+B,EAAQ1G,EAAQ,oBAEhBqG,EAAS5C,EAAuBiD,GAEhCS,EAAQnH,EAAQ,oBAEhB+G,EAAStD,EAAuB0D,GAEhCC,EAASpH,EAAQ,qBAEjBkH,EAAUzD,EAAuB2D,GAEjCa,EAAYjI,EAAQ,wBAEpB8H,EAAarE,EAAuBwE,GAEpC+jB,EAAchsB,EAAQ,uBAEtB+sB,EAAa8B,EAAwB7C,GAErC7iB,EAAcnJ,EAAQ,wBAEtBkJ,EAAezF,EAAuB0F,GAetC27B,EAAoBxkC,EAAQwkC,kBAAoB,SAAU3V,GAG5D,QAAS2V,GAAkB1gC;AACzBP,EAAgBnC,KAAMojC,EAEtB,IAAIp/B,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAegmB,GAAmBvkC,KAAKmB,KAAM0C,GAWjG,OATAsB,GAAMmN,OACJ+O,WAAa,EAEbgU,SAAY,GAEZ7I,YACE6I,UAAa7I,EAAWqJ,kBAAkB7vB,EAAAA,WAAgBC,IAAI,gBAG3Dd,EAyET,MAzFAsY,GAAU8mB,EAAmB3V,GAmB7BlrB,EAAa6gC,IACXngC,IAAK,QACLG,MAAO,WACL,MAAIpD,MAAK87B,WACA,GAEH97B,KAAKmR,MAAM+iB,SAAS5F,OAAOxvB,OAC7BsH,EAAAA,WAAmBoL,MAAMxR,KAAKmR,MAAMyZ,OAAOsJ,SAAS,IAEpD9tB,EAAAA,WAAmBoL,MAAM+L,QAAQ,yBAE5B,MAIXta,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKzb,EAAAA,WAAgBC,IAAI,wBAC7CovB,SAAYl0B,KAAKmR,MAAM+iB,cAI3BjxB,IAAK,gBACLG,MAAO,SAAuB24B,GAC5B/7B,KAAK0C,MAAMgO,SAASqrB,MAGtB94B,IAAK,cACLG,MAAO,SAAqB6d,GACD,MAArBA,EAAUC,QAAkBD,EAAU6W,KACvC,EAAGtwB,EAAAA,YAAsByZ,EAAU6W,KAEpC1xB,EAAAA,WAAmBwlB,SAAS3K,MAIhChe,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,2CACbR,EAAAA,WAAgB7I,cACd,QACEqa,SAAUzuB,KAAK8qB,cACjB7N,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,WAAYH,UAAW,eACpEqd,YAAavd,QAAQ,sBACrBiC,SAAUxf,KAAKmR,MAAM+O,UACrBgJ,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAM+iB,aAGxBjX,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,wBACXgC,QAASzf,KAAKmR,MAAM+O,WACtB3C,QAAQ,0BAQX6lB,GACP9V,EAAAA,YAEE6V,EAAsBvkC,EAAQukC,oBAAsB,SAAUhmB,GAGhE,QAASgmB,KAGP,MAFAhhC,GAAgBnC,KAAMmjC,GAEf/mB,EAA2Bpc,KAAM+C,OAAOqa,eAAe+lB,GAAqB1iC,MAAMT,KAAMM,YAmEjG,MAxEAgc,GAAU6mB,EAAqBhmB,GAQ/B5a,EAAa4gC,IACXlgC,IAAK,aACLG,MAAO,WACL,MAAOka,aAAYC,QAAQ,+DACzBC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,WACzB,MAGLva,IAAK,aACLG,MAAO,WACLoC,EAAAA,WAAgBg4B,KAAK8F,EAAAA,eAGvBrgC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,0EACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,UAGJR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAK2d,cAEPV,EAAAA,WAAgB7I,cACd,IACA,KACAmJ,QAAQ,mEAEVN,EAAAA,WAAgB7I,cACd,IACA,KACA6I,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,kBAAmBI,QAAS7d,KAAKujC,YAC9DhmB,QAAQ,qBAWjB4lB,GACPlmB,EAAAA,WAAgBc,WAEdb,EAAS,SAAUuG,GAGrB,QAASvG,KACP,GAAIgG,GAEAC,EAAOO,EAAQN,CAEnBjhB,GAAgBnC,KAAMkd,EAEtB,KAAK,GAAImG,GAAO/iB,UAAUxB,OAAQsB,EAAOC,MAAMgjB,GAAOC,EAAO,EAAUD,EAAPC,EAAaA,IAC3EljB,EAAKkjB,GAAQhjB,UAAUgjB,EAGzB,OAAeH,GAASO,EAAStH,EAA2Bpc,MAAOkjB,EAAwBngB,OAAOqa,eAAeF,IAASre,KAAK4B,MAAMyiB,GAAwBljB,MAAMX,OAAOe,KAAkBsjB,EAAO6K,SAAW,SAAUwN,GACtN12B,EAAAA,WAAem+B,cAIf94B,EAAE,gDAAgD+4B,SAElDZ,EAAAA,WAAmBG,OAAO/lB,EAAAA,WAAgB7I,cAAc+uB,GAAuBv3B,KAAMmwB,IAAgBtzB,SAASC,eAAe,gBAPxH0a,EAQJD,EAAQ/G,EAA2BsH,EAAQN,GAgBhD,MArCA9G,GAAUY,EAAQuG,GAyBlBlhB,EAAa2a,IACXja,IAAK,SAILG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cAAcgvB,GAAqB1yB,SAAU1Q,KAAKuuB,eAKtErR,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf4kB,WAAW,IAAIC,mBAAmB,IAAIC,mBAAmB,IAAIpB,oBAAoB,IAAI/U,uBAAuB,IAAIoW,uBAAuB,IAAInW,sBAAsB,IAAIoW,WAAW,GAAG3R,SAAS,GAAGmT,eAAe,GAAG1lB,MAAQ,QAAQilB,YAAY,cAAcU,IAAI,SAASrlC,EAAQU,EAAOJ,GAC1R,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAkCpF,MAvCAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM+a,UACN,eAAiBzd,KAAK0C,MAAM+a,UAE5B,iBAIXxa,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,gBAClBT,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAC7CH,UAAW,eACXra,MAAOpD,KAAK0C,MAAMU,MAClB8lB,SAAUlpB,KAAK0C,MAAMwmB,SACrB4R,YAAa96B,KAAK0C,MAAMo4B,aAAevd,QAAQ,eACjDN,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,eAODP,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAU4lB,IAAI,SAAStlC,EAAQU,EAAOJ,GACjD,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KACP,GAAIgG,GAEAC,EAAOnf,EAAOof,CAElBjhB,GAAgBnC,KAAMkd,EAEtB,KAAK,GAAImG,GAAO/iB,UAAUxB,OAAQsB,EAAOC,MAAMgjB,GAAOC,EAAO,EAAUD,EAAPC,EAAaA,IAC3EljB,EAAKkjB,GAAQhjB,UAAUgjB,EAGzB,OAAeH,GAASnf,EAAQoY,EAA2Bpc,MAAOkjB,EAAwBngB,OAAOqa,eAAeF,IAASre,KAAK4B,MAAMyiB,GAAwBljB,MAAMX,OAAOe,KAAiB4D,EAAM6/B,OAAS,SAAUzgC,GACjN,MAAO,YACLY,EAAMtB,MAAMwmB,UACVzmB,QACEW,MAAOA,OAJRggB,EAQJD,EAAQ/G,EAA2BpY,EAAOof,GAoF/C,MAzGA9G,GAAUY,EAAQC,GAwBlB5a,EAAa2a,IACXja,IAAK,YACLG,MAAO,WACL,GAAIse,GAAS1hB,KAET8jC,EAAS,IAMb,OALA9jC,MAAK0C,MAAMgvB,QAAQ9N,IAAI,SAAUhgB,GAC3BA,EAAKR,QAAUse,EAAOhf,MAAMU,QAC9B0gC,EAASlgC,KAGNkgC,KAGT7gC,IAAK,UACLG,MAAO,WACL,MAAOpD,MAAK+jC,YAAYvX,QAG1BvpB,IAAK,WACLG,MAAO,WACL,MAAOpD,MAAK+jC,YAAYla,SAM1B5mB,IAAK,SAILG,MAAO,WACL,GAAIsgB,GAAS1jB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,8BACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SACNH,UAAW,iCACXY,GAAIre,KAAK0C,MAAM2b,IAAM,KACrB4Y,cAAe,WACfxD,gBAAiB,OACjBC,gBAAiB,QACjB4N,mBAAoBthC,KAAK0C,MAAM,qBAAuB,KACtD8c,SAAUxf,KAAK0C,MAAM8c,WAAY,GACnCvC,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACbzd,KAAKs5B,WAEPt5B,KAAKu5B,YAEPtc,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,iBACbzd,KAAK0C,MAAMgvB,QAAQ9N,IAAI,SAAUhgB,EAAMrF,GACrC,MAAO0e,GAAAA,WAAgB7I,cACrB,MACEnR,IAAK1E,GACP0e,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,WAC3BI,QAAS6F,EAAOmgB,OAAOjgC,EAAKR,QAC9B6Z,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb7Z,EAAK4oB,MAEP5oB,EAAKimB,gBAUZ3M,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAUgmB,IAAI,SAAS1lC,EAAQU,EAAOJ,GACjD,YAwCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA5Cje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCjY,EAASzG,EAAQ,YAEjBuG,EAAU9C,EAAuBgD,GAEjCgb,EAAUzhB,EAAQ,YAElB0hB,EAAWje,EAAuBge,GAElCsN,EAAQ/uB,EAAQ,UAEhBgvB,EAASvrB,EAAuBsrB,GAEhCroB,EAAQ1G,EAAQ,oBAEhBqG,EAAS5C,EAAuBiD,GAEhCU,EAASpH,EAAQ,qBAEjBkH,EAAUzD,EAAuB2D,GAEjCa,EAAYjI,EAAQ,wBAEpB8H,EAAarE,EAAuBwE,GAEpCkB,EAAcnJ,EAAQ,wBAEtBkJ,EAAezF,EAAuB0F,GAWtCyV,EAAS,SAAUuQ,GAGrB,QAASvQ,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GActF,OAZAsB,GAAMmN,OACJ+O,WAAa,EACb+jB,gBAAkB,EAElBzmB,SAAY,GACZ0W,SAAY,GAEZ7I,YACE7N,YACA0W,cAGGlwB,EA0KT,MA7LAsY,GAAUY,EAAQuQ,GAsBlBlrB,EAAa2a,IACXja,IAAK,QACLG,MAAO,WACL,MAAKpD,MAAK87B,WAID,GAHP11B,EAAAA,WAAmBoL,MAAM+L,QAAQ,2BAC1B,MAMXta,IAAK,OACLG,MAAO,WACL,MAAOuB,GAAAA,WAAe2b,KAAKzb,EAAAA,WAAgBC,IAAI,aAC7C0Y,SAAYxd,KAAKmR,MAAMqM,SACvB0W,SAAYl0B,KAAKmR,MAAM+iB,cAI3BjxB,IAAK,gBACLG,MAAO,WACL,GAAIm+B,GAAO72B,EAAE,qBAEb62B,GAAKxZ,OAAO,yCACZwZ,EAAKxZ,OAAO,6CAKZwZ,EAAK2C,KAAK,wBAAwBC,IAAIx/B,EAAAA,WAAey/B,gBACrD7C,EAAK2C,KAAK,6BAA6BC,IAAI3/B,OAAOqO,SAASM,UAC3DouB,EAAK2C,KAAK,0BAA0BC,IAAInkC,KAAKmR,MAAMqM,UACnD+jB,EAAK2C,KAAK,0BAA0BC,IAAInkC,KAAKmR,MAAM+iB,UACnDqN,EAAK8C,SAGLrkC,KAAK2Z,UACHuG,WAAa,OAIjBjd,IAAK,cACLG,MAAO,SAAqB6d,GACD,MAArBA,EAAUC,OACW,mBAAnBD,EAAUviB,KACZ0H,EAAAA,WAAmB6hB,KAAKhH,EAAUD,QACN,kBAAnBC,EAAUviB,MACnB0H,EAAAA,WAAmB6hB,KAAKhH,EAAUD,QAClChhB,KAAK2Z,UACHsqB,gBAAkB,KAEQ,WAAnBhjB,EAAUviB,OAClB,EAAG8I,EAAAA,YAAsByZ,EAAUD,QACpCxb,EAAAA,WAAgB67B,QAEhBj7B,EAAAA,WAAmBoL,MAAMyP,EAAUD,QAEP,MAArBC,EAAUC,QAAkBD,EAAU6W,MAC9C,EAAGtwB,EAAAA,YAAsByZ,EAAU6W,KACpCtyB,EAAAA,WAAgB67B,QAEhBj7B,EAAAA,WAAmBwlB,SAAS3K,MAIhChe,IAAK,sBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAM8yB,eAENhnB,EAAAA,WAAgB7I,cACrB,KACEtB,KAAMjO,EAAAA,WAAgBC,IAAI,0BAC1B2Y,UAAW,6BACbF,QAAQ,qBAID,QAIbta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,sCACX4I,KAAM,YACRpJ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,QAAS6I,eAAgB,QACpDC,aAAchJ,QAAQ,UACxBN,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,QACjB,MAGJvJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,eACbF,QAAQ,aAGZN,EAAAA,WAAgB7I,cACd,QACEqa,SAAUzuB,KAAK8qB,cACjB7N,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cAAc,SAAWiK,GAAI,cAAeZ,UAAW,eAAgBG,KAAM,OAC3F4B,SAAUxf,KAAKmR,MAAM+O,UACrB4a,YAAavd,QAAQ,sBACrB2L,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAMqM,aAGxBP,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cAAc,SAAWiK,GAAI,cAAeZ,UAAW,eAAgBG,KAAM,WAC3F4B,SAAUxf,KAAKmR,MAAM+O,UACrB4a,YAAavd,QAAQ,YACrB2L,SAAUlpB,KAAKyqB,UAAU,YACzBrnB,MAAOpD,KAAKmR,MAAM+iB,cAI1BjX,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbzd,KAAKskC,sBACLrnB,EAAAA,WAAgB7I,cACd4L,EAAAA,YACEvC,UAAW,wBACXgC,QAASzf,KAAKmR,MAAM+O,WACtB3C,QAAQ,YAEVN,EAAAA,WAAgB7I,cACd,KACEtB,KAAMjO,EAAAA,WAAgBC,IAAI,0BAC1B2Y,UAAW,6BACbF,QAAQ,6BAUfL,GACPoQ,EAAAA,WAEF1uB,GAAAA,WAAkBse,IAEf4kB,WAAW,IAAIC,mBAAmB,IAAInB,oBAAoB,IAAI/U,uBAAuB,IAAIoW,uBAAuB,IAAIC,WAAW,GAAG3R,SAAS,GAAGvS,MAAQ,UAAUumB,KAAK,SAASjmC,EAAQU,EAAOJ,GAChM,YAcA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAmDje,QAASxV,GAAOmK,GACd,MAAOA,GAAMqzB,SAtEf,GAAIjiC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ2K,SAAWjG,OACnB1E,EAAQoI,OAASA,CAEjB,IAAIgW,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAWjCynB,GACFxc,KAAQ,aACRlH,QAAW,gBACX5O,QAAW,gBACXX,MAAS,eAII5S,GAAQ2K,SAAW,SAAU4T,GAG1C,QAAS5T,KAGP,MAFApH,GAAgBnC,KAAMuJ,GAEf6S,EAA2Bpc,KAAM+C,OAAOqa,eAAe7T,GAAU9I,MAAMT,KAAMM,YA+BtF,MApCAgc,GAAU/S,EAAU4T,GAQpB5a,EAAagH,IACXtG,IAAK,mBACLG,MAAO,WACL,GAAIshC,GAAgB,iBAMpB,OAJEA,IADE1kC,KAAK0C,MAAMiiC,UACI,MAEA,UAKrB1hC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK4kC,oBAClB3nB,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,SAAWgnB,EAAczkC,KAAK0C,MAAMkb,OACjD5d,KAAK0C,MAAMgR,cAOZnK,GACP0T,EAAAA,WAAgBc,aAMfC,MAAQ,UAAU6mB,KAAK,SAASvmC,EAAQU,EAAOJ,GAClD,YAiCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GArCje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQkmC,gBAAkBlmC,EAAQmmC,SAAWnmC,EAAQomC,UAAY1hC,MAEjE,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC8C,EAAUxhB,EAAQ,aAElBimB,EAAWxiB,EAAuB+d,GAElCmlB,EAAkB3mC,EAAQ,sBAE1B4mC,EAAmBnjC,EAAuBkjC,GAE1C5B,EAAU/kC,EAAQ,iBAElBglC,EAAWvhC,EAAuBshC,GAElCj5B,EAAwB9L,EAAQ,yCAEhC6L,EAAyBpI,EAAuBqI,GAEhD1E,EAASpH,EAAQ,wBAEjBkH,EAAUzD,EAAuB2D,GAWjCs/B,EAAYpmC,EAAQomC,UAAY,SAAU7nB,GAG5C,QAAS6nB,KAGP,MAFA7iC,GAAgBnC,KAAMglC,GAEf5oB,EAA2Bpc,KAAM+C,OAAOqa,eAAe4nB,GAAWvkC,MAAMT,KAAMM,YA0DvF,MA/DAgc,GAAU0oB,EAAW7nB,GAQrB5a,EAAayiC,IACX/hC,IAAK,kBACLG,MAAO,WACLoC,EAAAA,WAAgBg4B,KAAK8F,EAAAA,eAGvBrgC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,kDACX4I,KAAM,QACRpJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,KACA,KACAmJ,QAAQ,+BAEVN,EAAAA,WAAgB7I,cACd,IACA,KACAmJ,QAAQ,iEAEVN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,OACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,YACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,4BAC3BI,QAAS7d,KAAKmlC,iBAChB5nB,QAAQ,aAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,YACbR,EAAAA,WAAgB7I,cACd8wB,EAAAA,YACEznB,UAAW,yBACbF,QAAQ,qBAUfynB,GACP/nB,EAAAA,WAAgBc,UAEHnf,GAAQmmC,SAAW,SAAUK,GAG1C,QAASL,KAGP,MAFA5iC,GAAgBnC,KAAM+kC,GAEf3oB,EAA2Bpc,KAAM+C,OAAOqa,eAAe2nB,GAAUtkC,MAAMT,KAAMM,YA0BtF,MA/BAgc,GAAUyoB,EAAUK,GAQpB7iC,EAAawiC,IACX9hC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,6BAC3BI,QAAS7d,KAAKmlC,iBAChB5nB,QAAQ,YAEVN,EAAAA,WAAgB7I,cACd8wB,EAAAA,YACEznB,UAAW,0BACbF,QAAQ,kBAOTwnB,GACPC,GAEoBpmC,EAAQkmC,gBAAkB,SAAUrhB,GAGxD,QAASqhB,KAGP,MAFA3iC,GAAgBnC,KAAM8kC,GAEf1oB,EAA2Bpc,KAAM+C,OAAOqa,eAAe0nB,GAAiBrkC,MAAMT,KAAMM,YAqB7F,MA1BAgc,GAAUwoB,EAAiBrhB,GAQ3BlhB,EAAauiC,IACX7hC,IAAK,gBACLG,MAAO,WACL+G,EAAAA,WAA+BqzB,KAAKwH,MAGtC/hC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,UACEwJ,KAAM,SAAUC,QAAS7d,KAAKqlC,eAChCpoB,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoBpG,KAAM,YAMvD2mB,GACP7nB,EAAAA,WAAgBc,aAEfunB,wCAAwC,IAAIC,uBAAuB,IAAI5iB,YAAY,GAAG6iB,qBAAqB,GAAGC,gBAAgB,GAAGznB,MAAQ,UAAU0nB,KAAK,SAASpnC,EAAQU,EAAOJ,GACnL,YAkBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAsDje,QAASxV,GAAOmK,GACd,MAAOA,GAAM0L,KA7Ef,GAAIta,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ+K,gBAAkB/K,EAAQ8K,SAAWpG,OAC7C1E,EAAQoI,OAASA,CAEjB,IAAIgW,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC2oB,EAAYrnC,EAAQ,eAEpBsnC,EAAWtnC,EAAQ,aAYRM,GAAQ8K,SAAW,SAAUyT,GAG1C,QAASzT,KAGP,MAFAvH,GAAgBnC,KAAM0J,GAEf0S,EAA2Bpc,KAAM+C,OAAOqa,eAAe1T,GAAUjJ,MAAMT,KAAMM,YAgBtF,MArBAgc,GAAU5S,EAAUyT,GAQpB5a,EAAamH,IACXzG,IAAK,SACLG,MAAO,WAEL,MAAIpD,MAAK0C,MAAMgJ,gBACNuR,EAAAA,WAAgB7I,cAAcwxB,EAASC,SAAWj6B,KAAM5L,KAAK0C,MAAMkJ,OAEnEqR,EAAAA,WAAgB7I,cAAcuxB,EAAUZ,SAAU,UAMxDr7B,GACPuT,EAAAA,WAAgBc,WAEInf,EAAQ+K,gBAAkB,SAAU8Z,GAGxD,QAAS9Z,KAGP,MAFAxH,GAAgBnC,KAAM2J,GAEfyS,EAA2Bpc,KAAM+C,OAAOqa,eAAezT,GAAiBlJ,MAAMT,KAAMM,YAgB7F,MArBAgc,GAAU3S,EAAiB8Z,GAQ3BlhB,EAAaoH,IACX1G,IAAK,SACLG,MAAO,WAEL,MAAIpD,MAAK0C,MAAMgJ,gBACNuR,EAAAA,WAAgB7I,cAAcwxB,EAASE,gBAAkBl6B,KAAM5L,KAAK0C,MAAMkJ,OAE1EqR,EAAAA,WAAgB7I,cAAcuxB,EAAUb,gBAAiB,UAM/Dn7B,GACPsT,EAAAA,WAAgBc,aAMfgoB,cAAc,IAAIC,aAAa,IAAIhoB,MAAQ,UAAUioB,KAAK,SAAS3nC,EAAQU,EAAOJ,GACrF,YAoCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA6Ije,QAAS0pB,GAAe/0B,GACtB,OAASvF,KAAMuF,EAAM0L,KAAKjR,MAtL5B,GAAIrJ,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQknC,eAAiBlnC,EAAQinC,QAAUjnC,EAAQ8K,SAAWpG,OAC9D1E,EAAQsnC,eAAiBA,CAEzB,IAAIlpB,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCnW,EAAcvI,EAAQ,eAEtBwhB,EAAUxhB,EAAQ,aAElBimB,EAAWxiB,EAAuB+d,GAElC7X,EAAQ3J,EAAQ,yBAEhByJ,EAAShG,EAAuBkG,GAEhClD,EAASzG,EAAQ,eAEjBuG,EAAU9C,EAAuBgD,GAEjCqF,EAAwB9L,EAAQ,yCAEhC6L,EAAyBpI,EAAuBqI,GAEhD1E,EAASpH,EAAQ,wBAEjBkH,EAAUzD,EAAuB2D,GAYjCgE,EAAW9K,EAAQ8K,SAAW,SAAUyT,GAG1C,QAASzT,KAGP,MAFAvH,GAAgBnC,KAAM0J,GAEf0S,EAA2Bpc,KAAM+C,OAAOqa,eAAe1T,GAAUjJ,MAAMT,KAAMM,YA4FtF,MAjGAgc,GAAU5S,EAAUyT,GAQpB5a,EAAamH,IACXzG,IAAK,SACLG,MAAO,WACL,GAAI+iC,GAAWxyB,QAAQ4J,QAAQ,sCAC3B4oB,IACFz7B,EAAE,uBAAuB25B,YAI7BphC,IAAK,eACLG,MAAO,WACLoC,EAAAA,WAAgBg4B,MAAM,EAAG32B,EAAYC,SAASmB,EAAMjB,QAAQe,EAAAA,gBAG9D9E,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,kDACX4I,KAAM,QACRpJ,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,mBACbR,EAAAA,WAAgB7I,cACd,SACA,KACApU,KAAK0C,MAAMkJ,KAAK4R,WAGpBP,EAAAA,WAAgB7I,cAAc,MAAQqJ,UAAW,YACjDR,EAAAA,WAAgB7I,cACd,KACA,KACA6I,EAAAA,WAAgB7I,cACd,KACEtB,KAAM9S,KAAK0C,MAAMkJ,KAAKtD,cACxB2U,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,kBAEFF,QAAQ,sBAGZN,EAAAA,WAAgB7I,cACd,KACA,KACA6I,EAAAA,WAAgB7I,cACd,KACEtB,KAAMjO,EAAAA,WAAgBC,IAAI,eAC5BmY,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,YAEFF,QAAQ,oBAGZN,EAAAA,WAAgB7I,cACd,KACA,KACA6I,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,WAAYI,QAAS7d,KAAKomC,cACvDnpB,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,YAEFF,QAAQ,mBAGZN,EAAAA,WAAgB7I,cAAc,MAAQqJ,UAAW,YACjDR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,oBACbR,EAAAA,WAAgB7I,cACd,UACEwJ,KAAM,SAAUH,UAAW,4BAC3BI,QAAS7d,KAAKqmC,QAChB9oB,QAAQ,kBAQX7T,GACPuT,EAAAA,WAAgBc,UAEJnf,GAAQinC,QAAU,SAAUpiB,GAGxC,QAASoiB,KAGP,MAFA1jC,GAAgBnC,KAAM6lC,GAEfzpB,EAA2Bpc,KAAM+C,OAAOqa,eAAeyoB,GAASplC,MAAMT,KAAMM,YA2BrF,MAhCAgc,GAAUupB,EAASpiB,GAQnBlhB,EAAasjC,IACX5iC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,8BACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,YACbR,EAAAA,WAAgB7I,cACd,KACEtB,KAAM9S,KAAK0C,MAAMkJ,KAAKtD,aAAcmV,UAAW,kBAC/CwZ,cAAe,WAAYxD,gBAAiB,OAAQC,gBAAiB,QACrErN,KAAM,UACRpJ,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAM5L,KAAK0C,MAAMkJ,KAAMuS,KAAM,QAEjFlB,EAAAA,WAAgB7I,cAAc1K,GAAYkC,KAAM5L,KAAK0C,MAAMkJ,aAO5Di6B,GACP5oB,EAAAA,WAAgBc,WAMGnf,EAAQknC,eAAiB,SAAUhiB,GAGtD,QAASgiB,KAGP,MAFA3jC,GAAgBnC,KAAM8lC,GAEf1pB,EAA2Bpc,KAAM+C,OAAOqa,eAAe0oB,GAAgBrlC,MAAMT,KAAMM,YAqB5F,MA1BAgc,GAAUwpB,EAAgBhiB,GAQ1BvhB,EAAaujC,IACX7iC,IAAK,eACLG,MAAO,WACL+G,EAAAA,WAA+Bm8B,cAAc,aAAc,EAAGz/B,EAAYC,SAASo/B,GAAgBx8B,OAGrGzG,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,UACEwJ,KAAM,SAAUC,QAAS7d,KAAKumC,cAChCtpB,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAM5L,KAAK0C,MAAMkJ,KAAMuS,KAAM,YAM9E2nB,GACP7oB,EAAAA,WAAgBc,aAEfqG,cAAc,IAAIkhB,wCAAwC,IAAIC,uBAAuB,IAAI5iB,YAAY,GAAG6jB,wBAAwB,GAAGxoB,MAAQ,QAAQ1W,cAAc,gBAAgBm/B,KAAK,SAASnoC,EAAQU,EAAOJ,GACjN,YAaA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAjBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ83B,YAAc93B,EAAQ63B,WAAanzB,MAE3C,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAoCpF,MAzCAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,WACLG,MAAO,WACL,GAAI8d,GAAS,EAeb,OAdIlhB,MAAK0C,MAAMwe,OAAOwlB,UACpBxlB,EAAS,SACAlhB,KAAK0C,MAAMwe,OAAOylB,UAC3BzlB,EAAS,UACAlhB,KAAK0C,MAAMwe,OAAO0lB,iBAC3B1lB,EAAS,SACAlhB,KAAK0C,MAAMwe,OAAO2lB,kBAC3B3lB,EAAS,UACAlhB,KAAK0C,MAAMwe,OAAO4lB,UAC3B5lB,EAAS,SACAlhB,KAAK0C,MAAMwe,OAAO6lB,aAC3B7lB,EAAS,WAGJ,oBAAsBA,KAG/Bje,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqJ,UAAWzd,KAAKgnC,YAClBhnC,KAAK0C,MAAMgd,cAMVxC,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,CAEDte,GAAQ63B,WAAa,SAAUhT,GAG9C,QAASgT,KAGP,MAFAt0B,GAAgBnC,KAAMy2B,GAEfra,EAA2Bpc,KAAM+C,OAAOqa,eAAeqZ,GAAYh2B,MAAMT,KAAMM,YAiCxF,MAtCAgc,GAAUma,EAAYhT,GAQtBlhB,EAAak0B,IACXxzB,IAAK,UACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMwe,OAAOwlB,UACb,wBACE1mC,KAAK0C,MAAMwe,OAAOylB,UACpB,eACE3mC,KAAK0C,MAAMwe,OAAO0lB,iBACpB,QACE5mC,KAAK0C,MAAMwe,OAAO2lB,kBACpB,gBACE7mC,KAAK0C,MAAMwe,OAAO4lB,UACpB,OACE9mC,KAAK0C,MAAMwe,OAAO6lB,WACpB,oBADF,UAKT9jC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,6BACbzd,KAAKs5B,eAMJ7C,GACPxZ,EAAAA,WAAgBc,WAEAnf,EAAQ83B,YAAc,SAAU5S,GAGhD,QAAS4S,KAGP,MAFAv0B,GAAgBnC,KAAM02B,GAEfta,EAA2Bpc,KAAM+C,OAAOqa,eAAesZ,GAAaj2B,MAAMT,KAAMM,YAwEzF,MA7EAgc,GAAUoa,EAAa5S,GAQvBvhB,EAAam0B,IACXzzB,IAAK,UACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMwe,OAAOwlB,UAChB1mC,KAAK0C,MAAMwe,OAAO+lB,aACb3pB,YAAYC,QAAQ,iDACzBC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,SAC1B0pB,YAAalnC,KAAK0C,MAAMwe,OAAO+lB,aAAaprB,OAAO,YAClD,GAEIyB,YAAYC,QAAQ,2BACzBC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,WACzB,GAEIxd,KAAK0C,MAAMwe,OAAOylB,UACpBrpB,YAAYC,QAAQ,oCACzBC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,WACzB,GACMxd,KAAK0C,MAAMwe,OAAO0lB,iBACpBtpB,YAAYC,QAAQ,oCACzBC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,WACzB,GACMxd,KAAK0C,MAAMwe,OAAO2lB,kBACpBvpB,YAAYC,QAAQ,uDACzBC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,SAC1B2pB,WAAYnnC,KAAK0C,MAAMwe,OAAOimB,WAAWloB,YACxC,GACMjf,KAAK0C,MAAMwe,OAAO4lB,UACpBxpB,YAAYC,QAAQ,2BACzBC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,WACzB,GACMxd,KAAK0C,MAAMwe,OAAO6lB,WACpBzpB,YAAYC,QAAQ,8CACzBC,SAAUxd,KAAK0C,MAAMkJ,KAAK4R,SAC1B2pB,WAAYnnC,KAAK0C,MAAMwe,OAAOimB,WAAWloB,YACxC,GAJE,UAQThc,IAAK,WACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMwe,OAAOwlB,UACbnpB,QAAQ,UACNvd,KAAK0C,MAAMwe,OAAOylB,UACpBppB,QAAQ,UACNvd,KAAK0C,MAAMwe,OAAO0lB,iBACpBrpB,QAAQ,mBACNvd,KAAK0C,MAAMwe,OAAO2lB,kBACpBtpB,QAAQ,oBACNvd,KAAK0C,MAAMwe,OAAO4lB,UACpBvpB,QAAQ,UACNvd,KAAK0C,MAAMwe,OAAO6lB,WACpBxpB,QAAQ,WADV,UAKTta,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,QACEqJ,UAAWzd,KAAK0C,MAAM+a,WAAa,eACnC/c,MAAOV,KAAKonC,WACdpnC,KAAKu5B,gBAMJ7C,GACPzZ,EAAAA,WAAgBc,aAEfC,MAAQ,UAAUqpB,KAAK,SAAS/oC,EAAQU,EAAOJ,GAClD,YAoBA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA1Bje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC8C,EAAUxhB,EAAQ,YAElBimB,EAAWxiB,EAAuB+d,GAElCwnB,EAAUhpC,EAAQ,mBAElBqZ,EAASwV,EAAwBma,GAcjCpqB,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YA8MpF,MAnNAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,mBACLG,MAAO,SAA0BQ,GAC/B,MAAIA,GAAK2jC,WAEAtqB,EAAAA,WAAgB7I,cACrB,KACEtB,KAAMlP,EAAK2jC,WAAWj/B,aAAcmV,UAAW,eACjDR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAMhI,EAAK2jC,WAAYppB,KAAM,SAKxElB,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoBpG,KAAM,YAMhElb,IAAK,iBACLG,MAAO,SAAwBQ,GAC7B,MAAIA,GAAK2jC,WAEAtqB,EAAAA,WAAgB7I,cACrB,KACEtB,KAAMlP,EAAK2jC,WAAWj/B,aAAcmV,UAAW,cACjD7Z,EAAK2jC,WAAW/pB,UAKTP,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,cACb7Z,EAAK4jC,wBAMbvkC,IAAK,gBACLG,MAAO,WACL,GAAIse,GAAS1hB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,6BACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,cACbzd,KAAK0C,MAAMstB,QAAQpM,IAAI,SAAUhgB,GAC/B,MAAOqZ,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,kBAAmBxa,IAAKW,EAAKya,IAC1CpB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,0BACbiE,EAAO+lB,iBAAiB7jC,IAE1BqZ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,0BACbiE,EAAOgmB,eAAe9jC,IAExBqZ,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,mBACb7Z,EAAK+jC,aACL1qB,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,iBAEF7Z,EAAKgkC,cAEP3qB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,wBACbR,EAAAA,WAAgB7I,cACd,QACE1T,MAAOkD,EAAKikC,WAAWhsB,OAAO,QAChCjY,EAAKikC,WAAW5oB,oBAU9Bhc,IAAK,kBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMw9B,aACNlgC,KAAK0C,MAAMw9B,aAEX3iB,QAAQ,2DAInBta,IAAK,qBACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,6BACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,iCACbzd,KAAK06B,wBAObz3B,IAAK,uBACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,+BACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,cACb9F,EAAOmwB,MAAM,EAAG,GAAGlkB,IAAI,SAAUrlB,GAC/B,MAAO0e,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,kBAAmBxa,IAAK1E,GACrC0e,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,0BACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoBpG,KAAM,UAG5DlB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,0BACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,KAAO,OACtE,MAGJsF,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,mBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,IAAM,OACrE,KAEFsF,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACb,iBAEFR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,IAAM,OACrE,MAGJsF,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,wBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,KAAO,OACtE,cAUd1U,IAAK,SACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM+sB,SACTzvB,KAAK0C,MAAMstB,QAAQlxB,OACdkB,KAAK+nC,gBAEL/nC,KAAKgoC,qBAGPhoC,KAAKioC,2BAKX/qB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfgrB,kBAAkB,IAAIC,WAAW,GAAGnqB,MAAQ,UAAUoqB,KAAK,SAAS9pC,EAAQU,EAAOJ,GACtF,YAwBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka;AAAeD,EAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA5Bje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCqrB,EAAY/pC,EAAQ,eAEpBgqC,EAAavmC,EAAuBsmC,GAEpCE,EAAejqC,EAAQ,kBAEvBkqC,EAAgBzmC,EAAuBwmC,GAEvCvlB,EAAS1kB,EAAQ,qBAEjB2kB,EAAUlhB,EAAuBihB,GAajC9F,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAqFpF,MA1FAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,WACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMy3B,MAAQ,EAEdld,EAAAA,WAAgB7I,cAAcq0B,MAAOzoC,KAAK0C,OAGxC,QAIbO,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM+a,UACN,oBAAsBzd,KAAK0C,MAAM+a,UAAY,YAE7C,+BAIXxa,IAAK,kBACLG,MAAO,WACL,MAAO,UAAY,GAAKpD,KAAK0C,MAAMk4B,QAGrC33B,IAAK,UACLG,MAAO,WACL,GAAIse,GAAS1hB,IAEb,IAAIA,KAAK0C,MAAM+sB,SAEb,OAAQ,EAAGxM,EAAAA,YAAiBjjB,KAAK0C,MAAM+3B,MAAOz6B,KAAK0C,MAAMk4B,MAAMhX,IAAI,SAAUC,EAAK5lB,GAChF,MAAOgf,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,MAAOxa,IAAKhF,GACzB4lB,EAAID,IAAI,SAAUhY,GAChB,MAAOqR,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWiE,EAAOgnB,kBAAmBzlC,IAAK2I,EAAKyS,IACjDpB,EAAAA,WAAgB7I,cAAck0B,EAAAA,YAAsB18B,KAAMA,EACxD+8B,WAAYjnB,EAAOhf,MAAMimC,WACzBhO,SAAUjZ,EAAOhf,MAAMi4B,gBAS/B,KAAK,GADD9W,MACKtlB,EAAI,EAAGA,EAAIyB,KAAK0C,MAAMk4B,KAAMr8B,IACnCslB,EAAItjB,KAAKhC,EAGX,OAAO0e,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,OACboG,EAAID,IAAI,SAAUrlB,GAChB,MAAO0e,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWiE,EAAOgnB,kBAAmBzlC,IAAK1E,GAC5C0e,EAAAA,WAAgB7I,cAAco0B,EAAAA,YAAyBG,WAAYjnB,EAAOhf,MAAMimC,oBAQ5F1lC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,6BACbzd,KAAKymB,eAMJvJ,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfmH,oBAAoB,IAAIukB,cAAc,IAAIC,iBAAiB,IAAI7qB,MAAQ,UAAU8qB,KAAK,SAASxqC,EAAQU,EAAOJ,GACjH,YAoBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAxBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC8C,EAAUxhB,EAAQ,aAElBimB,EAAWxiB,EAAuB+d,GAElCwW,EAAch4B,EAAQ,kBAEtBi4B,EAAex0B,EAAuBu0B,GAYtCpZ,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAmNpF,MAxNAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMkJ,KAAK+qB,KAAKoS,UAChB,uBAAyB/oC,KAAK0C,MAAMkJ,KAAK+qB,KAAKoS,UAAY,YAE1D,wBAIX9lC,IAAK,gBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMimC,WACT3oC,KAAK0C,MAAMkJ,KAAKsV,OAEXjE,EAAAA,WAAgB7I,cACrBmiB,EAAAA,YACE3qB,KAAM5L,KAAK0C,MAAMkJ,KAAMsV,OAAQlhB,KAAK0C,MAAMkJ,KAAKsV,QACjDjE,EAAAA,WAAgB7I,cAAckiB,EAAYG,YAAc7qB,KAAM5L,KAAK0C,MAAMkJ,KACvEsV,OAAQlhB,KAAK0C,MAAMkJ,KAAKsV,SAC1BjE,EAAAA,WAAgB7I,cAAckiB,EAAYI,aAAe9qB,KAAM5L,KAAK0C,MAAMkJ,KACxEsV,OAAQlhB,KAAK0C,MAAMkJ,KAAKsV,OACxBzD,UAAW,kBAKNR,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,0BACb,KAEFR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,2BACb,MAMC,QAIbxa,IAAK,cACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMi4B,SACT36B,KAAK0C,MAAMkJ,KAAK+qB,KAAKC,OAEhB3Z,EAAAA,WAAgB7I,cACrB,KACEtB,KAAM9S,KAAK0C,MAAMkJ,KAAK+qB,KAAKruB,aAC3BmV,UAAW,wBACbzd,KAAK0C,MAAMkJ,KAAK+qB,KAAKn1B,MAKdyb,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,wBACbzd,KAAK0C,MAAMkJ,KAAK+qB,KAAKn1B,MAKlB,QAIbyB,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMkJ,KAAKlL,MAEXuc,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,cACbzd,KAAK0C,MAAMkJ,KAAKlL,OAIT,QAIbuC,IAAK,kBACLG,MAAO,WAEL,GAAI1C,GAAQ4c,YAAYC,QAAQ,4BAC9BsZ,UAAa72B,KAAK0C,MAAMkJ,KAAKirB,UAAUhb,OAAO,YAC7C,GAECib,EAAMxZ,YAAYC,QAAQ,yBAC5BsZ,UAAa72B,KAAK0C,MAAMkJ,KAAKirB,UAAU5X,YACtC,EAEH,OAAOhC,GAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,iBAAkB/c,MAAOA,GACtCo2B,MAKJ7zB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,gBAClBT,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,sBACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAM5L,KAAK0C,MAAMkJ,KAAMuS,KAAM,MAAOV,UAAW,aACjGR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cACd,KACEtB,KAAM9S,KAAK0C,MAAMkJ,KAAKtD,cACxB2U,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAM5L,KAAK0C,MAAMkJ,KAAMuS,KAAM,UAGnFlB,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,KACEtB,KAAM9S,KAAK0C,MAAMkJ,KAAKtD,aAAcmV,UAAW,cACjDzd,KAAK0C,MAAMkJ,KAAK4R,WAGpBP,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,kBACbzd,KAAKo3B,gBACLp3B,KAAKgpC,cACLhpC,KAAKs3B,eACLt3B,KAAKipC,oBAGThsB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,mBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,oBACbR,EAAAA,WAAgB7I,cACd,SACA,KACApU,KAAK0C,MAAMkJ,KAAK4zB,OAElBviB,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,WAGZN,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,sBACbR,EAAAA,WAAgB7I,cACd,SACA,KACApU,KAAK0C,MAAMkJ,KAAK6zB,SAElBxiB,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,aAGZN,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,wBACbR,EAAAA,WAAgB7I,cACd,SACA,KACApU,KAAK0C,MAAMkJ,KAAKwtB,WAElBnc,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,wBAYnBL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfyF,YAAY,GAAG8U,iBAAiB,IAAIzZ,MAAQ,UAAUkrB,KAAK,SAAS5qC,EAAQU,EAAOJ,GACtF,YAoBA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA1Bje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC8C,EAAUxhB,EAAQ,aAElBimB,EAAWxiB,EAAuB+d,GAElCwnB,EAAUhpC,EAAQ,sBAElBqZ,EAASwV,EAAwBma,GAcjCpqB,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAkJpF,MAvJAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,gBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMimC,WAEN1rB,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,0BACb,KAEFR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,2BACb,MAKK,QAIbxa,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,wBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,sBACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoBpG,KAAM,MAAOV,UAAW,aAC1ER,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,gBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoBpG,KAAM,SAE1DlB,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,KAAO,OACtE,OAINsF,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,kBACbzd,KAAKo3B,gBACLna,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,IAAM,OACrE,QAKRsF,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,mBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,oBACbR,EAAAA,WAAgB7I,cACd,SACA,KACA6I,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,mBACb,MAGJR,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,WAGZN,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,sBACbR,EAAAA,WAAgB7I,cACd,SACA,KACA6I,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,mBACb,MAGJR,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,aAGZN,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,wBACbR,EAAAA,WAAgB7I,cACd,SACA,KACA6I,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,mBACb,MAGJR,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,wBAYnBL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfisB,qBAAqB,IAAIxmB,YAAY,GAAG3E,MAAQ,UAAUorB,KAAK,SAAS9qC,EAAQU,EAAOJ,GAC1F,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YA6BpF,MAlCAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,kBACLG,MAAO,WACL,MAAOka,aAAYC,QAAQ,qEAAuE8rB,KAAQrpC,KAAK0C,MAAM4mC,gBAAiB,MAGxIrmC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,uBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAK06B,yBAQRxd,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAUurB,KAAK,SAASjrC,EAAQU,EAAOJ,GAClD,YA0BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA9Bje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCoV,EAAe9zB,EAAQ,gBAEvBwhB,EAAUxhB,EAAQ,gBAElBimB,EAAWxiB,EAAuB+d,GAElCwW,EAAch4B,EAAQ,qBAEtBi4B,EAAex0B,EAAuBu0B,GAEtCvxB,EAASzG,EAAQ,kBAEjBuG,EAAU9C,EAAuBgD,GAcjCmY,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAmKpF,MAxKAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMi0B,KAAKoS,UACX,mCAAqC/oC,KAAK0C,MAAMi0B,KAAKoS,UAErD,qBAIX9lC,IAAK,gBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMkJ,KAAKsV,OAEXjE,EAAAA,WAAgB7I,cACrBmiB,EAAAA,YACE3qB,KAAM5L,KAAK0C,MAAMkJ,KAAMsV,OAAQlhB,KAAK0C,MAAMkJ,KAAKsV,QACjDjE,EAAAA,WAAgB7I,cAAckiB,EAAYG,YAAc7qB,KAAM5L,KAAK0C,MAAMkJ,KACvEsV,OAAQlhB,KAAK0C,MAAMkJ,KAAKsV,SAC1BjE,EAAAA,WAAgB7I,cAAckiB,EAAYI,aAAe9qB,KAAM5L,KAAK0C,MAAMkJ,KACxEsV,OAAQlhB,KAAK0C,MAAMkJ,KAAKsV,OACxBzD,UAAW,sCAKNR,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,0BACb,KAEFR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,+CACb,SAOVxa,IAAK,cACLG,MAAO,WACL,GAAIpD,KAAK0C,MAAMi0B,KAAKC,OAAQ,CAE1B,GAAI4S,GAAU3kC,EAAAA,WAAgBC,IAAI,kBAAoB9E,KAAK0C,MAAMi0B,KAAKnI,KAAO,GAC7E,OAAOvR,GAAAA,WAAgB7I,cACrBge,EAAaI,MACXC,GAAI+W,EAAS/rB,UAAW,wBAC1Bzd,KAAK0C,MAAMi0B,KAAKn1B,MAKhB,MAAOyb,GAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,wBACbzd,KAAK0C,MAAMi0B,KAAKn1B,SAMxByB,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMkJ,KAAKlL,MAEXuc,EAAAA,WAAgB7I,cACrB,QACEqJ,UAAW,kCACbzd,KAAK0C,MAAMkJ,KAAKlL,OAIT,QAIbuC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAWzd,KAAK0d,gBAClBT,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,oBACbR,EAAAA,WAAgB7I,cACd,KACEtB,KAAM9S,KAAK0C,MAAMkJ,KAAKtD,cACxB2U,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoB3Y,KAAM5L,KAAK0C,MAAMkJ,KAAMuS,KAAM,SAGnFlB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,KACEtB,KAAM9S,KAAK0C,MAAMkJ,KAAKtD,aAAcmV,UAAW,cACjDzd,KAAK0C,MAAMkJ,KAAK4R,WAGpBxd,KAAKo3B,gBACLp3B,KAAKgpC,cACLhpC,KAAKs3B,gBAEPra,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,SACA,KACA,IACApU,KAAK0C,MAAM+mC,SAEbxsB,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,UAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,sBACbR,EAAAA,WAAgB7I,cACd,SACA,KACApU,KAAK0C,MAAMkJ,KAAK0yB,KAAKxI,OAEvB7Y,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,kBAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,oBACbR,EAAAA,WAAgB7I,cACd,SACA,KACApU,KAAK0C,MAAMkJ,KAAK4zB,OAElBviB,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,sBAQXL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf+S,iBAAiB,IAAIyZ,eAAe,GAAGC,oBAAoB,IAAI3rB,MAAQ,QAAQ6U,eAAe,iBAAiB+W,KAAK,SAAStrC,EAAQU,EAAOJ,GAC/I,YAoBA,SAASuuB,GAAwBnrB,GAAO,GAAIA,GAAOA,EAAIC,WAAc,MAAOD,EAAc,IAAIorB,KAAa,IAAW,MAAPprB,EAAe,IAAK,GAAIiB,KAAOjB,GAAWe,OAAOvC,UAAUoP,eAAe/Q,KAAKmD,EAAKiB,KAAMmqB,EAAOnqB,GAAOjB,EAAIiB,GAAgC,OAAtBmqB,GAAAA,WAAiBprB,EAAYorB,EAElQ,QAASrrB,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA1Bje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC8C,EAAUxhB,EAAQ,gBAElBimB,EAAWxiB,EAAuB+d,GAElCwnB,EAAUhpC,EAAQ,yBAElBqZ,EAASwV,EAAwBma,GAcjCpqB,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YA4JpF,MAjKAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,uBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,6BACb9F,EAAOmwB,MAAM,EAAG,GAAGlkB,IAAI,SAAUrlB,GAC/B,MAAO0e,GAAAA,WAAgB7I,cACrB,QACEnR,IAAK1E,EAAGkf,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,KAAO,OAC9E,QAINsF,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,6BACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,cACb9F,EAAOmwB,MAAM,EAAG,IAAIlkB,IAAI,SAAUrlB,EAAGkrC,GACnC,MAAOxsB,GAAAA,WAAgB7I,cACrB,MACEnR,IAAK1E,EAAGkf,UAAW,mBACrBR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,oBACbR,EAAAA,WAAgB7I,cACd,OACA,KACA6I,EAAAA,WAAgB7I,cAAcmQ,EAAAA,YAAoBpG,KAAM,SAG5DlB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,cACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,IAAM,OACrE,OAINsF,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,eACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,0BACb,KAEFR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,+CACb,MAGJR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,IAAM,OACrE,MAGJsF,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kCACbR,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAOhK,EAAAA,OAAW,GAAI,IAAM,OACrE,OAINsF,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iBACbR,EAAAA,WAAgB7I,cACd,SACA,KACA6I,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAO,SAChD,MAGJ1E,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,UAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,sBACbR,EAAAA,WAAgB7I,cACd,SACA,KACA6I,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAO,SAChD,MAGJ1E,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,kBAGZN,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,oBACbR,EAAAA,WAAgB7I,cACd,SACA,KACA6I,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,kBAAmBuL,OAASrH,MAAO,SAChD,MAGJ1E,EAAAA,WAAgB7I,cACd,QACA,KACAmJ,QAAQ,4BAarBL,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf2sB,wBAAwB,IAAIH,eAAe,GAAG1rB,MAAQ,UAAU8rB,KAAK,SAASxrC,EAAQU,EAAOJ,GAChG,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC+sB,EAAYzrC,EAAQ,eAEpB0rC,EAAajoC,EAAuBgoC,GAYpC7sB,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAgDpF,MArDAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,iBACLG,MAAO,WACL,GAAIsQ,GAAUya,SAAS,0DAA2D,2DAA4DnuB,KAAK0C,MAAMu3B,MAEzJ,OAAO3c,aAAY5J,GACjBu2B,QAASjqC,KAAK0C,MAAMu3B,MACpBoP,KAAMrpC,KAAK0C,MAAM4mC,gBAChB,MAGLrmC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,uBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,QACbzd,KAAKkqC,kBAEPjtB,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,2BACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,cACbzd,KAAK0C,MAAM+3B,MAAM7W,IAAI,SAAUhY,EAAMrN,GACnC,MAAO0e,GAAAA,WAAgB7I,cAAc41B,EAAAA,YAAsBp+B,KAAMA,EAC/D+qB,KAAM/qB,EAAK+qB,KACX8S,QAASlrC,EAAI,EACb0E,IAAK2I,EAAKyS,eAUnBnB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfitB,cAAc,IAAInsB,MAAQ,UAAUosB,KAAK,SAAS9rC,EAAQU,EAAOJ,GACpE,YA0CA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA9Cje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCqtB,EAAa/rC,EAAQ,gBAErBgsC,EAAcvoC,EAAuBsoC,GAErCE,EAAejsC,EAAQ,kBAEvBksC,EAAgBzoC,EAAuBwoC,GAEvCE,EAAQnsC,EAAQ,UAEhBosC,EAAS3oC,EAAuB0oC,GAEhC1lC,EAASzG,EAAQ,kBAEjBuG,EAAU9C,EAAuBgD,GAEjCoI,EAAS7O,EAAQ,2BAEjB+M,EAAS/M,EAAQ,2BAEjB8M,EAAUrJ,EAAuBsJ,GAEjC1F,EAASrH,EAAQ,2BAEjBgH,EAAUvD,EAAuB4D,GAEjCsF,EAAa3M,EAAQ,gCAErByM,EAAchJ,EAAuBkJ,GAYrCiS,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAoBtF,OAlBAsB,GAAM6zB,OAAS,SAAUhX,GACvBvb,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOhB,WAAW0U,EAAKiP,UAEpD9rB,EAAM2V,UACJ8V,UAAU,EAEV6Z,cAAezoB,EAAK8pB,eACpB1Q,MAAOpZ,EAAKoZ,SAIZp1B,EAAAA,WAAgBR,IAAI,SACtBL,EAAM+zB,sBAAsBlzB,EAAAA,WAAgBmzB,IAAI,UAEhDh0B,EAAMi0B,2BAGRj0B,EAAMk0B,eACCl0B,EA6ET,MAtGAsY,GAAUY,EAAQC,GA4BlB5a,EAAa2a,IACXja,IAAK,wBACLG,MAAO,SAA+Byd,GACpC7gB,KAAKmR,OACHse,UAAU,EAEV6Z,cAAezoB,EAAK8pB,eACpB1Q,MAAOpZ,EAAKoZ,OAGd30B,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOhB,WAAW0U,EAAKiP,aAGtD7sB,IAAK,2BACLG,MAAO,WACLpD,KAAKmR,OACHse,UAAU,MAIdxsB,IAAK,eACLG,MAAO,WACLgI,EAAAA,WAAgBgtB,OACdC,KAAM,iBACNja,IAAKvZ,EAAAA,WAAgBC,IAAI,aACzB+b,MACE+pB,KAAM,UAERtS,UAAW,IACXT,OAAQ73B,KAAK63B,YAOjB50B,IAAK,oBAILG,MAAO,WACL2H,EAAAA,WAAoB2kB,KAClBhvB,MAAOV,KAAK0C,MAAM68B,MAAMpV,MAAM3oB,KAC9BmuB,OAAQpS,QAAQ,cAIpBta,IAAK,uBACLG,MAAO,WACLgI,EAAAA,WAAgBmtB,KAAK,qBAGvBt1B,IAAK,SACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMse,SACTzvB,KAAKmR,MAAM8oB,MAAQ,EAEdhd,EAAAA,WAAgB7I,cAAcs2B,EAAAA,YAAkBjQ,MAAOz6B,KAAK0C,MAAM+3B,MACvE6O,cAAetpC,KAAKmR,MAAMm4B,cAC1BrP,MAAOj6B,KAAKmR,MAAM8oB,QAIXhd,EAAAA,WAAgB7I,cAAck2B,EAAAA,YAAuBhB,cAAetpC,KAAKmR,MAAMm4B,gBAKjFrsB,EAAAA,WAAgB7I,cAAco2B,EAAAA,WAAuB,UAM7DttB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf+S,iBAAiB,IAAIE,0BAA0B,IAAIC,+BAA+B,IAAI2M,0BAA0B,IAAI1M,0BAA0B,IAAIwa,SAAS,IAAIC,eAAe,IAAIC,iBAAiB,IAAI/sB,MAAQ,UAAUgtB,KAAK,SAAS1sC,EAAQU,EAAOJ,GACzP,YAuBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA3Bje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQszB,WAAatzB,EAAQqsC,QAAU3nC,MAEvC,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCoV,EAAe9zB,EAAQ,gBAEvB+zB,EAAM/zB,EAAQ,SAEdg0B,EAAOvwB,EAAuBswB,GAE9BttB,EAASzG,EAAQ,eAgBjB4sC,GAdUnpC,EAAuBgD,GAcvB,SAAiB2tB,EAASkY,GACtC,GAAIxsB,GAAMsU,CAMV,OAJEtU,IADqB,SAAnBwsB,EAAK9iC,UACA8iC,EAAKpc,KAELoc,EAAK9iC,UAEPsW,EAAM,MAGX+sB,EAAW,SAAkBzY,EAAS0Y,EAAOzY,GAC/C,MAAOyY,GAAMxnB,IAAI,SAAUgnB,GACzB,GAAIxsB,GAAM8sB,EAAQxY,EAASkY,EAC3B,OAAO3tB,GAAAA,WAAgB7I,cACrBke,EAAAA,YACErf,KAAMmL,EACNnb,IAAKmb,GACPnB,EAAAA,WAAgB7I,cACdge,EAAaI,MACXC,GAAIrU,EAAKP,QAAS8U,GACpBiY,EAAKppC,SAOC5C,GAAQqsC,QAAU,SAAU9tB,GAGxC,QAAS8tB,KAGP,MAFA9oC,GAAgBnC,KAAMirC,GAEf7uB,EAA2Bpc,KAAM+C,OAAOqa,eAAe6tB,GAASxqC,MAAMT,KAAMM,YAgBrF,MArBAgc,GAAU2uB,EAAS9tB,GAQnB5a,EAAa0oC,IACXhoC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,iBACb0tB,EAASnrC,KAAK0C,MAAMgwB,QAAS1yB,KAAK0C,MAAM0oC,YAMvCH,GACPhuB,EAAAA,WAAgBc,WAEDnf,EAAQszB,WAAa,SAAUzO,GAG9C,QAASyO,KAGP,MAFA/vB,GAAgBnC,KAAMkyB,GAEf9V,EAA2Bpc,KAAM+C,OAAOqa,eAAe8U,GAAYzxB,MAAMT,KAAMM,YAgBxF,MArBAgc,GAAU4V,EAAYzO,GAQtBlhB,EAAa2vB,IACXjvB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,gBAAiB4I,KAAM,QACpC8kB,EAASnrC,KAAK0C,MAAMgwB,QAAS1yB,KAAK0C,MAAM0oC,MAAOprC,KAAK0C,MAAMiwB,cAMzDT,GACPjV,EAAAA,WAAgBc,aAEfqG,cAAc,IAAIwO,QAAQ,GAAG5U,MAAQ,QAAQ6U,eAAe,iBAAiBwY,KAAK,SAAS/sC,EAAQU,EAAOJ,GAC7G,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GApBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC/U,EAAQ3J,EAAQ,yBAEhByJ,EAAShG,EAAuBkG,GAYhCiV,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YAgBpF,MArBAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cAAcrM,EAAAA,YAAkB0nB,UAAU,EAAOmL,KAAM,EAAG+N,YAAY,SAMrFzrB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfouB,wBAAwB,IAAIttB,MAAQ,UAAUutB,KAAK,SAASjtC,EAAQU,EAAOJ,GAC9E,YAoBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAxBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCwuB,EAASltC,EAAQ,WAEjBmtC,EAAU1pC,EAAuBypC,GAEjCvjC,EAAQ3J,EAAQ,yBAEhByJ,EAAShG,EAAuBkG,GAYhCiV,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YA+BpF,MApCAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,WACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMy3B,MAAQ,EAEdld,EAAAA,WAAgB7I,cAAcq3B,EAAAA,WAAiBzrC,KAAK0C,OAGlD,QAIbO,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,MACA,KACA6I,EAAAA,WAAgB7I,cAAcrM,EAAAA,YAAkB0yB,MAAOz6B,KAAK0C,MAAM+3B,MAChEkO,YAAY,EACZ/N,KAAM,EACNnL,UAAU,IACZzvB,KAAK0rC,gBAMJxuB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfouB,wBAAwB,IAAIK,UAAU,IAAI3tB,MAAQ,UAAU4tB,KAAK,SAASttC,EAAQU,EAAOJ,GAC5F,YAkBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAtBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCoV,EAAe9zB,EAAQ,gBAEvButC,EAAevtC,EAAQ,+BAEvBwtC,EAAgB/pC,EAAuB8pC,GAYvC3uB,EAAS,SAAUC,GAGrB,QAASD,KAGP,MAFA/a,GAAgBnC,KAAMkd,GAEfd,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQzc,MAAMT,KAAMM,YA4GpF,MAjHAgc,GAAUY,EAAQC,GAQlB5a,EAAa2a,IACXja,IAAK,kBACLG,MAAO,WACL,GAAIpD,KAAK0C,MAAMqpC,UAAY/rC,KAAK0C,MAAMspC,MAAO,CAE3C,GAAI5tB,GAAMpe,KAAK0C,MAAMgwB,OAKrB,OAJI1yB,MAAK0C,MAAMqpC,WACb3tB,GAAOpe,KAAK0C,MAAMqpC,SAAW,KAGxB9uB,EAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,YACbR,EAAAA,WAAgB7I,cACdge,EAAaI,MACXC,GAAIrU,EAAKP,QAASiuB,EAAAA,YACpB7uB,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,OAAQ/I,UAAW,iBACpC,gBAMJ,MAAO,SAIbxa,IAAK,cACLG,MAAO,WACL,GAAIpD,KAAK0C,MAAMmO,KAAM,CAEnB,GAAIuN,GAAMpe,KAAK0C,MAAMgwB,QAAU1yB,KAAK0C,MAAMmO,KAAO,GACjD,OAAOoM,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,QACbR,EAAAA,WAAgB7I,cACdge,EAAaI,MACXC,GAAIrU,EAAKP,QAASiuB,EAAAA,YACpB7uB,EAAAA,WAAgB7I,cACd,QACEoS,cAAe,OAAQ/I,UAAW,iBACpC,mBAMJ,MAAO,SAIbxa,IAAK,gBACLG,MAAO,WACL,GAAIse,GAAS1hB,IAGb,OAAOid,GAAAA,WAAgB7I,cACrB,MACEqJ,UAAW,sBACbzd,KAAK0C,MAAMupC,WAAWroB,IAAI,SAAUmW,GAClC,GAAItc,GAAYsc,IAASrY,EAAOhf,MAAMq3B,KAAO,SAAW,KACpD3b,EAAMsD,EAAOhf,MAAMgwB,OAMvB,OAJIqH,GAAO,IACT3b,GAAO2b,EAAO,KAGT9c,EAAAA,WAAgB7I,cACrB,MACEnR,IAAK82B,EAAMtc,UAAWA,GACxBR,EAAAA,WAAgB7I,cACdge,EAAaI,MACXC,GAAIrU,EAAKP,QAASiuB,EAAAA,YACpB/R,UAQV92B,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,sBACbR,EAAAA,WAAgB7I,cACd,MACA,KACA6I,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,SACbzd,KAAKksC,kBACLlsC,KAAKmsC,eAEPnsC,KAAKosC,sBAONlvB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfmvB,8BAA8B,IAAIruB,MAAQ,QAAQ6U,eAAe,iBAAiByZ,KAAK,SAAShuC,EAAQU,EAAOJ,GAClH,YAwCA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC;AAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GA5Cje,GAAI1H,GAAW/R,OAAO0I,QAAU,SAAUhJ,GAAU,IAAK,GAAIlE,GAAI,EAAGA,EAAI+B,UAAUxB,OAAQP,IAAK,CAAE,GAAIiY,GAASlW,UAAU/B,EAAI,KAAK,GAAI0E,KAAOuT,GAAczT,OAAOvC,UAAUoP,eAAe/Q,KAAK2X,EAAQvT,KAAQR,EAAOQ,GAAOuT,EAAOvT,IAAY,MAAOR,IAEnPF,EAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCytB,EAAQnsC,EAAQ,UAEhBosC,EAAS3oC,EAAuB0oC,GAEhCF,EAAejsC,EAAQ,kBAEvBksC,EAAgBzoC,EAAuBwoC,GAEvCxlC,EAASzG,EAAQ,kBAEjBuG,EAAU9C,EAAuBgD,GAEjCoI,EAAS7O,EAAQ,2BAEjB+M,EAAS/M,EAAQ,2BAEjB8M,EAAUrJ,EAAuBsJ,GAEjC1F,EAASrH,EAAQ,2BAEjBgH,EAAUvD,EAAuB4D,GAEjCsF,EAAa3M,EAAQ,gCAErByM,EAAchJ,EAAuBkJ,GAWrCiS,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAgBtF,OAdAsB,GAAM6zB,OAAS,SAAUhX,GACvBvb,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOhB,WAAW0U,EAAKiP,UAEpDjP,EAAK4O,UAAW,EAChBzrB,EAAM2V,SAASkH,IAGbhc,EAAAA,WAAgBR,IAAI,SACtBL,EAAM+zB,sBAAsBlzB,EAAAA,WAAgBmzB,IAAI,UAEhDh0B,EAAMi0B,2BAGRj0B,EAAMk0B,aAAax1B,EAAM6pC,OAAOxS,MAAQ,GACjC/1B,EA4IT,MAjKAsY,GAAUY,EAAQC,GAwBlB5a,EAAa2a,IACXja,IAAK,wBACLG,MAAO,SAA+Byd,GACpC7gB,KAAKmR,MAAQpO,OAAO0I,OAAOoV,GACzB4O,UAAU,IAEZnqB,EAAAA,WAAgB2G,UAAU,EAAGkB,EAAOhB,WAAW0U,EAAKiP,aAGtD7sB,IAAK,2BACLG,MAAO,WACLpD,KAAKmR,OACHse,UAAU,MAIdxsB,IAAK,eACLG,MAAO,SAAsB22B,GAC3B3uB,EAAAA,WAAgBgtB,OACdC,KAAM,aACNja,IAAKvZ,EAAAA,WAAgBC,IAAI,aACzB+b,MACE8V,KAAM32B,KAAK0C,MAAM68B,MAAM5I,KAAKtY,GAC5B0b,KAAMA,GAERzB,UAAW,IACXT,OAAQ73B,KAAK63B,YAOjB50B,IAAK,oBAILG,MAAO,WACL2H,EAAAA,WAAoB2kB,KAClBhvB,MAAOV,KAAK0C,MAAM68B,MAAM5I,KAAKn1B,KAC7Bu4B,KAAM/5B,KAAK0C,MAAM6pC,OAAOxS,MAAQ,KAChCpK,OAAQpS,QAAQ,cAIpBta,IAAK,uBACLG,MAAO,WACLgI,EAAAA,WAAgBmtB,KAAK,iBAGvBt1B,IAAK,4BACLG,MAAO,SAAmCopC,GACpCxsC,KAAK0C,MAAM6pC,OAAOxS,OAASyS,EAAUD,OAAOxS,OAC9ChvB,EAAAA,WAAoB2kB,KAClBhvB,MAAOV,KAAK0C,MAAM68B,MAAM5I,KAAKn1B,KAC7Bu4B,KAAMyS,EAAUD,OAAOxS,MAAQ,KAC/BpK,OAAQpS,QAAQ,WAGlBvd,KAAK2Z,UACH8V,UAAU,IAGZrkB,EAAAA,WAAgBmtB,KAAK,cACrBv4B,KAAKk4B,aAAasU,EAAUD,OAAOxS,UAIvC92B,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM68B,MAAM5I,KAAKoS,UACjB,8BAAgC/oC,KAAK0C,MAAM68B,MAAM5I,KAAKoS,UAEtD,qBAIX9lC,IAAK,qBACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAM68B,MAAM5I,KAAK8V,YAEjBxvB,EAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,oBACbR,EAAAA,WAAgB7I,cAAc,OAASqJ,UAAW,OAAQkB,yBACtDC,OAAQ5e,KAAK0C,MAAM68B,MAAM5I,KAAK8V,YAAY/tB,SAKvC,QAIbzb,IAAK,eACLG,MAAO,WACL,GAAIpD,KAAKmR,MAAMse,SAAU,CACvB,GAAIzvB,KAAKmR,MAAM8oB,MAAQ,EAAG,CAExB,GAAIvH,GAAU7tB,EAAAA,WAAgBC,IAAI,kBAAoB9E,KAAK0C,MAAM68B,MAAM5I,KAAKnI,KAAO,GACnF,OAAOvR,GAAAA,WAAgB7I,cAAcs2B,EAAAA,WAAgB51B,GAAW4d,QAASA,EACvE+H,MAAOz6B,KAAK0C,MAAM+3B,OACjBz6B,KAAKmR,QAIN,MAAO8L,GAAAA,WAAgB7I,cACrB,KACEqJ,UAAW,QACbF,QAAQ,qDAMZ,MAAON,GAAAA,WAAgB7I,cAAco2B,EAAAA,WAAuB,SAKlEvnC,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAWzd,KAAK0d,gBAClBT,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbzd,KAAK0sC,qBACL1sC,KAAK2sC,qBAONzvB,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEf+S,iBAAiB,IAAIE,0BAA0B,IAAIC,+BAA+B,IAAI2M,0BAA0B,IAAI1M,0BAA0B,IAAIwa,SAAS,IAAIE,iBAAiB,IAAI/sB,MAAQ,UAAU4uB,KAAK,SAAStuC,EAAQU,EAAOJ,GACtO,YA8BA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAsHje,QAASxV,GAAO+rB,GACd,OACEC,KAAQD,EAAMC,KAAKA,KACnBpnB,KAAQmnB,EAAMlW,KAAKjR,KACnB6uB,MAAS1H,EAAM0H,OAInB,QAASzyB,KACP,GAAIA,KAyBJ,OAvBAnD,GAAAA,WAAgBC,IAAI,eAAeX,QAAQ,SAAUP,GAC5B,SAAnBA,EAAKkE,WACPE,EAAMzH,MACJ0S,KAAMpO,EAAAA,WAAgBC,IAAI,kBAAoBlB,EAAK4qB,KAAO,UAC1D1mB,WAAY,EAAGjB,EAAYC,SAASE,GAAQmsB,EAAAA,YAC5CwD,KAAM/yB,IAERoE,EAAMzH,MACJ0S,KAAMpO,EAAAA,WAAgBC,IAAI,kBAAoBlB,EAAK4qB,KAAO,IAC1D1mB,WAAY,EAAGjB,EAAYC,SAASE,GAAQmsB,EAAAA,YAC5CwD,KAAM/yB,KAEoB,mBAAnBA,EAAKkE,WACdE,EAAMzH,MACJ0S,KAAMpO,EAAAA,WAAgBC,IAAI,kBAAoBlB,EAAKkE,UAAY,IAC/DA,WAAY,EAAGjB,EAAYC,SAASE,GAAQe,EAAAA,YAC5CoiB,OACE3oB,KAAMoC,EAAKpC,UAMZwG,EA1LT,GAAIzF,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQoI,OAASA,EACjBpI,EAAQoJ,MAAQA,CAEhB,IAAIgV,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCnW,EAAcvI,EAAQ,eAEtB80B,EAAQ90B,EAAQ,UAEhB2J,EAAQ3J,EAAQ,yBAEhByJ,EAAShG,EAAuBkG,GAEhCqrB,EAASh1B,EAAQ,eAEjB60B,EAASpxB,EAAuBuxB,GAEhCvuB,EAASzG,EAAQ,eAEjBuG,EAAU9C,EAAuBgD,GAWjCmY,EAAS,SAAUC,GAGrB,QAASD,GAAOxa,GACdP,EAAgBnC,KAAMkd,EAEtB,IAAIlZ,GAAQoY,EAA2Bpc,KAAM+C,OAAOqa,eAAeF,GAAQre,KAAKmB,KAAM0C,GAuBtF,OArBAsB,GAAMuvB,UAAY,WACZvvB,EAAMmN,MAAMqiB,SACdxvB,EAAM2V,UACJ6Z,UAAU,IAGZxvB,EAAM2V,UACJ6Z,UAAU,KAKhBxvB,EAAM2uB,QAAU,WACd3uB,EAAM2V,UACJ6Z,UAAU,KAIdxvB,EAAMmN,OACJqiB,UAAU,GAELxvB,EAkFT,MA9GAsY,GAAUY,EAAQC,GAiClB5a,EAAa2a,IACXja,IAAK,wBAILG,MAAO,WACL,MAAIpD,MAAKmR,MAAMqiB,SACN,gCAEA,8BAIXvwB,IAAK,yBACLG,MAAO,WACL,MAAIpD,MAAKmR,MAAMqiB,SACN,mBAEA,iBAIXvwB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,OACEqJ,UAAW,yBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,sBACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cACd,MACEqJ,UAAW,aACbF,QAAQ,UAEVN,EAAAA,WAAgB7I,cACd,UACEqJ,UAAW,+EACXG,KAAM,SACNC,QAAS7d,KAAKuzB,UACdE,gBAAiB,OACjBC,gBAAiB1zB,KAAKmR,MAAMqiB,SAAW,OAAS,SAClDvW,EAAAA,WAAgB7I,cACd,KACEqJ,UAAW,iBACb,UAINR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,iCACbR,EAAAA,WAAgB7I,cACd,OACEqJ,UAAW,aACbR,EAAAA,WAAgB7I,cAAcgf,EAAM6X,SAAWG,MAAOvmC,EAAAA,WAAgBC,IAAI,eACxE4tB,QAAS7tB,EAAAA,WAAgBC,IAAI,uBAIrCmY,EAAAA,WAAgB7I,cACd,OACEqJ,UAAWzd,KAAK2zB,0BAClB1W,EAAAA,WAAgB7I,cAAcgf,EAAMlB,YAAckZ,MAAOvmC,EAAAA,WAAgBC,IAAI,eAC3E4tB,QAAS7tB,EAAAA,WAAgBC,IAAI,kBAC7B6tB,QAAS3yB,KAAK2yB,WAElB3yB,KAAK0C,MAAMgd,cAMVxC,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAsCfkH,cAAc,IAAIyoB,wBAAwB,IAAI/Y,SAAS,IAAIgZ,cAAc,IAAI9uB,MAAQ,QAAQ1W,cAAc,gBAAgBylC,KAAK,SAASzuC,EAAQU,EAAOJ,GAC3J,YAYA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAEhH,QAAS8Z,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAhBje,GAAIja,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAGT,IAAI4Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAUjCE,EAAS,SAAUC,GAGrB,QAASD,KACP,GAAIgG,GAEAC,EAAOnf,EAAOof,CAElBjhB,GAAgBnC,KAAMkd,EAEtB,KAAK,GAAImG,GAAO/iB,UAAUxB,OAAQsB,EAAOC,MAAMgjB,GAAOC,EAAO,EAAUD,EAAPC,EAAaA,IAC3EljB,EAAKkjB,GAAQhjB,UAAUgjB,EAGzB,OAAeH,GAASnf,EAAQoY,EAA2Bpc,MAAOkjB,EAAwBngB,OAAOqa,eAAeF,IAASre,KAAK4B,MAAMyiB,GAAwBljB,MAAMX,OAAOe,KAAiB4D,EAAMgpC,OAAS,WACvMhpC,EAAMtB,MAAMwmB,UACVzmB,QACEW,OAAQY,EAAMtB,MAAMU,UAHnBggB,EAMJD,EAAQ/G,EAA2BpY,EAAOof,GA2D/C,MA9EA9G,GAAUY,EAAQC,GAsBlB5a,EAAa2a,IACXja,IAAK,eACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMU,MACN,+BAEA,mCAIXH,IAAK,UACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMU,MACNpD,KAAK0C,MAAM4uB,QAAU,YAErBtxB,KAAK0C,MAAM6uB,SAAW,6BAIjCtuB,IAAK,WACLG,MAAO,WACL,MAAIpD,MAAK0C,MAAMU,MACNpD,KAAK0C,MAAM8uB,SAAWjU,QAAQ,OAE9Bvd,KAAK0C,MAAM+uB,UAAYlU,QAAQ,SAO1Cta,IAAK,SAILG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cACrB,UACEwJ,KAAM,SACNC,QAAS7d,KAAKgtC,OACdvvB,UAAWzd,KAAK0d,eAChBW,GAAIre,KAAK0C,MAAM2b,IAAM,KACrBijB,mBAAoBthC,KAAK0C,MAAM,qBAAuB,KACtD8c,SAAUxf,KAAK0C,MAAM8c,WAAY,GACnCvC,EAAAA,WAAgB7I,cACd,QACEqJ,UAAW,iBACbzd,KAAKs5B,WAEPt5B,KAAKu5B,gBAMJrc,GACPD,EAAAA,WAAgBc,UAElBnf,GAAAA,WAAkBse,IAEfc,MAAQ,UAAUivB,KAAK,SAAS3uC,EAAQU,EAAOJ,IAClD,SAAWkD,GACX,YAaA,SAASC,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAbhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQyE,OAASC,MAEjB,IAAIC,GAAejF,EAAQ,wBAEvBkF,EAAgBzB,EAAuBwB,GAMvCF,EAASzE,EAAQyE,OAAS,WAC5B,QAASA,KACPlB,EAAgBnC,KAAMqD,GAEtBrD,KAAKyD,iBACLzD,KAAK0D,YAyDP,MAtDAnB,GAAac,IACXJ,IAAK,iBACLG,MAAO,SAAwBO,GAC7B3D,KAAKyD,cAAclD,MACjB0C,IAAKU,EAAYnC,KAEjBoC,KAAMD,EAAYA,YAElBE,MAAOF,EAAYE,MACnBC,OAAQH,EAAYG,YAIxBb,IAAK,OACLG,MAAO,SAAcW,GACnB,GAAIC,GAAQhE,IAEZA,MAAK0D,SAAWK,CAEhB,IAAIE,GAAY,GAAIT,GAAAA,WAAsBxD,KAAKyD,eAAeS,eAC9DD,GAAUE,QAAQ,SAAUR,GAC1BA,EAAYK,QAOhBf,IAAK,MACLG,MAAO,SAAaH,GAClB,QAASjD,KAAK0D,SAAST,MAGzBA,IAAK,MACLG,MAAO,SAAaH,EAAKmB,GACvB,MAAIpE,MAAKqE,IAAIpB,GACJjD,KAAK0D,SAAST,GAEdmB,GAAYd,UAIvBL,IAAK,MACLG,MAAO,SAAaH,GAClB,GAAIjD,KAAKqE,IAAIpB,GAAM,CACjB,GAAIG,GAAQpD,KAAK0D,SAAST,EAE1B,OADAjD,MAAK0D,SAAST,GAAO,KACdG,OAONC,KAKLiB,EAAS,GAAIjB,EAGjBvB,GAAOwC,OAASA,EAGhB1F,EAAAA,WAAkB0F,IAEfzF,KAAKmB,KAAuB,mBAAX8B,QAAyBA,OAAyB,mBAATyC,MAAuBA,KAAyB,mBAAXC,QAAyBA,aACxH0oC,uBAAuB,MAAMC,KAAK,SAAS7uC,EAAQU,EAAOJ,GAC7D,YAsBA,SAASyyB,GAAU+b,GACjB,OACExvB,KAAMyvB,EACND,MAAOA,GAIX,QAASvL,GAAOj2B,GACd,OACEgS,KAAM0vB,EACN1hC,KAAMA,GAIV,QAAS2hC,KACP,GAAIC,GAAOltC,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,IAAmB,EAAQA,UAAU,EAEnF,QACEsd,KAAM6vB,EACND,KAAMA,GAIV,QAAS3wB,KACP,GAAI1L,GAAQ7Q,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmBuL,EAAevL,UAAU,GACvFiV,EAASjV,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEpF,QAAQiV,EAAOqI,MACb,IAAKyvB,GACH,GAAI3iB,GAAW3nB,OAAO0I,UAAW0F,EAEjC,OADAuZ,GAAS9e,KAAO7I,OAAO0I,UAAW0F,EAAMvF,KAAM2J,EAAO63B,OAC9C1iB,CAET,KAAK4iB,GACH,MAAOvqC,QAAO0I,UAAW0F,GACvB2L,SAAUvH,EAAO3J,MAGrB,KAAK6hC,GACH,MAAO1qC,QAAO0I,UAAW0F,GACvBzF,iBAAiB,EACjBC,aAAa,EACboR,WAAYxH,EAAOi4B,MAGvB,KAAKrgC,GAAOugC,cACV,GAAIv8B,EAAMzF,iBAAmByF,EAAMvF,KAAKyS,KAAO9I,EAAOo4B,OAAQ,CAC5D,GAAIC,GAAY7qC,OAAO0I,UAAW0F,EAIlC,OAHAy8B,GAAUhiC,KAAO7I,OAAO0I,UAAW0F,EAAMvF,MACvC0S,YAAe/I,EAAO4Q,aAEjBynB,EAET,MAAOz8B,EAET,KAAKhE,GAAO0gC,gBACV,GAAI18B,EAAMzF,iBAAmByF,EAAMvF,KAAKyS,KAAO9I,EAAOo4B,OAAQ,CAC5D,GAAIG,GAAa/qC,OAAO0I,UAAW0F,EAKnC,OAJA28B,GAAWliC,KAAO7I,OAAO0I,UAAW0F,EAAMvF,MACxC4R,SAAUjI,EAAOiI,SACjBgR,KAAMjZ,EAAOiZ,OAERsf,EAET,MAAO38B,EAET,SACE,MAAOA,IAvFbpO,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ6uC,SAAW7uC,EAAQ0uC,QAAU1uC,EAAQyuC,WAAazuC,EAAQiN,aAAevI,OACjF1E,EAAQyyB,UAAYA,EACpBzyB,EAAQijC,OAASA,EACjBjjC,EAAQ2uC,QAAUA,EAClB3uC,EAAAA,WAAkBie,CAElB,IAAI1P,GAAS7O,EAAQ,WAEjBuN,EAAejN,EAAQiN,cACzBiR,UAAU,EACVC,WAAW,GAGTswB,EAAazuC,EAAQyuC,WAAa,aAClCC,EAAU1uC,EAAQ0uC,QAAU,UAC5BG,EAAW7uC,EAAQ6uC,SAAW,aAyE/BM,UAAU,MAAMC,KAAK,SAAS1vC,EAAQU,EAAOJ,GAChD,YAgBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAKvF,QAASmK,GAAUqqB,GACjB,OACE5Y,KAAMqwB,EACNzX,QAASA,GAIb,QAAS2C,GAAaiU,GACpB,OACExvB,KAAMswB,EACNd,MAAOA,GAIX,QAASvwB,KACP,GAAI1L,GAAQ7Q,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,MAAwBA,UAAU,GAC7EiV,EAASjV,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEpF,QAAQiV,EAAOqI,MACb,IAAKqwB,GACH,MAAOlrC,QAAO0I,UAAW8J,EAAOihB,SAC9BK,WAAY,EAAGrsB,EAAAA,YAAkB+K,EAAOihB,QAAQK,WAChD3V,QAAS,EAAG/T,EAAOghC,iBAAiB54B,EAAOihB,QAAQtV,SAGvD,KAAKgtB,GACH,MAAOnrC,QAAO0I,UAAW0F,EAAOoE,EAAO63B,MAEzC,KAAKjgC,GAAOugC,cACV,MAAIv8B,GAAMkN,KAAO9I,EAAOo4B,OACf5qC,OAAO0I,UAAW0F,GACvBmN,YAAa/I,EAAO4Q,aAGjBhV,CAET,KAAKhE,GAAO0gC,gBACV,MAAI18B,GAAMkN,KAAO9I,EAAOo4B,OACf5qC,OAAO0I,UAAW0F,GACvBqM,SAAUjI,EAAOiI,SACjBgR,KAAMjZ,EAAOiZ,OAGVrd,CAET,SACE,MAAOA,IAjEbpO,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQsvC,cAAgBtvC,EAAQqvC,kBAAoB3qC,OACpD1E,EAAQuN,UAAYA,EACpBvN,EAAQu6B,aAAeA,EACvBv6B,EAAAA,WAAkBie,CAElB,IAAIjS,GAAUtM,EAAQ,UAElBkM,EAAWzI,EAAuB6I,GAElCuC,EAAS7O,EAAQ,WAIjB2vC,EAAoBrvC,EAAQqvC,kBAAoB,oBAChDC,EAAgBtvC,EAAQsvC,cAAgB,kBAoDzCH,UAAU,IAAIljC,OAAS,WAAWujC,KAAK,SAAS9vC,EAAQU,EAAOJ,GAClE,YAiBA,SAASyvC,GAAa36B,EAASkK,GAC7B,OACEA,KAAM0wB,EACN56B,QAASA,EACT66B,YAAa3wB,GAIjB,QAAS4wB,KACP,OACE5wB,KAAM6wB,GAIV,QAASjK,KACP,GAAIrzB,GAAQ7Q,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmBuL,EAAevL,UAAU,GACvFiV,EAASjV,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEpF,OAAIiV,GAAOqI,OAAS0wB,GAEhB1wB,KAAMrI,EAAOg5B,YACb76B,QAAS6B,EAAO7B,QAChBixB,WAAW,GAEJpvB,EAAOqI,OAAS6wB,EAClB1rC,OAAO0I,UAAW0F,GACvBwzB,WAAW,IAGNxzB,EA5CXpO,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQyvC,aAAeA,EACvBzvC,EAAQ4vC,aAAeA,EACvB5vC,EAAAA,WAAkB4lC,CAClB,IAAI34B,GAAejN,EAAQiN,cACzB+R,KAAM,OACNlK,QAAS,GACTixB,WAAW,GAGT2J,EAAgB1vC,EAAQ0vC,cAAgB,gBACxCG,EAAgB7vC,EAAQ6vC,cAAgB,qBAmCtCC,KAAK,SAASpwC,EAAQU,EAAOJ,GACnC,YAaA,SAAS6O,KACP,OACEmQ,KAAM+wB,GAIV,QAAS3b,KACP,GAAI7hB,GAAQ7Q,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmBuL,EAAevL,UAAU,GACvFiV,EAASjV,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEpF,OAAIiV,GAAOqI,OAAS+wB,EACX5rC,OAAO0I,UAAW0F,GACvB6hB,KAAM7hB,EAAM6hB,KAAO,IAGd7hB,EA1BXpO,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ6O,OAASA,EACjB7O,EAAAA,WAAkBo0B,CAClB,IAAInnB,GAAejN,EAAQiN,cACzBmnB,KAAM,GAGJ2b,EAAO/vC,EAAQ+vC,KAAO,YAqBpBC,KAAK,SAAStwC,EAAQU,EAAOJ,GACnC,YAiBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAMvF,QAASutB,GAAcsU,EAAQj4B,EAAMijC,GACnC,OACEjxB,KAAMkxB,EACNjL,OAAQA,EACRj4B,KAAMA,EACNijC,UAAWA,GAIf,QAAS9mB,GAAOgnB,GACd,OACEnxB,KAAMoxB,EACND,MAAOA,GAIX,QAAS5iC,GAAU4iC,GACjB,OACEnxB,KAAMqxB,EACNF,MAAOA,GAIX,QAASvxB,KACP,GAAIrM,GAAQ7Q,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,MAAwBA,UAAU,GAC7EiV,EAASjV,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEpF,QAAQiV,EAAOqI,MACb,IAAKkxB,GACH,GAAIpkB,GAAWvZ,EAAM9C,OASrB,OARAqc,GAASwkB,SACP7wB,GAAI3G,KAAKy3B,MAAMjgC,KAAKkgC,MAAQ,KAC5B7H,WAAYhyB,EAAOs5B,UACnBrH,oBAAqBjyB,EAAOs5B,UAAUrxB,SACtCqqB,YAAa,EAAGr9B,EAAAA,cAChBo9B,aAAcryB,EAAOsuB,OAAOrmB,SAC5BmqB,aAAcpyB,EAAO3J,KAAK4R,WAErBkN,CAET,KAAKskB,GACH,MAAO79B,GAAM9R,OAAOkW,EAAOw5B,MAAMnrB,IAAI,SAAUhgB,GAC7C,MAAOb,QAAO0I,UAAW7H,GACvBikC,YAAa,EAAGr9B,EAAAA,YAAkB5G,EAAKikC,gBAI7C,KAAKoH,GACH,MAAO15B,GAAOw5B,MAAMnrB,IAAI,SAAUhgB,GAChC,MAAOb,QAAO0I,UAAW7H,GACvBikC,YAAa,EAAGr9B,EAAAA,YAAkB5G,EAAKikC,eAI7C,KAAK16B,GAAOugC,cACV,MAAOv8B,GAAMyS,IAAI,SAAUhgB,GAQzB,MAPAA,GAAOb,OAAO0I,UAAW7H,GACrBA,EAAK2jC,YAAc3jC,EAAK2jC,WAAWlpB,KAAO9I,EAAOo4B,SACnD/pC,EAAK2jC,WAAaxkC,OAAO0I,UAAW7H,EAAK2jC,YACvCjpB,YAAe/I,EAAO4Q,cAInBviB,GAGX,KAAKuJ,GAAO0gC,gBACV,MAAO18B,GAAMyS,IAAI,SAAUhgB,GASzB,MARAA,GAAOb,OAAO0I,UAAW7H,GACrBA,EAAK2jC,YAAc3jC,EAAK2jC,WAAWlpB,KAAO9I,EAAOo4B,SACnD/pC,EAAK2jC,WAAaxkC,OAAO0I,UAAW7H,EAAK2jC,YACvC/pB,SAAYjI,EAAOiI,SACnBgR,KAAQjZ,EAAOiZ,QAIZzrB,OAAO0I,UAAW7H,IAG7B,SACE,MAAOuN,IArGbpO,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQqwC,kBAAoBrwC,EAAQowC,eAAiBpwC,EAAQkwC,gBAAkBxrC,OAC/E1E,EAAQ2wB,cAAgBA,EACxB3wB,EAAQmpB,OAASA,EACjBnpB,EAAQuN,UAAYA,EACpBvN,EAAAA,WAAkB4e,CAElB,IAAIrQ,GAAS7O,EAAQ,WAEjBsM,EAAUtM,EAAQ,UAElBkM,EAAWzI,EAAuB6I,GAIlCkkC,EAAkBlwC,EAAQkwC,gBAAkB,kBAC5CE,EAAiBpwC,EAAQowC,eAAiB,iBAC1CC,EAAoBrwC,EAAQqwC,kBAAoB,sBAsFjDlB,UAAU,IAAIljC,OAAS,WAAWwkC,KAAK,SAAS/wC,EAAQU,EAAOJ,GAClE,YAiBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAOvF,QAAS+lB,GAAOgnB,GACd,OACEnxB,KAAM0xB,EACNP,MAAOA,GAIX,QAAS5iC,GAAU4iC,GACjB,OACEnxB,KAAM2xB,EACNR,MAAOA,GAIX,QAASZ,GAAgBjtB,GACvB,MAAIA,GACKne,OAAO0I,UAAWyV,GACvBimB,WAAYjmB,EAAOimB,YAAc,EAAG38B,EAAAA,YAAkB0W,EAAOimB,YAAc,KAC3EF,aAAc/lB,EAAO+lB,cAAgB,EAAGz8B,EAAAA,YAAkB0W,EAAO+lB,cAAgB,OAG5E,KAIX,QAAS7gB,GAAaxa,EAAMua,GAC1B,OACEvI,KAAM8vB,EACNC,OAAQ/hC,EAAKyS,GACb8H,WAAYA,GAIhB,QAASqJ,GAAe5jB,EAAM4R,EAAUgR,GACtC,OACE5Q,KAAMiwB,EACNF,OAAQ/hC,EAAKyS,GACbb,SAAUA,EACVgR,KAAMA,GAIV,QAAS5iB,KACP,GAAIuF,GAAQ7Q,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,MAAwBA,UAAU,GAC7EiV,EAASjV,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,GAAmB,KAAOA,UAAU,EAEpF,QAAQiV,EAAOqI,MACb,IAAK0xB,GACH,MAAOn+B,GAAM9R,OAAOkW,EAAOw5B,MAAMnrB,IAAI,SAAUhgB,GAC7C,MAAOb,QAAO0I,UAAW7H,GACvBizB,WAAY,EAAGrsB,EAAAA,YAAkB5G,EAAKizB,WACtC3V,OAAQitB,EAAgBvqC,EAAKsd,YAInC,KAAKquB,GACH,MAAOh6B,GAAOw5B,MAAMnrB,IAAI,SAAUhgB,GAChC,MAAOb,QAAO0I,UAAW7H,GACvBizB,WAAY,EAAGrsB,EAAAA,YAAkB5G,EAAKizB,WACtC3V,OAAQitB,EAAgBvqC,EAAKsd,WAInC,KAAKwsB,GACH,MAAOv8B,GAAMyS,IAAI,SAAUhgB,GAMzB,MALAA,GAAOb,OAAO0I,UAAW7H,GACrBA,EAAKya,KAAO9I,EAAOo4B,SACrB/pC,EAAK0a,YAAc/I,EAAO4Q,YAGrBviB,GAGX,SACE,MAAOuN,IAhGbpO,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQivC,gBAAkBjvC,EAAQ8uC,cAAgB9uC,EAAQ2wC,gBAAkB3wC,EAAQ0wC,aAAehsC,OACnG1E,EAAQmpB,OAASA,EACjBnpB,EAAQuN,UAAYA,EACpBvN,EAAQuvC,gBAAkBA,EAC1BvvC,EAAQwnB,aAAeA,EACvBxnB,EAAQ4wB,eAAiBA,EACzB5wB,EAAAA,WAAkBgN,CAElB,IAAIhB,GAAUtM,EAAQ,UAElBkM,EAAWzI,EAAuB6I,GAIlC0kC,EAAe1wC,EAAQ0wC,aAAe,eACtCC,EAAkB3wC,EAAQ2wC,gBAAkB,kBAC5C7B,EAAgB9uC,EAAQ8uC,cAAgB,gBACxCG,EAAkBjvC,EAAQivC,gBAAkB,oBAgF7ChjC,OAAS,WAAW2kC,KAAK,SAASlxC,EAAQU,EAAOJ,GACpD,YAUA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCARhH,GAAImtC,GAA4B,kBAAXC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAU3tC,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAX0tC,SAAyB1tC,EAAI0a,cAAgBgzB,OAAS,eAAkB1tC,IAEtOO,EAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAKT,IAAIwsC,GAAOhxC,EAAQgxC,KAAO,WACxB,QAASA,KACPztC,EAAgBnC,KAAM4vC,GAEtB5vC,KAAK6vC,YAAc,KACnB7vC,KAAK8vC,WAAa,KAClB9vC,KAAK+vC,UA4PP,MAzPAxtC,GAAaqtC,IACX3sC,IAAK,OACLG,MAAO,SAAc4sC,GACnBhwC,KAAK6vC,YAAcG,EACnBhwC,KAAK8vC,WAAa9vC,KAAKokC,kBAGzBnhC,IAAK,eACLG,MAAO,WACL,GAAkD,KAA9CqF,SAASwnC,OAAOj8B,QAAQhU,KAAK6vC,aAAqB,CACpD,GAAIK,GAAc,GAAIC,QAAOnwC,KAAK6vC,YAAc,YAC5CI,EAASxnC,SAASwnC,OAAOj1B,MAAMk1B,GAAa,EAChD,OAAOD,GAASA,EAAOl9B,MAAM,KAAK,GAAK,KAEvC,MAAO,SAIX9P,IAAK,UACLG,MAAO,SAAiBgtC,EAAQhyB,EAAKyC,GACnC,GAAItc,GAAOvE,IACX,OAAO,IAAI4vB,SAAQ,SAAUygB,EAASC,GACpC,GAAIC,IACFnyB,IAAKA,EACLgyB,OAAQA,EACRI,SACEC,cAAelsC,EAAKurC,YAGtBjvB,KAAMA,EAAOvP,KAAKC,UAAUsP,GAAQ,KACpC6vB,YAAa,kCACbC,SAAU,OAEV5vB,QAAS,SAAiBF,GACxBwvB,EAAQxvB,IAGVrP,MAAO,SAAeo/B,GACpB,GAAI3vB,GAAY2vB,EAAMC,gBAEtB5vB,GAAUC,OAAS0vB,EAAM1vB,OAEA,IAArBD,EAAUC,SACZD,EAAUD,OAASzD,QAAQ,sCAGJ,MAArB0D,EAAUC,SACPD,EAAUD,QAA+B,cAArBC,EAAUD,SACjCC,EAAUD,OAASzD,QAAQ,6BAIN,MAArB0D,EAAUC,QAAmBD,EAAUD,SACzCC,EAAUD,OAASzD,QAAQ,+BAG7B0D,EAAU6vB,WAAaF,EAAME,WAE7BR,EAAOrvB,IAIXvW,GAAEqmC,KAAKR,QAIXttC,IAAK,MACLG,MAAO,SAAagb,EAAKmuB,EAAQyE,GAC/B,GAAIhtC,GAAQhE,IAMZ,IAJIusC,IACFnuB,GAAO,IAAM1T,EAAEumC,MAAM1E,KAGnByE,EA4FF,MAAOhxC,MAAKkxC,QAAQ,MAAO9yB,EA3F3B,IAAIgF,GAAO,WACT,GAAI7e,GAAOP,CASX,OANIA,GAAM+rC,OAAOiB,KACfhtC,EAAM+rC,OAAOiB,GAAM5yB,IAAMA,GAKvBpa,EAAM+rC,OAAOiB,IAAShtC,EAAM+rC,OAAOiB,GAAMG,QAEzCC,GACExwB,KAAM,eAOD5c,EAAM+rC,OAAOiB,IAAShtC,EAAM+rC,OAAOiB,GAAMK,MAChDrtC,EAAM+rC,OAAOiB,GAAMG,QAAS,GAG1BC,EAAG,GAAIxhB,SAAQ,SAAUygB,EAASC,GAChC,GAAIe,GAAO,QAASA,GAAKjzB,GAEnB7Z,EAAKwrC,OAAOiB,GAAMK,KACpB7sC,OAAO/E,WAAW,WAChB4xC,EAAKjzB,IACJ,KAGM7Z,EAAKwrC,OAAOiB,GAAM5yB,MAAQA,EACjCizB,EAAK9sC,EAAKwrC,OAAOiB,GAAM5yB,MAIrB7Z,EAAKwrC,OAAOiB,GAAMG,QAAS,EAC3B5sC,EAAK2sC,QAAQ,MAAO3sC,EAAKwrC,OAAOiB,GAAM5yB,KAAKwC,KAAK,SAAUC,GACpDtc,EAAKwrC,OAAOiB,GAAM5yB,MAAQA,EAC5BiyB,EAAQxvB,IAERtc,EAAKwrC,OAAOiB,GAAMG,QAAS,EAC3BE,EAAK9sC,EAAKwrC,OAAOiB,GAAM5yB,OAExB,SAAU6C,GACP1c,EAAKwrC,OAAOiB,GAAM5yB,MAAQA,EAC5BkyB,EAAOrvB,IAEP1c,EAAKwrC,OAAOiB,GAAMG,QAAS,EAC3BE,EAAK9sC,EAAKwrC,OAAOiB,GAAM5yB,SAMnC5Z,QAAO/E,WAAW,WAChB4xC,EAAKjzB,IACJ,UAMLpa,EAAM+rC,OAAOiB,IACX5yB,IAAKA,EACLizB,MAAM,EACNF,QAAQ,IAIRC,EAAG,GAAIxhB,SAAQ,SAAUygB,EAASC,GAChC/rC,EAAK2sC,QAAQ,MAAO9yB,GAAKwC,KAAK,SAAUC,GACtCtc,EAAKwrC,OAAOiB,GAAMK,MAAO,EACrB9sC,EAAKwrC,OAAOiB,GAAM5yB,MAAQA,GAC5BiyB,EAAQxvB,IAET,SAAUI,GACX1c,EAAKwrC,OAAOiB,GAAMK,MAAO,EACrB9sC,EAAKwrC,OAAOiB,GAAM5yB,MAAQA,GAC5BkyB,EAAOrvB,WAQvB,OAAoE,YAA/C,mBAATmC,GAAuB,YAAcqsB,EAAQrsB,IAA4BA,EAAKguB,EAA1F,UAMJnuC,IAAK,OACLG,MAAO,SAAcgb,EAAKyC,GACxB,MAAO7gB,MAAKkxC,QAAQ,OAAQ9yB,EAAKyC,MAGnC5d,IAAK,QACLG,MAAO,SAAegb,EAAKyC,GACzB,MAAO7gB,MAAKkxC,QAAQ,QAAS9yB,EAAKyC,MAGpC5d,IAAK,MACLG,MAAO,SAAagb,EAAKyC,GACvB,MAAO7gB,MAAKkxC,QAAQ,MAAO9yB,EAAKyC,MAGlC5d,IAAK,SACLG,MAAO,SAAiBgb,GACtB,MAAOpe,MAAKkxC,QAAQ,SAAU9yB,MAGhCnb,IAAK,SACLG,MAAO,SAAgBgb,EAAKyC,EAAMgH,GAChC,GAAItjB,GAAOvE,IACX,OAAO,IAAI4vB,SAAQ,SAAUygB,EAASC,GACpC,GAAIC,IACFnyB,IAAKA,EACLgyB,OAAQ,OACRI,SACEC,cAAelsC,EAAKurC,YAGtBjvB,KAAMA,EACN6vB,aAAa,EACbY,aAAa,EAEbf,IAAK,QAASA,KACZ,GAAIA,GAAM,GAAI/rC,QAAO+sC,cAMrB,OALAhB,GAAInwB,OAAO/N,iBAAiB,WAAY,SAAUm/B,GAC5CA,EAAIC,kBACN5pB,EAASnQ,KAAKg6B,MAAMF,EAAIG,OAASH,EAAII,MAAQ,QAE9C,GACIrB,GAGTxvB,QAAS,SAAiBkD,GACxBosB,EAAQpsB,IAGVzS,MAAO,SAAeo/B,GACpB,GAAI3vB,GAAY2vB,EAAMC,gBAEtB5vB,GAAUC,OAAS0vB,EAAM1vB,OAEA,IAArBD,EAAUC,SACZD,EAAUD,OAASzD,QAAQ,sCAGJ,MAArB0D,EAAUC,SACPD,EAAUD,QAA+B,cAArBC,EAAUD,SACjCC,EAAUD,OAASzD,QAAQ,6BAIN,MAArB0D,EAAUC,QAAmBD,EAAUD,SACzCC,EAAUD,OAASzD,QAAQ,+BAG7B0D,EAAU6vB,WAAaF,EAAME,WAE7BR,EAAOrvB,IAIXvW,GAAEqmC,KAAKR,SAKNX,IAGThxC,GAAAA,WAAkB,GAAIgxC,QAEhBiC,KAAK,SAASvzC,EAAQU,EAAOJ,GACnC,YAWA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAThH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQkzC,KAAOxuC,MAEf,IAAImC,GAAQnH,EAAQ,oBAMhBwzC,EAAOlzC,EAAQkzC,KAAO,WACxB,QAASA,KACP3vC,EAAgBnC,KAAM8xC,GA6ExB,MA1EAvvC,GAAauvC,IACX7uC,IAAK,OACLG,MAAO,SAAc2vB,EAAOgf,EAAOC,GACjChyC,KAAK2F,OAASotB,EACd/yB,KAAKiyC,OAASF,EACd/xC,KAAK0F,OAASssC,EAGdhyC,KAAKkyC,cAGLlyC,KAAKmyC,gBAGPlvC,IAAK,cACLG,MAAO,WACL,GAAI+N,GAAQnR,KAAK2F,OAAOysC,WAAWv1B,IAC/B1L,GAAMzF,gBACR1L,KAAKiyC,OAAOviB,IAAI,QACdhkB,iBAAiB,EACjB8R,SAAUrM,EAAMvF,KAAK4R,WAGvBxd,KAAKiyC,OAAOviB,IAAI,QACdhkB,iBAAiB,OAKvBzI,IAAK,aACLG,MAAO,WACL,GAAIY,GAAQhE,IAEZA,MAAKiyC,OAAOI,MAAM,OAAQ,SAAU3nB,GAC9BA,EAAShf,gBACX1H,EAAM2B,OAAOsG,UAAU,EAAGxG,EAAMo8B,SAC9BrkB,SAAUkN,EAASlN,YAGrBxZ,EAAM2B,OAAOsG,UAAU,EAAGxG,EAAM8nC,cAGpCvtC,KAAK0F,OAAO27B,UAGdp+B,IAAK,SACLG,MAAO,SAAgBwI,GACrB5L,KAAK2F,OAAOsG,UAAU,EAAGxG,EAAMo8B,QAAQj2B,IACvC5L,KAAKiyC,OAAOviB,IAAI,QACdhkB,iBAAiB,EACjB8R,SAAU5R,EAAK4R,WAEjBxd,KAAK0F,OAAO27B,UAGdp+B,IAAK,UACLG,MAAO,WACLpD,KAAK2F,OAAOsG,UAAU,EAAGxG,EAAM8nC,YAC/BvtC,KAAKiyC,OAAOviB,IAAI,QACdhkB,iBAAiB,IAEnB1L,KAAK0F,OAAO27B,UAGdp+B,IAAK,cACLG,MAAO,WACLpD,KAAK2F,OAAOsG,UAAU,EAAGxG,EAAM8nC,UAAS,IACxCvtC,KAAKiyC,OAAOviB,IAAI,QACdhkB,iBAAiB,IAEnB1L,KAAK0F,OAAO27B,WAITyQ,IAGTlzC,GAAAA,WAAkB,GAAIkzC,KAEnBQ,mBAAmB,MAAMC,KAAK,SAASj0C,EAAQU,EAAOJ,GACzD,YAkBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASoa,GAA2B7X,EAAM1F,GAAQ,IAAK0F,EAAQ,KAAM,IAAI8X,gBAAe,4DAAgE,QAAOxd,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B0F,EAAP1F,EAElO,QAASyd,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIla,WAAU,iEAAoEka,GAAeD,GAAS/b,UAAYuC,OAAO0Z,OAAOD,GAAcA,EAAWhc,WAAakc,aAAetZ,MAAOmZ,EAAU3Z,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe2Z,IAAYzZ,OAAO4Z,eAAiB5Z,OAAO4Z,eAAeJ,EAAUC,GAAcD,EAASK,UAAYJ,GAEje,QAASra,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAtBhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAGhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ4zC,QAAU5zC,EAAQ6zC,UAAY7zC,EAAQ8zC,mBAAqB9zC,EAAQ+zC,UAAY/zC,EAAQg0C,UAAYh0C,EAAQi0C,YAAcvvC,MAEjI,IAAI0Z,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjCuQ,EAAajvB,EAAQ,4BAErBkvB,EAAczrB,EAAuBwrB,GAYrCslB,EAAcj0C,EAAQi0C,YAAc,WACtC,QAASA,KACP1wC,EAAgBnC,KAAM6yC,GAaxB,MAVAtwC,GAAaswC,IACX5vC,IAAK,OACLG,MAAO,SAAcW,EAASgtC,EAAM+B,EAAStO,GAC3CxkC,KAAK0D,SAAWK,EAChB/D,KAAKgF,MAAQ+rC,EACb/wC,KAAKsG,SAAWwsC,EAChB9yC,KAAKuG,UAAYi+B,MAIdqO,KAGLD,EAAYh0C,EAAQg0C,UAAY,SAAUG,GAG5C,QAASH,KAGP,MAFAzwC,GAAgBnC,KAAM4yC,GAEfx2B,EAA2Bpc,KAAM+C,OAAOqa,eAAew1B,GAAWnyC,MAAMT,KAAMM,YAuBvF,MA5BAgc,GAAUs2B,EAAWG,GAQrBxwC,EAAaqwC,IACX3vC,IAAK,OACLG,MAAO,WACL,MAAO,IAAIwsB,SAAQ,SAAUygB,GAE3BA,SAIJptC,IAAK,YACLG,MAAO,WACL,MAAO,SAGTH,IAAK,YACLG,MAAO,WACL,MAAO,UAIJwvC,GACPC,GAEEF,EAAY/zC,EAAQ+zC,UAAY,SAAUK,GAG5C,QAASL,KAGP,MAFAxwC,GAAgBnC,KAAM2yC,GAEfv2B,EAA2Bpc,KAAM+C,OAAOqa,eAAeu1B,GAAWlyC,MAAMT,KAAMM,YA+CvF,MApDAgc,GAAUq2B,EAAWK,GAQrBzwC,EAAaowC,IACX1vC,IAAK,OACLG,MAAO,WACL,GAAImB,GAAOvE,IACX,OAAO,IAAI4vB,SAAQ,SAAUygB,EAASC,GACpC/rC,EAAKS,MAAMF,IAAIP,EAAKb,SAASoB,IAAI,oBAAoB8b,KAAK,SAAUC,GAClEtc,EAAK0uC,SAAWpyB,EAAKoyB,SACrB1uC,EAAKmlB,SAAW7I,EAAKqyB,UACrB7C,KACC,WACD9rC,EAAKgC,UAAUiL,MAAM+L,QAAQ,4BAC7B+yB,WAKNrtC,IAAK,YACLG,MAAO,WACL,YAMFH,IAAK,YACLG,MAAO,SAAmB+vC,GACxB,MAAOl2B,GAAAA,WAAgB7I,cACrBoZ,EAAAA,YACE3D,MAAO7pB,KAAKizC,SAAUvkB,MAAO,aAC7B/E,WAAYwpB,EAAOxpB,YAAc,WACjCG,aAAcqpB,EAAOrpB,cAAgB,WACrCN,WAAY2pB,EAAO5R,KAAKpwB,MAAMyZ,OAAOuW,QACrCzX,SAAU1pB,KAAK0pB,UAAY,MAC7BzM,EAAAA,WAAgB7I,cAAc,SAAWwJ,KAAM,OAAQS,GAAI,aAAcZ,UAAW,eAClF6jB,mBAAoB,oBACpB9hB,SAAU2zB,EAAO5R,KAAKpwB,MAAM+O,UAC5BgJ,SAAUiqB,EAAO5R,KAAK9W,UAAU,WAChCrnB,MAAO+vC,EAAO5R,KAAKpwB,MAAMgwB,eAO1BwR,GACPE,GAEEH,EAAqB9zC,EAAQ8zC,mBAAqB,SAAUv1B,GAG9D,QAASu1B,KAGP,MAFAvwC,GAAgBnC,KAAM0yC,GAEft2B,EAA2Bpc,KAAM+C,OAAOqa,eAAes1B,GAAoBjyC,MAAMT,KAAMM,YA6BhG,MAlCAgc,GAAUo2B,EAAoBv1B,GAQ9B5a,EAAamwC,IACXzvC,IAAK,oBACLG,MAAO,WACL,GAAI2gB,GAAS/jB,IAEbozC,YAAWpQ,OAAO,aAChBqQ,QAAWrzC,KAAK0C,MAAM4wC,QACtB5iC,SAAY,SAAkBuT,GAE5BF,EAAOrhB,MAAMnB,SACXkB,QACEW,MAAO6gB,WAOjBhhB,IAAK,SACLG,MAAO,WAEL,MAAO6Z,GAAAA,WAAgB7I,cAAc,OAASiK,GAAI,kBAK/Cq0B,GACPz1B,EAAAA,WAAgBc,WAEd00B,EAAY7zC,EAAQ6zC,UAAY,SAAUc,GAG5C,QAASd,KAGP,MAFAtwC,GAAgBnC,KAAMyyC,GAEfr2B,EAA2Bpc,KAAM+C,OAAOqa,eAAeq1B,GAAWhyC,MAAMT,KAAMM,YA+CvF,MApDAgc,GAAUm2B,EAAWc,GAQrBhxC,EAAakwC,IACXxvC,IAAK,OACLG,MAAO,WAGL,MAFApD,MAAKsG,SAASwsC,QAAQ,2CAA2C,GAE1D,GAAIljB,SAAQ,SAAUygB,GAC3B,GAAIgB,GAAO,QAASA,KACQ,mBAAf+B,YACT5uC,OAAO/E,WAAW,WAChB4xC,KACC,KAEHhB,IAGJgB,UAIJpuC,IAAK,YACLG,MAAO,WACL,YAMFH,IAAK,YACLG,MAAO,SAAmB+vC,GACxB,MAAOl2B,GAAAA,WAAgB7I,cACrBoZ,EAAAA,YACE3D,MAAOtM,QAAQ,WAAYmR,MAAO,aAClC/E,WAAYwpB,EAAOxpB,YAAc,WACjCG,aAAcqpB,EAAOrpB,cAAgB,WACrCN,WAAY2pB,EAAO5R,KAAKpwB,MAAMyZ,OAAOuW,QACrCzX,SAAUnM,QAAQ,iCACpBN,EAAAA,WAAgB7I,cAAcs+B,GAAsBY,QAAStzC,KAAK0D,SAASoB,IAAI,YAAY0uC,mBACzFjyC,QAAS4xC,EAAO5R,KAAK9W,UAAU,kBAOhCgoB,GACPI,GAEEL,EAAU5zC,EAAQ4zC,QAAU,WAC9B,QAASA,KACPrwC,EAAgBnC,KAAMwyC,GA0CxB,MAvCAjwC,GAAaiwC,IACXvvC,IAAK,OACLG,MAAO,SAAcW,EAASgtC,EAAM+B,EAAStO,GAC3C,OAAQzgC,EAAQe,IAAI,YAAY2uC,cAC9B,IAAK,KACHzzC,KAAKqG,SAAW,GAAIusC,EACpB,MAEF,KAAK,KACH5yC,KAAKqG,SAAW,GAAIssC,EACpB,MAEF,KAAK,KACH3yC,KAAKqG,SAAW,GAAIosC,GAIxBzyC,KAAKqG,SAASzB,KAAKb,EAASgtC,EAAM+B,EAAStO,MAM7CvhC,IAAK,OACLG,MAAO,WACL,MAAOpD,MAAKqG,SAASq6B,UAGvBz9B,IAAK,YACLG,MAAO,WACL,MAAOpD,MAAKqG,SAAS+6B,eAGvBn+B,IAAK,YACLG,MAAO,SAAmB+vC,GACxB,MAAOnzC,MAAKqG,SAASyB,UAAUqrC,OAI5BX,IAGT5zC,GAAAA,WAAkB,GAAI4zC,KAEnBkB,2BAA2B,GAAG11B,MAAQ,UAAU21B,KAAK,SAASr1C,EAAQU,EAAOJ,GAChF,YAQA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCANhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAKT,IAAIwwC,GAAUh1C,EAAQg1C,QAAU,WAC9B,QAASA,KACPzxC,EAAgBnC,KAAM4zC,GA8BxB,MA3BArxC,GAAaqxC,IACX3wC,IAAK,OACLG,MAAO,SAAcywC,GACnB7zC,KAAK8zC,WAAaD,EAClB7zC,KAAK+zC,gBAGP9wC,IAAK,UACLG,MAAO,SAAiB4wC,GACtB,GAAIC,GAAS3zC,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,IAAmB,EAAQA,UAAU,EAE9C,MAAnCN,KAAK+zC,UAAU//B,QAAQggC,KACzBh0C,KAAK+zC,UAAUxzC,KAAKyzC,GACpBh0C,KAAKsG,SAAS0tC,EAAQC,OAI1BhxC,IAAK,WACLG,MAAO,SAAkB4wC,EAAQC,GAC/BvpC,EAAEqmC,MACA3yB,KAAO61B,EAA2B,GAAlBj0C,KAAK8zC,YAAmBE,EACxCE,OAAO,EACPvD,SAAU,eAKTiD,IAGTh1C,GAAAA,WAAkB,GAAIg1C,QAEhBO,KAAK,SAAS71C,EAAQU,EAAOJ,GACnC,YAQA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCANhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAKT,IAAIgxC,GAAU5vC,OAAO6vC,aAEjBC,EAAe11C,EAAQ01C,aAAe,WACxC,QAASA,KACPnyC,EAAgBnC,KAAMs0C,GA6CxB,MA1CA/xC,GAAa+xC,IACXrxC,IAAK,OACLG,MAAO,SAAcmxC,GACnB,GAAIvwC,GAAQhE,IAEZA,MAAKw0C,QAAUD,EACfv0C,KAAKy0C,aAELjwC,OAAO6N,iBAAiB,UAAW,SAAUvU,GAC3C,GAAI42C,GAAepjC,KAAKU,MAAMlU,EAAE62C,SAChC3wC,GAAMywC,UAAUtwC,QAAQ,SAAUywC,GAC5BA,EAAQ3xC,MAAQnF,EAAEmF,KAAOnF,EAAE+2C,WAAa/2C,EAAE62C,UAC5CC,EAAQlkC,SAASgkC,UAMzBzxC,IAAK,MACLG,MAAO,SAAaH,EAAKG,GACvBgxC,EAAQ/iC,QAAQrR,KAAKw0C,QAAUvxC,EAAKqO,KAAKC,UAAUnO,OAGrDH,IAAK,MACLG,MAAO,SAAaH,GAClB,GAAI6xC,GAAaV,EAAQriC,QAAQ/R,KAAKw0C,QAAUvxC,EAChD,OAAI6xC,GACKxjC,KAAKU,MAAM8iC,GAEX,QAIX7xC,IAAK,QACLG,MAAO,SAAeH,EAAKyN,GACzB1Q,KAAKy0C,UAAUl0C,MACb0C,IAAKjD,KAAKw0C,QAAUvxC,EACpByN,SAAUA,QAKT4jC,IAGT11C,GAAAA,WAAkB,GAAI01C,QAEhBS,KAAK,SAASz2C,EAAQU,EAAOJ,GACnC,YAaA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAbhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQo2C,qBAAuB1xC,MAE/B,IAAI4D,GAAkB5I,EAAQ,4BAE1BsI,EAAmB7E,EAAuBmF,GAM1C8tC,EAAuBp2C,EAAQo2C,qBAAuB,WACxD,QAASA,KACP7yC,EAAgBnC,KAAMg1C,GAuCxB,MApCAzyC,GAAayyC,IACX/xC,IAAK,OACLG,MAAO,SAAc8G,GACnBlK,KAAKi1C,SAAW/qC,EAChBlK,KAAKk1C,WAAa,QAGpBjyC,IAAK,OACLG,MAAO,SAAc0E,GACf9H,KAAKk1C,aAAeptC,EACtB9H,KAAKqhC,QAELrhC,KAAKk1C,WAAaptC,GACjB,EAAGlB,EAAAA,YAA0BkB,EAAW9H,KAAKi1C,SAAS52B,IACvD3T,EAAE1K,KAAKi1C,UAAUE,SAAS,YAI9BlyC,IAAK,gBACLG,MAAO,SAAuB5B,EAAMsG,GAC9B9H,KAAKk1C,aAAe1zC,EACtBxB,KAAKqhC,QAELrhC,KAAKk1C,WAAa1zC,GACjB,EAAGoF,EAAAA,YAA0BkB,EAAW9H,KAAKi1C,SAAS52B,IAAI,GAC3D3T,EAAE1K,KAAKi1C,UAAUE,SAAS,YAI9BlyC,IAAK,OACLG,MAAO,WACLsH,EAAE1K,KAAKi1C,UAAUG,YAAY,QAC7Bp1C,KAAKk1C,WAAa,SAIfF,IAGTp2C,GAAAA,WAAkB,GAAIo2C,KAEnBK,2BAA2B,MAAMC,KAAK,SAASh3C,EAAQU,EAAOJ,GACjE,YAiBA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAjBhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ22C,MAAQjyC,MAEhB,IAAIs/B,GAAYtkC,EAAQ,aAEpBukC,EAAa9gC,EAAuB6gC,GAEpC17B,EAAkB5I,EAAQ,4BAE1BsI,EAAmB7E,EAAuBmF,GAM1CquC,EAAQ32C,EAAQ22C,MAAQ,WAC1B,QAASA,KACPpzC,EAAgBnC,KAAMu1C,GA6BxB,MA1BAhzC,GAAagzC,IACXtyC,IAAK,OACLG,MAAO,SAAc8G,GACnB,GAAIlG,GAAQhE,IAEZA,MAAKi1C,SAAW/qC,EAEhBlK,KAAK0F,OAASgF,EAAER,GAAS8nC,OAAQxU,MAAM,IAEvCx9B,KAAK0F,OAAO1E,GAAG,kBAAmB,WAChC6hC,EAAAA,WAAmB2S,uBAAuBxxC,EAAMixC,eAIpDhyC,IAAK,OACLG,MAAO,SAAc0E,IAClB,EAAGlB,EAAAA,YAA0BkB,EAAW9H,KAAKi1C,SAAS52B,IACvDre,KAAK0F,OAAOssC,MAAM,WAGpB/uC,IAAK,OACLG,MAAO,WACLpD,KAAK0F,OAAOssC,MAAM,YAIfuD,IAGT32C,GAAAA,WAAkB,GAAI22C,KAEnBF,2BAA2B,IAAIpS,YAAY,cAAcwS,KAAK,SAASn3C,EAAQU,EAAOJ,GACzF,YAQA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCANhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAKT,IAAIsyC,GAAY92C,EAAQ82C,UAAY,WAClC,QAASA,KACPvzC,EAAgBnC,KAAM01C,GAiCxB,MA9BAnzC,GAAamzC,IACXzyC,IAAK,OACLG,MAAO,SAAcuyC,GACnB31C,KAAK41C,WAAaD,KAGpB1yC,IAAK,MACLG,MAAO,SAAa1C,GACG,gBAAVA,KACTA,GAAUA,MAAOA,GAGnB,IAAIm1C,GAAan1C,EAAMA,KAEvB,IAAIA,EAAMq5B,KAAM,CACd,GAAI+b,GAAYx4B,YAAYC,QAAQ,mBAClCwc,KAAMr5B,EAAMq5B,OACX,EAEH8b,IAAc,KAAOC,EAAY,IAG/Bp1C,EAAMivB,SACRkmB,GAAc,MAAQn1C,EAAMivB,QAG9BlnB,SAAS/H,MAAQm1C,EAAa,MAAQ71C,KAAK41C,eAIxCF,IAGT92C,GAAAA,WAAkB,GAAI82C,QAEhBK,KAAK,SAASz3C,EAAQU,EAAOJ,GACnC,YAQA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCANhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAKT,IAAI4yC,GAAQp3C,EAAQo3C,MAAQ,WAC1B,QAASA,KACP7zC,EAAgBnC,KAAMg2C,GA2CxB,MAxCAzzC,GAAayzC,IACX/yC,IAAK,OACLG,MAAO,SAAc2tC,EAAMvM,GACzBxkC,KAAKgF,MAAQ+rC,EACb/wC,KAAKuG,UAAYi+B,EAEjBxkC,KAAKqL,aAGPpI,IAAK,QACLG,MAAO,SAAe+vC,GACpB,GAAInvC,GAAQhE,KAERi2C,EAAa,QAASA,KACxBjyC,EAAMqH,OAAO8nC,EAAO9a,MAAQ8a,EAE5BnvC,EAAMgB,MAAMF,IAAIquC,EAAO/0B,IAAK+0B,EAAOtyB,MAAQ,MAAMD,KAAK,SAAUC,GAC9DsyB,EAAOtb,OAAOhX,GAEd7c,EAAMqH,OAAO8nC,EAAO9a,MAAM74B,QAAUgF,OAAO/E,WAAWw2C,EAAY9C,EAAO7a,YACxE,SAAUrX;AACPkyB,EAAO3hC,MACT2hC,EAAO3hC,MAAMyP,GAEbjd,EAAMuC,UAAUqlB,SAAS3K,KAK/Bg1B,QAGFhzC,IAAK,OACLG,MAAO,SAAc8yC,GACfl2C,KAAKqL,OAAO6qC,IACd1xC,OAAO5E,aAAaI,KAAKqL,OAAO6qC,GAAQ12C,aAKvCw2C,IAGTp3C,GAAAA,WAAkB,GAAIo3C,QAEhBG,KAAK,SAAS73C,EAAQU,EAAOJ,GACnC,YAWA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAThH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ2K,SAAWjG,MAEnB,IAAIiD,GAAYjI,EAAQ,wBAIpB83C,EAAwB,IACxBC,EAAsB,IAEtB9sC,EAAW3K,EAAQ2K,SAAW,WAChC,QAASA,KACPpH,EAAgBnC,KAAMuJ,GA6ExB,MA1EAhH,GAAagH,IACXtG,IAAK,OACLG,MAAO,SAAc2vB,GACnB/yB,KAAK2F,OAASotB,EACd/yB,KAAKs2C,SAAW,QAGlBrzC,IAAK,QACLG,MAAO,SAAesQ,EAASkK,GAC7B,GAAI5Z,GAAQhE,IAERA,MAAKs2C,UACP9xC,OAAO5E,aAAaI,KAAKs2C,UACzBt2C,KAAK2F,OAAOsG,UAAU,EAAG1F,EAAUioC,iBAEnCxuC,KAAKs2C,SAAW9xC,OAAO/E,WAAW,WAChCuE,EAAMsyC,SAAW,KACjBtyC,EAAMuyC,MAAM7iC,EAASkK,IACpBw4B,KAEHp2C,KAAK2F,OAAOsG,UAAU,EAAG1F,EAAU8nC,cAAc36B,EAASkK,IAC1D5d,KAAKs2C,SAAW9xC,OAAO/E,WAAW,WAChCuE,EAAM2B,OAAOsG,UAAU,EAAG1F,EAAUioC,iBACpCxqC,EAAMsyC,SAAW,MAChBD,OAOPpzC,IAAK,OACLG,MAAO,SAAcsQ,GACnB1T,KAAKu2C,MAAM7iC,EAAS,WAGtBzQ,IAAK,UACLG,MAAO,SAAiBsQ,GACtB1T,KAAKu2C,MAAM7iC,EAAS,cAGtBzQ,IAAK,UACLG,MAAO,SAAiBsQ,GACtB1T,KAAKu2C,MAAM7iC,EAAS,cAGtBzQ,IAAK,QACLG,MAAO,SAAesQ,GACpB1T,KAAKu2C,MAAM7iC,EAAS,YAMtBzQ,IAAK,WACLG,MAAO,SAAkB6d,GACvB,GAAIvN,GAAUuN,EAAUD,MAEnBtN,KAEDA,EADuB,MAArBuN,EAAUC,OACF3D,QAAQ,2BAERA,QAAQ,+BAIG,MAArB0D,EAAUC,QAA8B,sBAAZxN,IAC9BA,EAAU6J,QAAQ,sDAGpBvd,KAAKwR,MAAMkC,OAIRnK,IAGT3K,GAAAA,WAAkB,GAAI2K,KAEnBitC,uBAAuB,MAAMC,KAAK,SAASn4C,EAAQU,EAAOJ,GAC7D,YAWA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCAThH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ83C,aAAepzC,MAEvB,IAAIqzC,GAASr4C,EAAQ,SAIjBo4C,EAAe93C,EAAQ83C,aAAe,WACxC,QAASA,KACPv0C,EAAgBnC,KAAM02C,GAEtB12C,KAAK2F,OAAS,KACd3F,KAAK42C,aACL52C,KAAK62C,iBAkCP,MA/BAt0C,GAAam0C,IACXzzC,IAAK,aACLG,MAAO,SAAoB5B,EAAMs1C,EAASjrC,GACxC7L,KAAK42C,UAAUp1C,GAAQs1C,EACvB92C,KAAK62C,cAAcr1C,GAAQqK,KAG7B5I,IAAK,OACLG,MAAO,WACLpD,KAAK2F,QAAU,EAAGgxC,EAAOI,cAAc,EAAGJ,EAAOK,iBAAiBh3C,KAAK42C,WAAY52C,KAAK62C,kBAG1F5zC,IAAK,WACLG,MAAO,WACL,MAAOpD,MAAK2F,UAMd1C,IAAK,WACLG,MAAO,WACL,MAAOpD,MAAK2F,OAAOysC,cAGrBnvC,IAAK,WACLG,MAAO,SAAkBmS,GACvB,MAAOvV,MAAK2F,OAAOsG,SAASsJ,OAIzBmhC,IAGT93C,GAAAA,WAAkB,GAAI83C,KAEnBO,MAAQ,UAAUC,KAAK,SAAS54C,EAAQU,EAAOJ,GAClD,YAQA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCANhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAOT,IAAI+zC,GAASv4C,EAAQu4C,OAAS,WAC5B,QAASA,KACPh1C,EAAgBnC,KAAMm3C,GAkDxB,MA/CA50C,GAAa40C,IACXl0C,IAAK,OACLG,MAAO,SAAc0vC,GACnB9yC,KAAKsG,SAAWwsC,KAGlB7vC,IAAK,gBACLG,MAAO,SAAuB8wB,EAAUyB,GAEtC,MAAOyhB,QAAOljB,EAAUyB,GAAQG,SAGlC7yB,IAAK,OACLG,MAAO,WACL,MAAsB,mBAAXg0C,SACTp3C,KAAKsG,SAASwsC,QAAQ,uBACf9yC,KAAKq3C,mBAELr3C,KAAKs3C,oBAIhBr0C,IAAK,kBACLG,MAAO,WACL,MAAO,IAAIwsB,SAAQ,SAAUygB,GAC3B,GAAIgB,GAAO,QAASA,KACI,mBAAX+F,QACT5yC,OAAO/E,WAAW,WAChB4xC,KACC,KAEHhB,IAGJgB,UAIJpuC,IAAK,iBACLG,MAAO,WAEL,MAAO,IAAIwsB,SAAQ,SAAUygB,GAC3BA,UAKC8G,IAGTv4C,GAAAA,WAAkB,GAAIu4C,QAEhBI,KAAK,SAASj5C,EAAQU,EAAOJ,GACnC,YAmDA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAjDvFe,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAGTxE,EAAAA,WAAkB,SAAUk5B,EAAK0f,GAY/B,GAXA3U,EAAAA,WAAmBG,OAEnB/lB,EAAAA,WAAgB7I,cACdvN,EAAY4wC,UACV1kB,MAAOztB,EAAAA,WAAgBoyC,YACzBz6B,EAAAA,WAAgB7I,cAAcujC,GAAsBjkC,QAASokB,EAAIpkB,QAC/DoL,QAASgZ,EAAI9Y,YAAc,EAAGxU,EAAAA,YAAkBstB,EAAI9Y,YAAc,QAGtEvW,SAASC,eAAe,eAEG,mBAAhB8uC,IAA+BA,EAAa,CACrD,GAAI7B,GAAY9wC,EAAAA,WAAgBC,IAAI,YAAYkG,UAChDvC,UAAS/H,MAAQ6c,QAAQ,kBAAoB,MAAQo4B,EACrDnxC,OAAOgP,QAAQkC,aAAc,GAAI7Q,EAAAA,WAAgBC,IAAI,gBAIzD,IAAI8F,GAAUtM,EAAQ,UAElBkM,EAAWzI,EAAuB6I,GAElCoS,EAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC4lB,EAAYtkC,EAAQ,aAEpBukC,EAAa9gC,EAAuB6gC,GAEpC/7B,EAAcvI,EAAQ,eAEtBmJ,EAAcnJ,EAAQ,6BAEtBkJ,EAAezF,EAAuB0F,GAEtC1C,EAASzG,EAAQ,YAEjBuG,EAAU9C,EAAuBgD,GAEjCY,EAASrH,EAAQ,qBAEjBgH,EAAUvD,EAAuB4D,GASjCqB,EAAS,SAAgBmK,GAC3B,MAAOA,GAAM6hB,MAIX2kB,GAAsB,EAAG9wC,EAAYC,SAASE,GAAQQ,EAAAA,cAGvDowC,4BAA4B,GAAG9V,WAAW,IAAI+V,oBAAoB,IAAIhtC,OAAS,SAASmT,MAAQ,QAAQilB,YAAY,YAAY37B,cAAc,gBAAgBwwC,KAAK,SAASx5C,EAAQU,EAAOJ,GAC9L,YAEAmE,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAGTxE,EAAAA,WAAkB,SAAUgsC,EAAMmN,GAChC,GAAIC,GAAU13C,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,IAAmB,EAAQA,UAAU,GAElF07B,KACAnY,IAWJ,IATA+mB,EAAKzmC,QAAQ,SAAU+F,GACrB2Z,EAAItjB,KAAK2J,GACL2Z,EAAI/kB,SAAWi5C,IACjB/b,EAAKz7B,KAAKsjB,GACVA,QAKAm0B,KAAY,GAASn0B,EAAI/kB,OAAS,GAAK+kB,EAAI/kB,OAASi5C,EACtD,IAAK,GAAIx5C,GAAIslB,EAAI/kB,OAAYi5C,EAAJx5C,EAAcA,IACrCslB,EAAItjB,KAAKy3C,EAQb,OAJIn0B,GAAI/kB,QACNk9B,EAAKz7B,KAAKsjB,GAGLmY,QAGHic,KAAK,SAAS35C,EAAQU,EAAOJ,GACnC,YAEAmE,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAGTxE,EAAAA,WAAkB,SAAUs5C,GAC1B,MAAIA,GAAQ,IACHxgC,KAAKg6B,MAAc,IAARwG,EAAc,KAAwB,IAAM,MACrDA,EAAQ,IACVxgC,KAAKg6B,MAAc,IAARwG,EAAc,KAAiB,IAAM,MAC9CA,EAAQ,IACVxgC,KAAKg6B,MAAc,IAARwG,EAAc,KAAQ,IAAM,MAEvCxgC,KAAKg6B,MAAc,IAARwG,GAAe,IAAM,WAIrCC,KAAK,SAAS75C,EAAQU,EAAOJ,GACnC,YAgDA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GA9CvFe,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAGTxE,EAAAA,WAAkB,SAAUmf,EAAWq6B,GACrC,GAAIC,GAAY/3C,UAAUxB,QAAU,GAAsBwE,SAAjBhD,UAAU,IAAmB,EAAOA,UAAU,GAEnFg4C,EAAc7vC,SAASC,eAAe0vC,GAGtCG,EAAiBx6B,EAAUrb,MAAQqb,EAAYd,EAAAA,WAAgB7I,cAAc2J,EAAW,KAGxFu6B,KACED,EACFxV,EAAAA,WAAmBG,OAEnB/lB,EAAAA,WAAgB7I,cACdvN,EAAY4wC,UACV1kB,MAAOztB,EAAAA,WAAgBoyC,YACzBa,GAGFD,GAGAzV,EAAAA,WAAmBG,OAAOuV,EAAgBD,IAMhD,IAAIt7B,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC4lB,EAAYtkC,EAAQ,aAEpBukC,EAAa9gC,EAAuB6gC,GAEpC/7B,EAAcvI,EAAQ,eAEtBqH,EAASrH,EAAQ,qBAEjBgH,EAAUvD,EAAuB4D,KAIlCkyC,oBAAoB,IAAI75B,MAAQ,QAAQilB,YAAY,YAAY37B,cAAc,gBAAgBkxC,KAAK,SAASl6C,EAAQU,EAAOJ,GAC9H,YAQA,SAASuD,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCANhH,GAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAInE,GAAI,EAAGA,EAAImE,EAAM5D,OAAQP,IAAK,CAAE,GAAIoE,GAAaD,EAAMnE,EAAIoE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeP,EAAQE,EAAWM,IAAKN,IAAiB,MAAO,UAAUN,EAAaa,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBH,EAAY7B,UAAW0C,GAAiBC,GAAaX,EAAiBH,EAAac,GAAqBd,KAEhiBU,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,GAKT,IAAIq1C,GAAc,WAChB,QAASA,GAAY1J,GACnB5sC,EAAgBnC,KAAMy4C,GAEtBz4C,KAAK04C,WAAY,EACjB14C,KAAK24C,OAAS5J,MAyHhB,MAtHAxsC,GAAak2C,IACXx1C,IAAK,MACLG,MAAO,SAAaH,EAAKW,EAAMg1C,GAC7B54C,KAAK24C,OAAOp4C,MACV0C,IAAKA,EACLW,KAAMA,EAENC,MAAO+0C,EAAQA,EAAM/0C,OAAS,KAAO,KACrCC,OAAQ80C,EAAQA,EAAM90C,QAAU,KAAO,UAI3Cb,IAAK,MACLG,MAAO,SAAaH,EAAKG,GACvB,IAAK,GAAI7E,GAAI,EAAGA,EAAIyB,KAAK24C,OAAO75C,OAAQP,IACtC,GAAIyB,KAAK24C,OAAOp6C,GAAG0E,MAAQA,EACzB,MAAOjD,MAAK24C,OAAOp6C,GAAGqF,IAI1B,OAAOR,MAGTH,IAAK,MACLG,MAAO,SAAaH,GAClB,MAAyBK,UAAlBtD,KAAK8E,IAAI7B,MAGlBA,IAAK,SACLG,MAAO,QAASy1C,KAEd,IAAK,GADDA,MACKt6C,EAAI,EAAGA,EAAIyB,KAAK24C,OAAO75C,OAAQP,IACtCs6C,EAAOt4C,KAAKP,KAAK24C,OAAOp6C,GAAGqF,KAE7B,OAAOi1C,MAGT51C,IAAK,QACLG,MAAO,SAAe01C,GAMpB,MALK94C,MAAK04C,YACR14C,KAAK24C,OAAS34C,KAAK+4C,OAAO/4C,KAAK24C,QAC/B34C,KAAK04C,WAAY,GAGfI,GAAsC,mBAAhBA,GACjB94C,KAAK64C,SAEL74C,KAAK24C,UAIhB11C,IAAK,gBACLG,MAAO,WACL,MAAOpD,MAAK44C,OAAM,MAGpB31C,IAAK,SACLG,MAAO,SAAgB41C,GAgCrB,QAASC,GAAWr1C,GAClB,GAAIs1C,GAAW,EACoB,MAA/BC,EAASnlC,QAAQpQ,EAAKX,OACpBW,EAAKC,OACPq1C,EAAWC,EAASnlC,QAAQpQ,EAAKC,OAChB,KAAbq1C,IACFA,GAAY,IAELt1C,EAAKE,SACdo1C,EAAWC,EAASnlC,QAAQpQ,EAAKE,SAGlB,KAAbo1C,IACFE,EAAQC,OAAOH,EAAU,EAAGt1C,GAC5Bu1C,EAASE,OAAOH,EAAU,EAAGt1C,EAAKX,OA5CxC,GAAI2V,KACJogC,GAAU70C,QAAQ,SAAUP,GAC1BgV,EAAMrY,KAAKqD,EAAKX,MAIlB,IAAIm2C,MACAD,IAIJH,GAAU70C,QAAQ,SAAUP,GACrBA,EAAKC,OAAUD,EAAKE,SACvBs1C,EAAQ74C,KAAKqD,GACbu1C,EAAS54C,KAAKqD,EAAKX,QAMvB+1C,EAAU70C,QAAQ,SAAUP,GACN,SAAhBA,EAAKE,SACPs1C,EAAQ74C,KAAKqD,GACbu1C,EAAS54C,KAAKqD,EAAKX,OA2BvB,KADA,GAAIq2C,GAAa,IACVA,EAAa,GAAK1gC,EAAM9Z,SAAWq6C,EAASr6C,QACjDw6C,GAAc,EACdN,EAAU70C,QAAQ80C,EAGpB,OAAOG,OAIJX,IAGT75C,GAAAA,WAAkB65C,OAEZc,KAAK,SAASj7C,EAAQU,EAAOJ,GACnC,YAOA,SAAS46C,GAAIC,EAAKC,GAChB,MAAOhiC,MAAKy3B,MAAMz3B,KAAKC,UAAY+hC,EAAMD,EAAM,IAAMA,EAGvD,QAAS3R,GAAM2R,EAAKC,GAElB,IAAK,GADD35C,GAAQ,GAAIM,OAAMm5C,EAAIC,EAAKC,IACtBn7C,EAAI,EAAGA,EAAIwB,EAAMjB,OAAQP,IAChCwB,EAAMxB,GAAKA,CAGb,OAAOwB,GAfTgD,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAAA,OAAc46C,EACd56C,EAAQkpC,MAAQA,OAcV6R,KAAK,SAASr7C,EAAQU,EAAOJ,GACnC,YAEAmE,QAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAGTxE,EAAAA,WAAkB,WAChB4F,OAAOo1C,SAAS,EAAG,SAGfC,KAAK,SAASv7C,EAAQU,EAAOJ,GACnC,YA8CA,SAASmD,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GA5CvFe,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAGTxE,EAAAA,WAAkB,SAAUuX,GAC1B,GAAI2jC,IACFhyC,UAAWqO,EAAQrO,UACnBiyC,cACE9mC,KAAMkD,EAAQtO,KACdmyC,QAAS,SAAiBC,EAAWplC,GACnCA,EAAa,KAAMsB,EAAQnO,MAAM,GAAGiL,SAErC5T,OAAO8W,EAAQnO,MAAM4b,IAAI,SAAU3Q,GACpC,MAAOA,MAIX4vB,GAAAA,WAAmBG,OAAO/lB,EAAAA,WAAgB7I,cACxCvN,EAAY4wC,UACV1kB,MAAOztB,EAAAA,WAAgBoyC,YACzBz6B,EAAAA,WAAgB7I,cAAcge,EAAa8nB,QAAUJ,OAAQA,EAAQtmC,QAASA,KAC7E8kC,GAGL,IAAIt7B,GAAS1e,EAAQ,SAEjB2e,EAAUlb,EAAuBib,GAEjC4lB,EAAYtkC,EAAQ,aAEpBukC,EAAa9gC,EAAuB6gC,GAEpC/7B,EAAcvI,EAAQ,eAEtB8zB,EAAe9zB,EAAQ,gBAEvB67C,EAAwB77C,EAAQ,oCAEhC87C,EAAyBr4C,EAAuBo4C,GAEhDx0C,EAASrH,EAAQ,qBAEjBgH,EAAUvD,EAAuB4D,GAMjC2yC,EAAc7vC,SAASC,eAAe,cACtC8K,EAAU,GAAI4mC,GAAAA,aAEfvC,oBAAoB,IAAIwC,mCAAmC,GAAGr8B,MAAQ,QAAQilB,YAAY,YAAY37B,cAAc,cAAcurB,eAAe,iBAAiBynB,KAAK,SAASh8C,EAAQU,EAAOJ,GAClM,YAgBA,SAAS4rB,KACP,MAAO,UAAUpnB,GACf,MAA6B,KAAzBsH,EAAE4jB,KAAKlrB,GAAOtE,OACTye,QAAQ,2BADjB,QAMJ,QAAS4W,GAAMzgB,GACb,MAAO,UAAUtQ,GACf,MAAKm3C,GAAMC,KAAKp3C,GAAhB,OACSsQ,GAAW6J,QAAQ,iCAKhC,QAASk9B,GAAUC,EAAYhnC,GAC7B,MAAO,UAAUtQ,GACf,GAAIu3C,GAAgB,GAChB77C,EAAS4L,EAAE4jB,KAAKlrB,GAAOtE,MAE3B,OAAa47C,GAAT57C,GAEA67C,EADEjnC,EACcA,EAAQgnC,EAAY57C,GAEpBqvB,SAAS,oFAAqF,qFAAsFusB,GAE/Lp9B,YAAYq9B,GACjBC,YAAaF,EACbG,WAAY/7C,IACX,IATL,QAcJ,QAASg8C,GAAUJ,EAAYhnC,GAC7B,MAAO,UAAUtQ,GACf,GAAIu3C,GAAgB,GAChB77C,EAAS4L,EAAE4jB,KAAKlrB,GAAOtE,MAE3B,OAAIA,GAAS47C,GAETC,EADEjnC,EACcA,EAAQgnC,EAAY57C,GAEpBqvB,SAAS,mFAAoF,oFAAqFusB,GAE7Lp9B,YAAYq9B,GACjBC,YAAaF,EACbG,WAAY/7C,IACX,IATL,QAcJ,QAAS6uB,GAAkBotB,GACzB,GAAIrnC,GAAU,SAAiBgnC,GAC7B,MAAOvsB,UAAS,4DAA6D,6DAA8DusB,GAE7I,OAAO16C,MAAKy6C,UAAUM,EAASntB,oBAAqBla,GAGtD,QAASoa,GAAkBitB,GACzB,GAAIrnC,GAAU,SAAiBgnC,GAC7B,MAAOvsB,UAAS,4DAA6D,6DAA8DusB,GAE7I,OAAO16C,MAAK86C,UAAUC,EAAShtB,oBAAqBra,GAGtD,QAASga,KACP,MAAO,UAAUtqB,GACf,MAAK43C,GAASR,KAAK9vC,EAAE4jB,KAAKlrB,IAA1B,OACSma,QAAQ,iEAKrB,QAASmX,GAAkBqmB,GACzB,GAAIrnC,GAAU,SAAiBgnC,GAC7B,MAAOvsB,UAAS,kEAAmE,mEAAoEusB,GAEzJ,OAAO16C,MAAKy6C,UAAUM,EAASE,oBAAqBvnC,GA9FtD3Q,OAAOC,eAAepE,EAAS,cAC7BwE,OAAO,IAETxE,EAAQ4rB,SAAWA,EACnB5rB,EAAQu1B,MAAQA,EAChBv1B,EAAQ67C,UAAYA,EACpB77C,EAAQk8C,UAAYA,EACpBl8C,EAAQ+uB,kBAAoBA,EAC5B/uB,EAAQkvB,kBAAoBA,EAC5BlvB,EAAQ8uB,gBAAkBA,EAC1B9uB,EAAQ81B,kBAAoBA,CAC5B,IAAI6lB,GAAQ,uHACRS,EAAW,GAAI7K,QAAO,cAAe,eAqF9B,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG","file":"misago.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = setTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        setTimeout(drainQueue, 0);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],2:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Misago = undefined;\n\nvar _orderedList = require('../../../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[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    key: 'pop',\n    value: function pop(key) {\n      if (this.has(key)) {\n        var value = this._context[key];\n        this._context[key] = null;\n        return value;\n      } else {\n        return 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},{\"../../../misago/frontend/src/utils/ordered-list\":144}],3:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/ajax\":128}],4:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../../../../misago/frontend/src/services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _modal = require('../../../../misago/frontend/src/services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _store = require('../../../../misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _localStorage = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/auth\":129,\"../../../../misago/frontend/src/services/local-storage\":132,\"../../../../misago/frontend/src/services/modal\":134,\"../../../../misago/frontend/src/services/store\":138}],5:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../misago/frontend/src/services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _captcha = require('../../../../misago/frontend/src/services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _include = require('../../../../misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _snackbar = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/ajax\":128,\"../../../../misago/frontend/src/services/captcha\":130,\"../../../../misago/frontend/src/services/include\":131,\"../../../../misago/frontend/src/services/snackbar\":137}],6:[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('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _authMessage = require('../../../../../misago/frontend/src/components/auth-message');\n\nvar _authMessage2 = _interopRequireDefault(_authMessage);\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/auth-message\":52,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/mount-component\":143,\"react-redux\":\"react-redux\"}],7:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bannedPage = require('../../../../../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.has('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},{\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/banned-page\":140}],8:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _root = require('../../../../../misago/frontend/src/components/options/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');\n\nvar _routedComponent2 = _interopRequireDefault(_routedComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.has('USER_OPTIONS')) {\n    (0, _routedComponent2.default)({\n      root: _index2.default.get('USERCP_URL'),\n      component: _root2.default,\n      paths: (0, _root.paths)()\n    });\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:options',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/components/options/root\":73,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/routed-component\":147}],9:[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 _root = require('../../../../../misago/frontend/src/components/profile/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');\n\nvar _routedComponent2 = _interopRequireDefault(_routedComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.has('PROFILE') && context.has('PROFILE_PAGES')) {\n    (0, _routedComponent2.default)({\n      root: _index2.default.get('PROFILE').absolute_url,\n      component: (0, _reactRedux.connect)(_root.select)(_root2.default),\n      paths: (0, _root.paths)()\n    });\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:profile',\n  initializer: initializer,\n  after: 'reducer:profile-dehydrate'\n});\n\n},{\"../../../../../misago/frontend/src/components/profile/root\":90,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/routed-component\":147,\"react-redux\":\"react-redux\"}],10:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestActivationLink = require('../../../../../misago/frontend/src/components/request-activation-link');\n\nvar _requestActivationLink2 = _interopRequireDefault(_requestActivationLink);\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/request-activation-link\":94,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/mount-component\":143}],11:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestPasswordReset = require('../../../../../misago/frontend/src/components/request-password-reset');\n\nvar _requestPasswordReset2 = _interopRequireDefault(_requestPasswordReset);\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/request-password-reset\":95,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/mount-component\":143}],12:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _resetPasswordForm = require('../../../../../misago/frontend/src/components/reset-password-form');\n\nvar _resetPasswordForm2 = _interopRequireDefault(_resetPasswordForm);\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/reset-password-form\":96,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/mount-component\":143}],13:[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('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../misago/frontend/src/components/snackbar');\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/snackbar\":100,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/mount-component\":143,\"react-redux\":\"react-redux\"}],14:[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('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _root = require('../../../../../misago/frontend/src/components/user-menu/root');\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/user-menu/root\":102,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/mount-component\":143,\"react-redux\":\"react-redux\"}],15:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _root = require('../../../../../misago/frontend/src/components/users/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');\n\nvar _routedComponent2 = _interopRequireDefault(_routedComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.has('USERS_LISTS')) {\n    (0, _routedComponent2.default)({\n      root: _index2.default.get('USERS_LIST_URL'),\n      component: _root2.default,\n      paths: (0, _root.paths)()\n    });\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:users',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/components/users/root\":119,\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/utils/routed-component\":147}],16:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/include\":131}],17:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _localStorage = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/local-storage\":132}],18:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/mobile-navbar-dropdown\":133}],19:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _modal = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/modal\":134}],20:[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('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"moment\":\"moment\"}],21:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _pageTitle = require('../../../../misago/frontend/src/services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  _pageTitle2.default.init(context.get('SETTINGS').forum_name);\n}\n\n_index2.default.addInitializer({\n  name: 'page-title',\n  initializer: initializer\n});\n\n},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/page-title\":135}],22:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../misago/frontend/src/services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../../../misago/frontend/src/services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _polls = require('../../../../misago/frontend/src/services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _polls2.default.init(_ajax2.default, _snackbar2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'polls',\n  initializer: initializer\n});\n\n},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/ajax\":128,\"../../../../misago/frontend/src/services/polls\":136,\"../../../../misago/frontend/src/services/snackbar\":137}],23:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../../../../../misago/frontend/src/reducers/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _store = require('../../../../../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},{\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/reducers/auth\":122,\"../../../../../misago/frontend/src/services/store\":138}],24:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _profile = require('../../../../../misago/frontend/src/reducers/profile');\n\nvar _store = require('../../../../../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  if (_index2.default.has('PROFILE')) {\n    _store2.default.dispatch((0, _profile.dehydrate)(_index2.default.get('PROFILE')));\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:profile-dehydrate',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/reducers/profile\":123,\"../../../../../misago/frontend/src/services/store\":138}],25:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _profile = require('../../../../../misago/frontend/src/reducers/profile');\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nvar _store = require('../../../../../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('profile', _profile2.default, {});\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:profile',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/reducers/profile\":123,\"../../../../../misago/frontend/src/services/store\":138}],26:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../misago/frontend/src/reducers/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../../../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},{\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/reducers/snackbar\":124,\"../../../../../misago/frontend/src/services/store\":138}],27:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../../../../../misago/frontend/src/reducers/tick');\n\nvar _tick2 = _interopRequireDefault(_tick);\n\nvar _store = require('../../../../../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},{\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/reducers/tick\":125,\"../../../../../misago/frontend/src/services/store\":138}],28:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory = require('../../../../../misago/frontend/src/reducers/username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _store = require('../../../../../misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.addReducer('username-history', _usernameHistory2.default, []);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:username-history',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/reducers/username-history\":126,\"../../../../../misago/frontend/src/services/store\":138}],29:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _users = require('../../../../../misago/frontend/src/reducers/users');\n\nvar _users2 = _interopRequireDefault(_users);\n\nvar _store = require('../../../../../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('users', _users2.default, []);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:users',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/index\":121,\"../../../../../misago/frontend/src/reducers/users\":127,\"../../../../../misago/frontend/src/services/store\":138}],30:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../misago/frontend/src/services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/snackbar\":137,\"../../../../misago/frontend/src/services/store\":138}],31:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _store = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/store\":138}],32:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../../../../misago/frontend/src/reducers/tick');\n\nvar _store = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/reducers/tick\":125,\"../../../../misago/frontend/src/services/store\":138}],33:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../../../../misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _zxcvbn = require('../../../../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},{\"../../../../misago/frontend/src/index\":121,\"../../../../misago/frontend/src/services/include\":131,\"../../../../misago/frontend/src/services/zxcvbn\":139}],34:[function(require,module,exports){\nvar pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n},{\"./lib/is_arguments.js\":35,\"./lib/keys.js\":36}],35:[function(require,module,exports){\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n},{}],36:[function(require,module,exports){\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n},{}],37:[function(require,module,exports){\n/**\n * Indicates that navigation was caused by a call to history.push.\n */\n'use strict';\n\nexports.__esModule = true;\nvar PUSH = 'PUSH';\n\nexports.PUSH = PUSH;\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = 'REPLACE';\n\nexports.REPLACE = REPLACE;\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = 'POP';\n\nexports.POP = POP;\nexports['default'] = {\n  PUSH: PUSH,\n  REPLACE: REPLACE,\n  POP: POP\n};\n},{}],38:[function(require,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nexports.loopAsync = loopAsync;\n\nfunction loopAsync(turns, work, callback) {\n  var currentTurn = 0;\n  var isDone = false;\n\n  function done() {\n    isDone = true;\n    callback.apply(this, arguments);\n  }\n\n  function next() {\n    if (isDone) return;\n\n    if (currentTurn < turns) {\n      work.call(this, currentTurn++, next, done);\n    } else {\n      done.apply(this, arguments);\n    }\n  }\n\n  next();\n}\n},{}],39:[function(require,module,exports){\n(function (process){\n/*eslint-disable no-empty */\n'use strict';\n\nexports.__esModule = true;\nexports.saveState = saveState;\nexports.readState = readState;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar KeyPrefix = '@@History/';\nvar QuotaExceededError = 'QuotaExceededError';\nvar SecurityError = 'SecurityError';\n\nfunction createKey(key) {\n  return KeyPrefix + key;\n}\n\nfunction saveState(key, state) {\n  try {\n    window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;\n\n      return;\n    }\n\n    if (error.name === QuotaExceededError && window.sessionStorage.length === 0) {\n      // Safari \"private mode\" throws QuotaExceededError.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;\n\n      return;\n    }\n\n    throw error;\n  }\n}\n\nfunction readState(key) {\n  var json = undefined;\n  try {\n    json = window.sessionStorage.getItem(createKey(key));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;\n\n      return null;\n    }\n  }\n\n  if (json) {\n    try {\n      return JSON.parse(json);\n    } catch (error) {\n      // Ignore invalid JSON.\n    }\n  }\n\n  return null;\n}\n}).call(this,require('_process'))\n},{\"_process\":1,\"warning\":51}],40:[function(require,module,exports){\n'use strict';\n\nexports.__esModule = true;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getHashPath = getHashPath;\nexports.replaceHashPath = replaceHashPath;\nexports.getWindowPath = getWindowPath;\nexports.go = go;\nexports.getUserConfirmation = getUserConfirmation;\nexports.supportsHistory = supportsHistory;\nexports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;\n\nfunction addEventListener(node, event, listener) {\n  if (node.addEventListener) {\n    node.addEventListener(event, listener, false);\n  } else {\n    node.attachEvent('on' + event, listener);\n  }\n}\n\nfunction removeEventListener(node, event, listener) {\n  if (node.removeEventListener) {\n    node.removeEventListener(event, listener, false);\n  } else {\n    node.detachEvent('on' + event, listener);\n  }\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  return window.location.href.split('#')[1] || '';\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(window.location.pathname + window.location.search + '#' + path);\n}\n\nfunction getWindowPath() {\n  return window.location.pathname + window.location.search + window.location.hash;\n}\n\nfunction go(n) {\n  if (n) window.history.go(n);\n}\n\nfunction getUserConfirmation(message, callback) {\n  callback(window.confirm(message));\n}\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n    return false;\n  }\n  // FIXME: Work around our browser history not working correctly on Chrome\n  // iOS: https://github.com/rackt/react-router/issues/2565\n  if (ua.indexOf('CriOS') !== -1) {\n    return false;\n  }\n  return window.history && 'pushState' in window.history;\n}\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  var ua = navigator.userAgent;\n  return ua.indexOf('Firefox') === -1;\n}\n},{}],41:[function(require,module,exports){\n'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexports.canUseDOM = canUseDOM;\n},{}],42:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _createDOMHistory = require('./createDOMHistory');\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve URLs.\n */\nfunction createBrowserHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Browser history needs a DOM') : _invariant2['default'](false) : undefined;\n\n  var forceRefresh = options.forceRefresh;\n\n  var isSupported = _DOMUtils.supportsHistory();\n  var useRefresh = !isSupported || forceRefresh;\n\n  function getCurrentLocation(historyState) {\n    historyState = historyState || window.history.state || {};\n\n    var path = _DOMUtils.getWindowPath();\n    var _historyState = historyState;\n    var key = _historyState.key;\n\n    var state = undefined;\n    if (key) {\n      state = _DOMStateStorage.readState(key);\n    } else {\n      state = null;\n      key = history.createKey();\n\n      if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null, path);\n    }\n\n    var location = _parsePath2['default'](path);\n\n    return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n  }\n\n  function startPopStateListener(_ref) {\n    var transitionTo = _ref.transitionTo;\n\n    function popStateListener(event) {\n      if (event.state === undefined) return; // Ignore extraneous popstate events in WebKit.\n\n      transitionTo(getCurrentLocation(event.state));\n    }\n\n    _DOMUtils.addEventListener(window, 'popstate', popStateListener);\n\n    return function () {\n      _DOMUtils.removeEventListener(window, 'popstate', popStateListener);\n    };\n  }\n\n  function finishTransition(location) {\n    var basename = location.basename;\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n    var state = location.state;\n    var action = location.action;\n    var key = location.key;\n\n    if (action === _Actions.POP) return; // Nothing to do.\n\n    _DOMStateStorage.saveState(key, state);\n\n    var path = (basename || '') + pathname + search + hash;\n    var historyState = {\n      key: key\n    };\n\n    if (action === _Actions.PUSH) {\n      if (useRefresh) {\n        window.location.href = path;\n        return false; // Prevent location update.\n      } else {\n          window.history.pushState(historyState, null, path);\n        }\n    } else {\n      // REPLACE\n      if (useRefresh) {\n        window.location.replace(path);\n        return false; // Prevent location update.\n      } else {\n          window.history.replaceState(historyState, null, path);\n        }\n    }\n  }\n\n  var history = _createDOMHistory2['default'](_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    finishTransition: finishTransition,\n    saveState: _DOMStateStorage.saveState\n  }));\n\n  var listenerCount = 0,\n      stopPopStateListener = undefined;\n\n  function listenBefore(listener) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    var unlisten = history.listenBefore(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopPopStateListener();\n    };\n  }\n\n  function listen(listener) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    var unlisten = history.listen(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopPopStateListener();\n    };\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    history.registerTransitionHook(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    history.unregisterTransitionHook(hook);\n\n    if (--listenerCount === 0) stopPopStateListener();\n  }\n\n  return _extends({}, history, {\n    listenBefore: listenBefore,\n    listen: listen,\n    registerTransitionHook: registerTransitionHook,\n    unregisterTransitionHook: unregisterTransitionHook\n  });\n}\n\nexports['default'] = createBrowserHistory;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./Actions\":37,\"./DOMStateStorage\":39,\"./DOMUtils\":40,\"./ExecutionEnvironment\":41,\"./createDOMHistory\":43,\"./parsePath\":48,\"_process\":1,\"invariant\":50}],43:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createDOMHistory(options) {\n  var history = _createHistory2['default'](_extends({\n    getUserConfirmation: _DOMUtils.getUserConfirmation\n  }, options, {\n    go: _DOMUtils.go\n  }));\n\n  function listen(listener) {\n    !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;\n\n    return history.listen(listener);\n  }\n\n  return _extends({}, history, {\n    listen: listen\n  });\n}\n\nexports['default'] = createDOMHistory;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./DOMUtils\":40,\"./ExecutionEnvironment\":41,\"./createHistory\":44,\"_process\":1,\"invariant\":50}],44:[function(require,module,exports){\n//import warning from 'warning'\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _deepEqual = require('deep-equal');\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _Actions = require('./Actions');\n\nvar _createLocation2 = require('./createLocation');\n\nvar _createLocation3 = _interopRequireDefault(_createLocation2);\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction createRandomKey(length) {\n  return Math.random().toString(36).substr(2, length);\n}\n\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search &&\n  //a.action === b.action && // Different action !== location change.\n  a.key === b.key && _deepEqual2['default'](a.state, b.state);\n}\n\nvar DefaultKeyLength = 6;\n\nfunction createHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n  var getCurrentLocation = options.getCurrentLocation;\n  var finishTransition = options.finishTransition;\n  var saveState = options.saveState;\n  var go = options.go;\n  var keyLength = options.keyLength;\n  var getUserConfirmation = options.getUserConfirmation;\n\n  if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;\n\n  var transitionHooks = [];\n\n  function listenBefore(hook) {\n    transitionHooks.push(hook);\n\n    return function () {\n      transitionHooks = transitionHooks.filter(function (item) {\n        return item !== hook;\n      });\n    };\n  }\n\n  var allKeys = [];\n  var changeListeners = [];\n  var location = undefined;\n\n  function getCurrent() {\n    if (pendingLocation && pendingLocation.action === _Actions.POP) {\n      return allKeys.indexOf(pendingLocation.key);\n    } else if (location) {\n      return allKeys.indexOf(location.key);\n    } else {\n      return -1;\n    }\n  }\n\n  function updateLocation(newLocation) {\n    var current = getCurrent();\n\n    location = newLocation;\n\n    if (location.action === _Actions.PUSH) {\n      allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);\n    } else if (location.action === _Actions.REPLACE) {\n      allKeys[current] = location.key;\n    }\n\n    changeListeners.forEach(function (listener) {\n      listener(location);\n    });\n  }\n\n  function listen(listener) {\n    changeListeners.push(listener);\n\n    if (location) {\n      listener(location);\n    } else {\n      var _location = getCurrentLocation();\n      allKeys = [_location.key];\n      updateLocation(_location);\n    }\n\n    return function () {\n      changeListeners = changeListeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function confirmTransitionTo(location, callback) {\n    _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {\n      _runTransitionHook2['default'](transitionHooks[index], location, function (result) {\n        if (result != null) {\n          done(result);\n        } else {\n          next();\n        }\n      });\n    }, function (message) {\n      if (getUserConfirmation && typeof message === 'string') {\n        getUserConfirmation(message, function (ok) {\n          callback(ok !== false);\n        });\n      } else {\n        callback(message !== false);\n      }\n    });\n  }\n\n  var pendingLocation = undefined;\n\n  function transitionTo(nextLocation) {\n    if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.\n\n    pendingLocation = nextLocation;\n\n    confirmTransitionTo(nextLocation, function (ok) {\n      if (pendingLocation !== nextLocation) return; // Transition was interrupted.\n\n      if (ok) {\n        // treat PUSH to current path like REPLACE to be consistent with browsers\n        if (nextLocation.action === _Actions.PUSH) {\n          var prevPath = createPath(location);\n          var nextPath = createPath(nextLocation);\n\n          if (nextPath === prevPath) nextLocation.action = _Actions.REPLACE;\n        }\n\n        if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);\n      } else if (location && nextLocation.action === _Actions.POP) {\n        var prevIndex = allKeys.indexOf(location.key);\n        var nextIndex = allKeys.indexOf(nextLocation.key);\n\n        if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.\n      }\n    });\n  }\n\n  function push(location) {\n    transitionTo(createLocation(location, _Actions.PUSH, createKey()));\n  }\n\n  function replace(location) {\n    transitionTo(createLocation(location, _Actions.REPLACE, createKey()));\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function createKey() {\n    return createRandomKey(keyLength);\n  }\n\n  function createPath(location) {\n    if (location == null || typeof location === 'string') return location;\n\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n\n    var result = pathname;\n\n    if (search) result += search;\n\n    if (hash) result += hash;\n\n    return result;\n  }\n\n  function createHref(location) {\n    return createPath(location);\n  }\n\n  function createLocation(location, action) {\n    var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n\n    if (typeof action === 'object') {\n      //warning(\n      //  false,\n      //  'The state (2nd) argument to history.createLocation is deprecated; use a ' +\n      //  'location descriptor instead'\n      //)\n\n      if (typeof location === 'string') location = _parsePath2['default'](location);\n\n      location = _extends({}, location, { state: action });\n\n      action = key;\n      key = arguments[3] || createKey();\n    }\n\n    return _createLocation3['default'](location, action, key);\n  }\n\n  // deprecated\n  function setState(state) {\n    if (location) {\n      updateLocationState(location, state);\n      updateLocation(location);\n    } else {\n      updateLocationState(getCurrentLocation(), state);\n    }\n  }\n\n  function updateLocationState(location, state) {\n    location.state = _extends({}, location.state, state);\n    saveState(location.key, location.state);\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    transitionHooks = transitionHooks.filter(function (item) {\n      return item !== hook;\n    });\n  }\n\n  // deprecated\n  function pushState(state, path) {\n    if (typeof path === 'string') path = _parsePath2['default'](path);\n\n    push(_extends({ state: state }, path));\n  }\n\n  // deprecated\n  function replaceState(state, path) {\n    if (typeof path === 'string') path = _parsePath2['default'](path);\n\n    replace(_extends({ state: state }, path));\n  }\n\n  return {\n    listenBefore: listenBefore,\n    listen: listen,\n    transitionTo: transitionTo,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    createKey: createKey,\n    createPath: createPath,\n    createHref: createHref,\n    createLocation: createLocation,\n\n    setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),\n    registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),\n    unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),\n    pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n    replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n  };\n}\n\nexports['default'] = createHistory;\nmodule.exports = exports['default'];\n},{\"./Actions\":37,\"./AsyncUtils\":38,\"./createLocation\":45,\"./deprecate\":46,\"./parsePath\":48,\"./runTransitionHook\":49,\"deep-equal\":34}],45:[function(require,module,exports){\n//import warning from 'warning'\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _Actions = require('./Actions');\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nfunction createLocation() {\n  var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n  var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n  var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];\n\n  if (typeof location === 'string') location = _parsePath2['default'](location);\n\n  if (typeof action === 'object') {\n    //warning(\n    //  false,\n    //  'The state (2nd) argument to createLocation is deprecated; use a ' +\n    //  'location descriptor instead'\n    //)\n\n    location = _extends({}, location, { state: action });\n\n    action = key || _Actions.POP;\n    key = _fourthArg;\n  }\n\n  var pathname = location.pathname || '/';\n  var search = location.search || '';\n  var hash = location.hash || '';\n  var state = location.state || null;\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash,\n    state: state,\n    action: action,\n    key: key\n  };\n}\n\nexports['default'] = createLocation;\nmodule.exports = exports['default'];\n},{\"./Actions\":37,\"./parsePath\":48}],46:[function(require,module,exports){\n//import warning from 'warning'\n\n\"use strict\";\n\nexports.__esModule = true;\nfunction deprecate(fn) {\n  return fn;\n  //return function () {\n  //  warning(false, '[history] ' + message)\n  //  return fn.apply(this, arguments)\n  //}\n}\n\nexports[\"default\"] = deprecate;\nmodule.exports = exports[\"default\"];\n},{}],47:[function(require,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nfunction extractPath(string) {\n  var match = string.match(/^https?:\\/\\/[^\\/]*/);\n\n  if (match == null) return string;\n\n  return string.substring(match[0].length);\n}\n\nexports[\"default\"] = extractPath;\nmodule.exports = exports[\"default\"];\n},{}],48:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _extractPath = require('./extractPath');\n\nvar _extractPath2 = _interopRequireDefault(_extractPath);\n\nfunction parsePath(path) {\n  var pathname = _extractPath2['default'](path);\n  var search = '';\n  var hash = '';\n\n  process.env.NODE_ENV !== 'production' ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like \"%s\"', path) : undefined;\n\n  var hashIndex = pathname.indexOf('#');\n  if (hashIndex !== -1) {\n    hash = pathname.substring(hashIndex);\n    pathname = pathname.substring(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n  if (searchIndex !== -1) {\n    search = pathname.substring(searchIndex);\n    pathname = pathname.substring(0, searchIndex);\n  }\n\n  if (pathname === '') pathname = '/';\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash\n  };\n}\n\nexports['default'] = parsePath;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./extractPath\":47,\"_process\":1,\"warning\":51}],49:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction runTransitionHook(hook, location, callback) {\n  var result = hook(location, callback);\n\n  if (hook.length < 2) {\n    // Assume the hook runs synchronously and automatically\n    // call the callback with the return value.\n    callback(result);\n  } else {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](result === undefined, 'You should not \"return\" in a transition hook with a callback argument; call the callback instead') : undefined;\n  }\n}\n\nexports['default'] = runTransitionHook;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"_process\":1,\"warning\":51}],50:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (\"production\" !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n\n},{}],51:[function(require,module,exports){\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (\"production\" !== 'production') {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch(x) {}\n    }\n  };\n}\n\nmodule.exports = warning;\n\n},{}],52:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.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\"}],53:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\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\"}],54:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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', dangerouslySetInnerHTML: {\n            __html: this.props.message.html\n          } });\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          /* jshint ignore:start */\n          var title = interpolate(gettext(\"This ban expires on %(expires_on)s.\"), {\n            'expires_on': this.props.expires.format('LL, LT')\n          }, true);\n\n          var message = interpolate(gettext(\"This ban expires %(expires_on)s.\"), {\n            'expires_on': this.props.expires.fromNow()\n          }, true);\n\n          return _react2.default.createElement(\n            'abbr',\n            { title: title },\n            message\n          );\n          /* jshint ignore:end */\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\"}],55:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _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\":64,\"react\":\"react\"}],56:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar BASE_URL = $('base').attr('href') + 'user-avatar';\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.cropAvatar = function () {\n      if (_this.state.isLoading) {\n        return false;\n      }\n\n      _this.setState({\n        'isLoading': true\n      });\n\n      var avatarType = _this.props.upload ? 'crop_tmp' : 'crop_org';\n      var cropit = $('.crop-form');\n\n      _ajax2.default.post(_this.props.user.api_url.avatar, {\n        'avatar': avatarType,\n        'crop': {\n          'offset': cropit.cropit('offset'),\n          'zoom': cropit.cropit('zoom')\n        }\n      }).then(function (data) {\n        _this.props.onComplete(data.avatar_hash, data.options);\n        _snackbar2.default.success(data.detail);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this.setState({\n            'isLoading': false\n          });\n        } else {\n          _this.props.showError(rejection);\n        }\n      });\n    };\n\n    _this.state = {\n      'isLoading': false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getAvatarSize',\n    value: function getAvatarSize() {\n      if (this.props.upload) {\n        return this.props.options.crop_tmp.size;\n      } else {\n        return this.props.options.crop_org.size;\n      }\n    }\n  }, {\n    key: 'getAvatarSecret',\n    value: function getAvatarSecret() {\n      if (this.props.upload) {\n        return this.props.options.crop_tmp.secret;\n      } else {\n        return this.props.options.crop_org.secret;\n      }\n    }\n  }, {\n    key: 'getAvatarHash',\n    value: function getAvatarHash() {\n      return this.props.upload || this.props.user.avatar_hash;\n    }\n  }, {\n    key: 'getImagePath',\n    value: function getImagePath() {\n      return [BASE_URL, this.getAvatarSecret() + ':' + this.getAvatarHash(), this.props.user.id + '.png'].join('/');\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      var cropit = $('.crop-form');\n      cropit.width(this.getAvatarSize());\n\n      cropit.cropit({\n        'width': this.getAvatarSize(),\n        'height': this.getAvatarSize(),\n        'imageState': {\n          'src': this.getImagePath()\n        },\n        onImageLoaded: function onImageLoaded() {\n          if (_this2.props.upload) {\n            // center uploaded image\n            var zoomLevel = cropit.cropit('zoom');\n            var imageSize = cropit.cropit('imageSize');\n\n            // is it wider than taller?\n            if (imageSize.width > imageSize.height) {\n              var displayedWidth = imageSize.width * zoomLevel;\n              var offsetX = (displayedWidth - _this2.getAvatarSize()) / -2;\n\n              cropit.cropit('offset', {\n                'x': offsetX,\n                'y': 0\n              });\n            } else if (imageSize.width < imageSize.height) {\n              var displayedHeight = imageSize.height * zoomLevel;\n              var offsetY = (displayedHeight - _this2.getAvatarSize()) / -2;\n\n              cropit.cropit('offset', {\n                'x': 0,\n                'y': offsetY\n              });\n            }\n          } else {\n            // use preserved crop\n            var crop = _this2.props.options.crop_org.crop;\n            if (crop) {\n              cropit.cropit('zoom', crop.zoom);\n              cropit.cropit('offset', {\n                'x': crop.x,\n                'y': crop.y\n              });\n            }\n          }\n        }\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      $('.crop-form').cropit('disable');\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body modal-avatar-crop' },\n          _react2.default.createElement(\n            'div',\n            { className: 'crop-form' },\n            _react2.default.createElement('div', { className: 'cropit-image-preview' }),\n            _react2.default.createElement('input', { type: 'range', className: 'cropit-image-zoom-input' })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-6 col-md-offset-3' },\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.cropAvatar,\n                loading: this.state.isLoading,\n                className: 'btn-primary btn-block' },\n              this.props.upload ? gettext(\"Set avatar\") : gettext(\"Crop image\")\n            ),\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.props.showIndex,\n                disabled: this.state.isLoading,\n                className: 'btn-default btn-block' },\n              gettext(\"Cancel\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":128,\"../../services/snackbar\":137,\"../avatar\":53,\"../button\":55,\"react\":\"react\"}],57:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Gallery = exports.GalleryItem = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _batch = require('../../utils/batch');\n\nvar _batch2 = _interopRequireDefault(_batch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar GalleryItem = exports.GalleryItem = function (_React$Component) {\n  _inherits(GalleryItem, _React$Component);\n\n  function GalleryItem() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, GalleryItem);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(GalleryItem)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.select = function () {\n      _this.props.select(_this.props.image);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n  /* jshint ignore:start */\n\n  _createClass(GalleryItem, [{\n    key: 'getClassName',\n\n    /* jshint ignore:end */\n\n    value: function getClassName() {\n      if (this.props.selection === this.props.image) {\n        if (this.props.disabled) {\n          return 'btn btn-avatar btn-disabled avatar-selected';\n        } else {\n          return 'btn btn-avatar avatar-selected';\n        }\n      } else if (this.props.disabled) {\n        return 'btn btn-avatar btn-disabled';\n      } else {\n        return 'btn btn-avatar';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button',\n          className: this.getClassName(),\n          disabled: this.props.disabled,\n          onClick: this.select },\n        _react2.default.createElement('img', { src: _index2.default.get('MEDIA_URL') + this.props.image })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return GalleryItem;\n}(_react2.default.Component);\n\nvar Gallery = exports.Gallery = function (_React$Component2) {\n  _inherits(Gallery, _React$Component2);\n\n  function Gallery() {\n    _classCallCheck(this, Gallery);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Gallery).apply(this, arguments));\n  }\n\n  _createClass(Gallery, [{\n    key: 'render',\n    value: function render() {\n      var _this3 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'avatars-gallery' },\n        _react2.default.createElement(\n          'h3',\n          null,\n          this.props.name\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'avatars-gallery-images' },\n          (0, _batch2.default)(this.props.images, 4, null).map(function (row, i) {\n            return _react2.default.createElement(\n              'div',\n              { className: 'row', key: i },\n              row.map(function (item, i) {\n                return _react2.default.createElement(\n                  'div',\n                  { className: 'col-xs-3', key: i },\n                  item ? _react2.default.createElement(GalleryItem, { image: item,\n                    disabled: _this3.props.disabled,\n                    select: _this3.props.select,\n                    selection: _this3.props.selection }) : _react2.default.createElement('div', { className: 'blank-avatar' })\n                );\n              })\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Gallery;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component3) {\n  _inherits(_class, _React$Component3);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this4 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this4.select = function (image) {\n      _this4.setState({\n        selection: image\n      });\n    };\n\n    _this4.save = function () {\n      if (_this4.state.isLoading) {\n        return false;\n      }\n\n      _this4.setState({\n        'isLoading': true\n      });\n\n      _ajax2.default.post(_this4.props.user.api_url.avatar, {\n        avatar: 'galleries',\n        image: _this4.state.selection\n      }).then(function (response) {\n        _this4.setState({\n          'isLoading': false\n        });\n\n        _snackbar2.default.success(response.detail);\n        _this4.props.onComplete(response.avatar_hash, response.options);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this4.setState({\n            'isLoading': false\n          });\n        } else {\n          _this4.props.showError(rejection);\n        }\n      });\n    };\n\n    _this4.state = {\n      'selection': null,\n      'isLoading': false\n    };\n    return _this4;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      var _this5 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body modal-avatar-gallery' },\n          this.props.options.galleries.map(function (item, i) {\n            return _react2.default.createElement(Gallery, { name: item.name,\n              images: item.images,\n              selection: _this5.state.selection,\n              disabled: _this5.state.isLoading,\n              select: _this5.select,\n              key: i });\n          })\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-6 col-md-offset-3' },\n              _react2.default.createElement(\n                _button2.default,\n                { onClick: this.save,\n                  loading: this.state.isLoading,\n                  disabled: !this.state.selection,\n                  className: 'btn-primary btn-block' },\n                this.state.selection ? gettext(\"Save choice\") : gettext(\"Select avatar\")\n              ),\n              _react2.default.createElement(\n                _button2.default,\n                { onClick: this.props.showIndex,\n                  disabled: this.state.isLoading,\n                  className: 'btn-default btn-block' },\n                gettext(\"Cancel\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":121,\"../../services/ajax\":128,\"../../services/snackbar\":137,\"../../utils/batch\":141,\"../button\":55,\"react\":\"react\"}],58:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _loader = require('../loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.setGravatar = function () {\n      _this.callApi('gravatar');\n    };\n\n    _this.setGenerated = function () {\n      _this.callApi('generated');\n    };\n\n    _this.state = {\n      'isLoading': false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'callApi',\n    value: function callApi(avatarType) {\n      var _this2 = this;\n\n      if (this.state.isLoading) {\n        return false;\n      }\n\n      this.setState({\n        'isLoading': true\n      });\n\n      _ajax2.default.post(this.props.user.api_url.avatar, {\n        avatar: avatarType\n      }).then(function (response) {\n        _this2.setState({\n          'isLoading': false\n        });\n\n        _snackbar2.default.success(response.detail);\n        _this2.props.onComplete(response.avatar_hash, response.options);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this2.setState({\n            'isLoading': false\n          });\n        } else {\n          _this2.props.showError(rejection);\n        }\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getGravatarButton',\n\n    /* jshint ignore:end */\n\n    value: function getGravatarButton() {\n      if (this.props.options.gravatar) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.setGravatar,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-gravatar' },\n          gettext(\"Download my Gravatar\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getCropButton',\n    value: function getCropButton() {\n      if (this.props.options.crop_org) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showCrop,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-crop' },\n          gettext(\"Re-crop uploaded image\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getUploadButton',\n    value: function getUploadButton() {\n      if (this.props.options.upload) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showUpload,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-upload' },\n          gettext(\"Upload new image\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getGalleryButton',\n    value: function getGalleryButton() {\n      if (this.props.options.galleries) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showGallery,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-gallery' },\n          gettext(\"Pick avatar from gallery\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getAvatarPreview',\n    value: function getAvatarPreview() {\n      /* jshint ignore:start */\n      var userPeview = {\n        id: this.props.user.id,\n        avatar_hash: this.props.options.avatar_hash\n      };\n      /* jshint ignore:end */\n\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: userPeview, 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: userPeview, size: '200' })\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-index' },\n        _react2.default.createElement(\n          'div',\n          { className: 'row' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-5' },\n            this.getAvatarPreview()\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-7' },\n            this.getGravatarButton(),\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.setGenerated,\n                disabled: this.state.isLoading,\n                className: 'btn-default btn-block btn-avatar-generate' },\n              gettext(\"Generate my individual avatar\")\n            ),\n            this.getCropButton(),\n            this.getUploadButton(),\n            this.getGalleryButton()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":128,\"../../services/snackbar\":137,\"../avatar\":53,\"../button\":55,\"../loader\":64,\"react\":\"react\"}],59:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ChangeAvatarError = undefined;\nexports.select = select;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _crop = require('./crop');\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _upload = require('./upload');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _gallery = require('./gallery');\n\nvar _gallery2 = _interopRequireDefault(_gallery);\n\nvar _modalLoader = require('../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _users = require('../../reducers/users');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar ChangeAvatarError = exports.ChangeAvatarError = function (_React$Component) {\n  _inherits(ChangeAvatarError, _React$Component);\n\n  function ChangeAvatarError() {\n    _classCallCheck(this, ChangeAvatarError);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(ChangeAvatarError).apply(this, arguments));\n  }\n\n  _createClass(ChangeAvatarError, [{\n    key: 'getErrorReason',\n    value: function getErrorReason() {\n      if (this.props.reason) {\n        /* jshint ignore:start */\n        return _react2.default.createElement('p', { dangerouslySetInnerHTML: { __html: this.props.reason } });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body' },\n        _react2.default.createElement(\n          'div',\n          { className: 'message-icon' },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            'remove_circle_outline'\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'message-body' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.props.message\n          ),\n          this.getErrorReason()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return ChangeAvatarError;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this2, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this2), _this2.showError = function (error) {\n      _this2.setState({\n        error: error\n      });\n    }, _this2.showIndex = function () {\n      _this2.setState({\n        'component': _index2.default\n      });\n    }, _this2.showUpload = function () {\n      _this2.setState({\n        'component': _upload2.default\n      });\n    }, _this2.showCrop = function () {\n      _this2.setState({\n        'component': _crop2.default\n      });\n    }, _this2.showGallery = function () {\n      _this2.setState({\n        'component': _gallery2.default\n      });\n    }, _this2.completeFlow = function (avatarHash, options) {\n      _store2.default.dispatch((0, _users.updateAvatar)(_this2.props.user, avatarHash));\n\n      _this2.setState({\n        'component': _index2.default,\n        options: options\n      });\n    }, _temp), _possibleConstructorReturn(_this2, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this3 = this;\n\n      _ajax2.default.get(this.props.user.api_url.avatar).then(function (options) {\n        _this3.setState({\n          'component': _index2.default,\n          'options': options,\n          'error': null\n        });\n      }, function (rejection) {\n        _this3.showError(rejection);\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getBody',\n\n    /* jshint ignore:end */\n\n    value: function getBody() {\n      if (this.state) {\n        if (this.state.error) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(ChangeAvatarError, { message: this.state.error.detail,\n            reason: this.state.error.reason });\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(this.state.component, { options: this.state.options,\n              user: this.props.user,\n              onComplete: this.completeFlow,\n              showError: this.showError,\n              showIndex: this.showIndex,\n              showCrop: this.showCrop,\n              showUpload: this.showUpload,\n              showGallery: this.showGallery });\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_modalLoader2.default, null);\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.state && this.state.error) {\n        return \"modal-dialog modal-message modal-change-avatar\";\n      } else {\n        return \"modal-dialog modal-change-avatar\";\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getClassName(),\n          role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Change your avatar\")\n            )\n          ),\n          this.getBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(state) {\n  return {\n    'user': state.auth.user\n  };\n}\n\n},{\"../../reducers/users\":127,\"../../services/ajax\":128,\"../../services/store\":138,\"../modal-loader\":65,\"./crop\":56,\"./gallery\":57,\"./index\":58,\"./upload\":60,\"react\":\"react\"}],60:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _crop = require('./crop');\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _fileSize = require('../../utils/file-size');\n\nvar _fileSize2 = _interopRequireDefault(_fileSize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.pickFile = function () {\n      document.getElementById('avatar-hidden-upload').click();\n    };\n\n    _this.uploadFile = function () {\n      var image = document.getElementById('avatar-hidden-upload').files[0];\n\n      var validationError = _this.validateFile(image);\n      if (validationError) {\n        _snackbar2.default.error(validationError);\n        return;\n      }\n\n      _this.setState({\n        image: image,\n        'preview': URL.createObjectURL(image),\n        'progress': 0\n      });\n\n      var data = new FormData();\n      data.append('avatar', 'upload');\n      data.append('image', image);\n\n      _ajax2.default.upload(_this.props.user.api_url.avatar, data, function (progress) {\n        _this.setState({\n          progress: progress\n        });\n      }).then(function (data) {\n        _this.setState({\n          'options': data.options,\n          'uploaded': data.detail\n        });\n        _snackbar2.default.info(gettext(\"Your image has been uploaded and you may now crop it.\"));\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this.setState({\n            'isLoading': false,\n            'image': null,\n            'progress': 0\n          });\n        } else {\n          _this.props.showError(rejection);\n        }\n      });\n    };\n\n    _this.state = {\n      'image': null,\n      'preview': null,\n      'progress': 0,\n      'uploaded': null\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'validateFile',\n    value: function validateFile(image) {\n      if (image.size > this.props.options.upload.limit) {\n        return interpolate(gettext(\"Selected file is too big. (%(filesize)s)\"), {\n          'filesize': (0, _fileSize2.default)(image.size)\n        }, true);\n      }\n\n      var invalidTypeMsg = gettext(\"Selected file type is not supported.\");\n      if (this.props.options.upload.allowed_mime_types.indexOf(image.type) === -1) {\n        return invalidTypeMsg;\n      }\n\n      var extensionFound = false;\n      var loweredFilename = image.name.toLowerCase();\n      this.props.options.upload.allowed_extensions.map(function (extension) {\n        if (loweredFilename.substr(extension.length * -1) === extension) {\n          extensionFound = true;\n        }\n      });\n\n      if (!extensionFound) {\n        return invalidTypeMsg;\n      }\n\n      return false;\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getUploadRequirements',\n\n    /* jshint ignore:end */\n\n    value: function getUploadRequirements(options) {\n      var extensions = options.allowed_extensions.map(function (extension) {\n        return extension.substr(1);\n      });\n\n      return interpolate(gettext(\"%(files)s files smaller than %(limit)s\"), {\n        'files': extensions.join(', '),\n        'limit': (0, _fileSize2.default)(options.limit)\n      }, true);\n    }\n  }, {\n    key: 'getUploadButton',\n    value: function getUploadButton() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-upload' },\n        _react2.default.createElement(\n          _button2.default,\n          { className: 'btn-pick-file',\n            onClick: this.pickFile },\n          _react2.default.createElement(\n            'div',\n            { className: 'material-icon' },\n            'input'\n          ),\n          gettext(\"Select file\")\n        ),\n        _react2.default.createElement(\n          'p',\n          { className: 'text-muted' },\n          this.getUploadRequirements(this.props.options.upload)\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getUploadProgressLabel',\n    value: function getUploadProgressLabel() {\n      return interpolate(gettext(\"%(progress)s % complete\"), {\n        'progress': this.state.progress\n      }, true);\n    }\n  }, {\n    key: 'getUploadProgress',\n    value: function getUploadProgress() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-upload' },\n        _react2.default.createElement(\n          'div',\n          { className: 'upload-progress' },\n          _react2.default.createElement('img', { src: this.state.preview }),\n          _react2.default.createElement(\n            'div',\n            { className: 'progress' },\n            _react2.default.createElement(\n              'div',\n              { className: 'progress-bar', role: 'progressbar',\n                'aria-valuenow': '{this.state.progress}',\n                'aria-valuemin': '0', 'aria-valuemax': '100',\n                style: { width: this.state.progress + '%' } },\n              _react2.default.createElement(\n                'span',\n                { className: 'sr-only' },\n                this.getUploadProgressLabel()\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderUpload',\n    value: function renderUpload() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement('input', { type: 'file',\n          id: 'avatar-hidden-upload',\n          className: 'hidden-file-upload',\n          onChange: this.uploadFile }),\n        this.state.image ? this.getUploadProgress() : this.getUploadButton(),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-6 col-md-offset-3' },\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.props.showIndex,\n                disabled: !!this.state.image,\n                className: 'btn-default btn-block' },\n              gettext(\"Cancel\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderCrop',\n    value: function renderCrop() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(_crop2.default, { options: this.state.options,\n        user: this.props.user,\n        upload: this.state.uploaded,\n        onComplete: this.props.onComplete,\n        showError: this.props.showError,\n        showIndex: this.props.showIndex });\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return this.state.uploaded ? this.renderCrop() : this.renderUpload();\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":128,\"../../services/snackbar\":137,\"../../utils/file-size\":142,\"../button\":55,\"./crop\":56,\"react\":\"react\"}],61:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'isValidated',\n    value: function isValidated() {\n      return typeof this.props.validation !== \"undefined\";\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      var className = 'form-group';\n      if (this.isValidated()) {\n        className += ' has-feedback';\n        if (this.props.validation === null) {\n          className += ' has-success';\n        } else {\n          className += ' has-error';\n        }\n      }\n      return className;\n    }\n  }, {\n    key: 'getFeedback',\n    value: function getFeedback() {\n      var _this2 = this;\n\n      if (this.props.validation) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'help-block errors' },\n          this.props.validation.map(function (error, i) {\n            return _react2.default.createElement(\n              'p',\n              { key: _this2.props.for + 'FeedbackItem' + i },\n              error\n            );\n          })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFeedbackIcon',\n    value: function getFeedbackIcon() {\n      if (this.isValidated()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'material-icon form-control-feedback',\n            'aria-hidden': 'true', key: this.props.for + 'FeedbackIcon' },\n          this.props.validation ? 'clear' : 'check'\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFeedbackDescription',\n    value: function getFeedbackDescription() {\n      if (this.isValidated()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { id: this.props.for + '_status', className: 'sr-only' },\n          this.props.validation ? gettext('(error)') : gettext('(success)')\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getHelpText',\n    value: function getHelpText() {\n      if (this.props.helpText) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'p',\n          { className: 'help-block' },\n          this.props.helpText\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getClassName() },\n        _react2.default.createElement(\n          'label',\n          { className: 'control-label ' + (this.props.labelClass || ''),\n            htmlFor: this.props.for || '' },\n          this.props.label + ':'\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.props.controlClass || '' },\n          this.props.children,\n          this.getFeedbackIcon(),\n          this.getFeedbackDescription(),\n          this.getFeedback(),\n          this.getHelpText(),\n          this.props.extra || null\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],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\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _validators = require('../utils/validators');\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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 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 = _defineProperty({}, name, event.target.value);\n\n        var formErrors = _this.state.errors || {};\n        formErrors[name] = _this.validateField(name, newState[name]);\n        newState.errors = formErrors;\n\n        _this.setState(newState);\n      };\n    }, _this.handleSubmit = function (event) {\n      // we don't reload page on submissions\n      event.preventDefault();\n      if (_this.state.isLoading) {\n        return;\n      }\n\n      if (_this.clean()) {\n        _this.setState({ isLoading: true });\n        var promise = _this.send();\n\n        if (promise) {\n          promise.then(function (success) {\n            _this.setState({ isLoading: false });\n            _this.handleSuccess(success);\n          }, function (rejection) {\n            _this.setState({ isLoading: false });\n            _this.handleError(rejection);\n          });\n        } else {\n          _this.setState({ isLoading: false });\n        }\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'validate',\n    value: function validate() {\n      var errors = {};\n      if (!this.state.validators) {\n        return errors;\n      }\n\n      var validators = {\n        required: this.state.validators.required || this.state.validators,\n        optional: this.state.validators.optional || {}\n      };\n\n      var validatedFields = [];\n\n      // add required fields to validation\n      for (var name in validators.required) {\n        if (validators.required.hasOwnProperty(name) && validators.required[name]) {\n          validatedFields.push(name);\n        }\n      }\n\n      // add optional fields to validation\n      for (var name in validators.optional) {\n        if (validators.optional.hasOwnProperty(name) && validators.optional[name]) {\n          validatedFields.push(name);\n        }\n      }\n\n      // validate fields values\n      for (var i in validatedFields) {\n        var name = validatedFields[i];\n        var fieldErrors = this.validateField(name, this.state[name]);\n\n        if (fieldErrors === null) {\n          errors[name] = null;\n        } else if (fieldErrors) {\n          errors[name] = fieldErrors;\n        }\n      }\n\n      return errors;\n    }\n  }, {\n    key: 'isValid',\n    value: function isValid() {\n      var errors = this.validate();\n      for (var field in errors) {\n        if (errors.hasOwnProperty(field)) {\n          if (errors[field] !== null) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    }\n  }, {\n    key: 'validateField',\n    value: function validateField(name, value) {\n      var errors = [];\n      if (!this.state.validators) {\n        return errors;\n      }\n\n      var validators = {\n        required: (this.state.validators.required || this.state.validators)[name],\n        optional: (this.state.validators.optional || {})[name]\n      };\n\n      var requiredError = validateRequired(value) || false;\n\n      if (validators.required) {\n        if (requiredError) {\n          errors = [requiredError];\n        } else {\n          for (var i in validators.required) {\n            var validationError = validators.required[i](value);\n            if (validationError) {\n              errors.push(validationError);\n            }\n          }\n        }\n\n        return errors.length ? errors : null;\n      } else if (requiredError === false && validators.optional) {\n        for (var i in validators.optional) {\n          var validationError = validators.optional[i](value);\n          if (validationError) {\n            errors.push(validationError);\n          }\n        }\n\n        return errors.length ? errors : null;\n      }\n\n      return false; // false === field wasn't validated\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'clean',\n    value: function clean() {\n      return true;\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return null;\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(success) {\n      return;\n    }\n  }, {\n    key: 'handleError',\n\n    /* jshint ignore:end */\n    value: function handleError(rejection) {\n      _snackbar2.default.apiError(rejection);\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../services/snackbar\":137,\"../utils/validators\":148,\"react\":\"react\"}],63:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'isActive',\n    value: function isActive() {\n      if (this.props.path) {\n        return document.location.pathname.indexOf(this.props.path) === 0;\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.isActive()) {\n        return (this.props.className || '') + ' ' + (this.props.activeClassName || 'active');\n      } else {\n        return this.props.className || '';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'li',\n        { className: this.getClassName() },\n        this.props.children\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],64:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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: this.props.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\"}],65:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _loader = require('./loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\n\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\":64,\"react\":\"react\"}],66:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _panelMessage = require('./panel-message');\n\nvar _panelMessage2 = _interopRequireDefault(_panelMessage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\nvar _class = function (_PanelMessage) {\n  _inherits(_class, _PanelMessage);\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: '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: 'modal-body' },\n        _react2.default.createElement(\n          'div',\n          { className: 'message-icon' },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            this.props.icon || 'info_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.getHelpText()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_panelMessage2.default);\n\nexports.default = _class;\n\n},{\"./panel-message\":78,\"react\":\"react\"}],67:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _panelLoader = require('../../panel-loader');\n\nvar _panelLoader2 = _interopRequireDefault(_panelLoader);\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: 'panel panel-default panel-form' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel-heading' },\n          _react2.default.createElement(\n            'h3',\n            { className: 'panel-title' },\n            gettext(\"Change username\")\n          )\n        ),\n        _react2.default.createElement(_panelLoader2.default, null)\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../panel-loader\":77,\"react\":\"react\"}],68:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _panelMessage = require('../../panel-message');\n\nvar _panelMessage2 = _interopRequireDefault(_panelMessage);\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: 'getHelpText',\n    value: function getHelpText() {\n      if (this.props.options.next_on) {\n        return interpolate(gettext(\"You will be able to change your username %(next_change)s.\"), { 'next_change': this.props.options.next_on.fromNow() }, true);\n      } else {\n        return gettext(\"You have used up available name changes.\");\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'panel panel-default panel-form' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel-heading' },\n          _react2.default.createElement(\n            'h3',\n            { className: 'panel-title' },\n            gettext(\"Change username\")\n          )\n        ),\n        _react2.default.createElement(_panelMessage2.default, { message: gettext(\"You can't change your username at the moment.\"),\n          helpText: this.getHelpText() })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../panel-message\":78,\"react\":\"react\"}],69:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _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\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 _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      username: '',\n\n      validators: {\n        username: [validators.usernameContent(), validators.usernameMinLength({\n          username_length_min: props.options.length_min\n        }), validators.usernameMaxLength({\n          username_length_max: props.options.length_max\n        })]\n      },\n\n      isLoading: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getHelpText',\n    value: function getHelpText() {\n      var phrases = [];\n\n      if (this.props.options.changes_left > 0) {\n        var message = ngettext(\"You can change your username %(changes_left)s more time.\", \"You can change your username %(changes_left)s more times.\", this.props.options.changes_left);\n\n        phrases.push(interpolate(message, {\n          'changes_left': this.props.options.changes_left\n        }, true));\n      }\n\n      if (this.props.user.acl.name_changes_expire > 0) {\n        var message = ngettext(\"Used changes redeem after %(name_changes_expire)s day.\", \"Used changes redeem after %(name_changes_expire)s days.\", this.props.user.acl.name_changes_expire);\n\n        phrases.push(interpolate(message, {\n          'name_changes_expire': this.props.user.acl.name_changes_expire\n        }, true));\n      }\n\n      return phrases.length ? phrases.join(' ') : null;\n    }\n  }, {\n    key: 'clean',\n    value: function clean() {\n      var errors = this.validate();\n      if (errors.username) {\n        _snackbar2.default.error(errors.username[0]);\n        return false;\n      }if (this.state.username.trim() === this.props.user.username) {\n        _snackbar2.default.info(gettext(\"Your new username is same as current one.\"));\n        return false;\n      } else {\n        return true;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.username, {\n        'username': this.state.username\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(success) {\n      this.setState({\n        'username': ''\n      });\n\n      this.props.complete(success.username, success.slug, success.options);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      _snackbar2.default.apiError(rejection);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change username\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"New username\"), 'for': 'id_username',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n                helpText: this.getHelpText() },\n              _react2.default.createElement('input', { type: 'text', id: 'id_username', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('username'),\n                value: this.state.username })\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Change username\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../services/ajax\":128,\"../../../services/snackbar\":137,\"../../../utils/validators\":148,\"../../button\":55,\"../../form\":62,\"../../form-group\":61,\"react\":\"react\"}],70:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _formLoading = require('./form-loading');\n\nvar _formLoading2 = _interopRequireDefault(_formLoading);\n\nvar _formLocked = require('./form-locked');\n\nvar _formLocked2 = _interopRequireDefault(_formLocked);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _usernameHistory = require('../../username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory3 = require('../../../reducers/username-history');\n\nvar _users = require('../../../reducers/users');\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _pageTitle = require('../../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nvar _snackbar = require('../../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// 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.onComplete = function (username, slug, options) {\n      _this.setState({\n        options: options\n      });\n\n      _store2.default.dispatch((0, _usernameHistory3.addNameChange)({ username: username, slug: slug }, _this.props.user, _this.props.user));\n      _store2.default.dispatch((0, _users.updateUsername)(_this.props.user, username, slug));\n\n      _snackbar2.default.success(gettext(\"Your username has been changed successfully.\"));\n    };\n\n    _this.state = {\n      isLoaded: false,\n      options: null\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      _pageTitle2.default.set({\n        title: gettext(\"Change username\"),\n        parent: gettext(\"Change your options\")\n      });\n\n      Promise.all([_ajax2.default.get(this.props.user.api_url.username), _ajax2.default.get(_index2.default.get('USERNAME_CHANGES_API'), { user: this.props.user.id })]).then(function (data) {\n        _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data[1].results));\n\n        _this2.setState({\n          isLoaded: true,\n          options: {\n            changes_left: data[0].changes_left,\n            length_min: data[0].length_min,\n            length_max: data[0].length_max,\n            next_on: data[0].next_on ? (0, _moment2.default)(data[0].next_on) : null\n          }\n        });\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getChangeForm',\n\n    /* jshint ignore:end */\n\n    value: function getChangeForm() {\n      if (this.state.isLoaded) {\n        if (this.state.options.changes_left > 0) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_form2.default, { user: this.props.user,\n            options: this.state.options,\n            complete: this.onComplete });\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(_formLocked2.default, { options: this.state.options });\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_formLoading2.default, null);\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        null,\n        this.getChangeForm(),\n        _react2.default.createElement(_usernameHistory2.default, { isLoaded: this.state.isLoaded,\n          changes: this.props['username-history'] })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":121,\"../../../reducers/username-history\":126,\"../../../reducers/users\":127,\"../../../services/ajax\":128,\"../../../services/page-title\":135,\"../../../services/snackbar\":137,\"../../../services/store\":138,\"../../username-history\":105,\"./form\":69,\"./form-loading\":67,\"./form-locked\":68,\"moment\":\"moment\",\"react\":\"react\"}],71:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('../form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('../form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _select = require('../select');\n\nvar _select2 = _interopRequireDefault(_select);\n\nvar _yesNoSwitch = require('../yes-no-switch');\n\nvar _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);\n\nvar _auth = require('../../reducers/auth');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _pageTitle = require('../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_Form) {\n  _inherits(_class, _Form);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'is_hiding_presence': props.user.is_hiding_presence,\n      'limits_private_thread_invites_to': props.user.limits_private_thread_invites_to,\n      'subscribe_to_started_threads': props.user.subscribe_to_started_threads,\n      'subscribe_to_replied_threads': props.user.subscribe_to_replied_threads,\n\n      'errors': {}\n    };\n\n    _this.privateThreadInvitesChoices = [{\n      'value': 0,\n      'icon': 'help_outline',\n      'label': gettext('Everybody')\n    }, {\n      'value': 1,\n      'icon': 'done_all',\n      'label': gettext('Users I follow')\n    }, {\n      'value': 2,\n      'icon': 'highlight_off',\n      'label': gettext('Nobody')\n    }];\n\n    _this.subscribeToChoices = [{\n      'value': 0,\n      'icon': 'bookmark_border',\n      'label': gettext('No')\n    }, {\n      'value': 1,\n      'icon': 'bookmark',\n      'label': gettext('Bookmark')\n    }, {\n      'value': 2,\n      'icon': 'mail',\n      'label': gettext('Bookmark with e-mail notification')\n    }];\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.options, {\n        is_hiding_presence: this.state.is_hiding_presence,\n        limits_private_thread_invites_to: this.state.limits_private_thread_invites_to,\n        subscribe_to_started_threads: this.state.subscribe_to_started_threads,\n        subscribe_to_replied_threads: this.state.subscribe_to_replied_threads\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess() {\n      _store2.default.dispatch((0, _auth.patchUser)({\n        is_hiding_presence: this.state.is_hiding_presence,\n        limits_private_thread_invites_to: this.state.limits_private_thread_invites_to,\n        subscribe_to_started_threads: this.state.subscribe_to_started_threads,\n        subscribe_to_replied_threads: this.state.subscribe_to_replied_threads\n      }));\n      _snackbar2.default.success(gettext(\"Your forum options have been changed.\"));\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        _snackbar2.default.error(gettext(\"Please reload page and try again.\"));\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: gettext(\"Forum options\"),\n        parent: gettext(\"Change your options\")\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change forum options\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              'fieldset',\n              null,\n              _react2.default.createElement(\n                'legend',\n                null,\n                gettext(\"Privacy settings\")\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Hide my presence\"),\n                  helpText: gettext(\"If you hide your presence, only members with permission to see hidden users will see when you are online.\"),\n                  'for': 'id_is_hiding_presence',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_is_hiding_presence',\n                  disabled: this.state.isLoading,\n                  iconOn: 'visibility_off',\n                  iconOff: 'visibility',\n                  labelOn: gettext(\"Hide my presence from other users\"),\n                  labelOff: gettext(\"Show my presence to other users\"),\n                  onChange: this.bindInput('is_hiding_presence'),\n                  value: this.state.is_hiding_presence })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Private thread invitations\"),\n                  'for': 'id_limits_private_thread_invites_to',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_limits_private_thread_invites_to',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('limits_private_thread_invites_to'),\n                  value: this.state.limits_private_thread_invites_to,\n                  choices: this.privateThreadInvitesChoices })\n              )\n            ),\n            _react2.default.createElement(\n              'fieldset',\n              null,\n              _react2.default.createElement(\n                'legend',\n                null,\n                gettext(\"Automatic subscriptions\")\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Threads I start\"),\n                  'for': 'id_subscribe_to_started_threads',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_subscribe_to_started_threads',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('subscribe_to_started_threads'),\n                  value: this.state.subscribe_to_started_threads,\n                  choices: this.subscribeToChoices })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Threads I reply to\"),\n                  'for': 'id_subscribe_to_replied_threads',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_subscribe_to_replied_threads',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('subscribe_to_replied_threads'),\n                  value: this.state.subscribe_to_replied_threads,\n                  choices: this.subscribeToChoices })\n              )\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Save changes\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../reducers/auth\":122,\"../../services/ajax\":128,\"../../services/page-title\":135,\"../../services/snackbar\":137,\"../../services/store\":138,\"../button\":55,\"../form\":62,\"../form-group\":61,\"../select\":98,\"../yes-no-switch\":120,\"react\":\"react\"}],72:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactNav = exports.SideNav = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouter = require('react-router');\n\nvar _li = require('../li');\n\nvar _li2 = _interopRequireDefault(_li);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n//jshint ignore:line\n\n//jshint ignore:line\n\nvar SideNav = exports.SideNav = function (_React$Component) {\n  _inherits(SideNav, _React$Component);\n\n  function SideNav() {\n    _classCallCheck(this, SideNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(SideNav).apply(this, arguments));\n  }\n\n  _createClass(SideNav, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'div',\n        { className: 'list-group nav-side' },\n        this.props.options.map(function (option) {\n          return _react2.default.createElement(\n            _reactRouter.Link,\n            { to: _this2.props.baseUrl + option.component + '/',\n              className: 'list-group-item',\n              activeClassName: 'active',\n              key: option.component },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              option.icon\n            ),\n            option.name\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return SideNav;\n}(_react2.default.Component);\n\nvar CompactNav = exports.CompactNav = function (_React$Component2) {\n  _inherits(CompactNav, _React$Component2);\n\n  function CompactNav() {\n    _classCallCheck(this, CompactNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));\n  }\n\n  _createClass(CompactNav, [{\n    key: 'render',\n    value: function render() {\n      var _this4 = this;\n\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu', role: 'menu' },\n        this.props.options.map(function (option) {\n          return _react2.default.createElement(\n            _li2.default,\n            { path: _this4.props.baseUrl + option.component + '/',\n              key: option.component },\n            _react2.default.createElement(\n              _reactRouter.Link,\n              { to: _this4.props.baseUrl + option.component + '/',\n                onClick: _this4.props.hideNav },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                option.icon\n              ),\n              option.name\n            )\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return CompactNav;\n}(_react2.default.Component);\n\n},{\"../../index\":121,\"../li\":63,\"react\":\"react\",\"react-router\":\"react-router\"}],73:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.select = select;\nexports.paths = paths;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _navs = require('./navs');\n\nvar _forumOptions = require('./forum-options');\n\nvar _forumOptions2 = _interopRequireDefault(_forumOptions);\n\nvar _root = require('./change-username/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _root3 = require('./sign-in-credentials/root');\n\nvar _root4 = _interopRequireDefault(_root3);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\nvar _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.toggleNav = function () {\n      if (_this.state.dropdown) {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: true\n        });\n      }\n    };\n\n    _this.hideNav = function () {\n      _this.setState({\n        dropdown: false\n      });\n    };\n\n    _this.state = {\n      dropdown: false\n    };\n    return _this;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'getToggleNavClassName',\n\n    /* jshint ignore:end */\n\n    value: function getToggleNavClassName() {\n      if (this.state.dropdown) {\n        return 'btn btn-default btn-icon open';\n      } else {\n        return 'btn btn-default btn-icon';\n      }\n    }\n  }, {\n    key: 'getCompactNavClassName',\n    value: function getCompactNavClassName() {\n      if (this.state.dropdown) {\n        return 'compact-nav open';\n      } else {\n        return 'compact-nav';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-options' },\n        _react2.default.createElement(\n          'div',\n          { className: 'page-header' },\n          _react2.default.createElement(\n            'div',\n            { className: 'container' },\n            _react2.default.createElement(\n              'h1',\n              { className: 'pull-left' },\n              gettext(\"Change your options\")\n            ),\n            _react2.default.createElement(\n              'button',\n              { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',\n                type: 'button',\n                onClick: this.toggleNav,\n                'aria-haspopup': 'true',\n                'aria-expanded': this.state.dropdown ? 'true' : 'false' },\n              _react2.default.createElement(\n                'i',\n                { className: 'material-icon' },\n                'menu'\n              )\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.getCompactNavClassName() },\n          _react2.default.createElement(_navs.CompactNav, { options: _index2.default.get('USER_OPTIONS'),\n            baseUrl: _index2.default.get('USERCP_URL'),\n            hideNav: this.hideNav })\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-3 hidden-xs hidden-sm' },\n              _react2.default.createElement(_navs.SideNav, { options: _index2.default.get('USER_OPTIONS'),\n                baseUrl: _index2.default.get('USERCP_URL') })\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-9' },\n              this.props.children\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(store) {\n  return {\n    'tick': store.tick.tick,\n    'user': store.auth.user,\n    'username-history': store['username-history']\n  };\n}\n\nfunction paths() {\n  return [{\n    path: _index2.default.get('USERCP_URL') + 'forum-options/',\n    component: (0, _reactRedux.connect)(select)(_forumOptions2.default)\n  }, {\n    path: _index2.default.get('USERCP_URL') + 'change-username/',\n    component: (0, _reactRedux.connect)(select)(_root2.default)\n  }, {\n    path: _index2.default.get('USERCP_URL') + 'sign-in-credentials/',\n    component: (0, _reactRedux.connect)(select)(_root4.default)\n  }];\n}\n\n},{\"../../index\":121,\"./change-username/root\":70,\"./forum-options\":71,\"./navs\":72,\"./sign-in-credentials/root\":76,\"react\":\"react\",\"react-redux\":\"react-redux\"}],74:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _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\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 _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      new_email: '',\n      password: '',\n\n      validators: {\n        new_email: [validators.email()],\n        password: []\n      },\n\n      isLoading: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'clean',\n    value: function clean() {\n      var errors = this.validate();\n      var lengths = [this.state.new_email.trim().length, this.state.password.trim().length];\n\n      if (lengths.indexOf(0) !== -1) {\n        _snackbar2.default.error(gettext(\"Fill out all fields.\"));\n        return false;\n      }\n\n      if (errors.new_email) {\n        _snackbar2.default.error(errors.new_email[0]);\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.change_email, {\n        new_email: this.state.new_email,\n        password: this.state.password\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(response) {\n      this.setState({\n        new_email: '',\n        password: ''\n      });\n\n      _snackbar2.default.success(response.detail);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        if (rejection.new_email) {\n          _snackbar2.default.error(rejection.new_email);\n        } else {\n          _snackbar2.default.error(rejection.password);\n        }\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement('input', { type: 'type', style: { display: 'none' } }),\n        _react2.default.createElement('input', { type: 'password', style: { display: 'none' } }),\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change e-mail address\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"New e-mail\"), 'for': 'id_new_email',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'text', id: 'id_new_email', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('new_email'),\n                value: this.state.new_email })\n            ),\n            _react2.default.createElement('hr', null),\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"Your current password\"), 'for': 'id_password',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'password', id: 'id_password', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('password'),\n                value: this.state.password })\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Change e-mail\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../services/ajax\":128,\"../../../services/snackbar\":137,\"../../../utils/validators\":148,\"../../button\":55,\"../../form\":62,\"../../form-group\":61,\"react\":\"react\"}],75:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _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\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      new_password: '',\n      repeat_password: '',\n      password: '',\n\n      validators: {\n        new_password: [validators.passwordMinLength(_index2.default.get('SETTINGS'))],\n        repeat_password: [],\n        password: []\n      },\n\n      isLoading: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'clean',\n    value: function clean() {\n      var errors = this.validate();\n      var lengths = [this.state.new_password.trim().length, this.state.repeat_password.trim().length, this.state.password.trim().length];\n\n      if (lengths.indexOf(0) !== -1) {\n        _snackbar2.default.error(gettext(\"Fill out all fields.\"));\n        return false;\n      }\n\n      if (errors.new_password) {\n        _snackbar2.default.error(errors.new_password[0]);\n        return false;\n      }\n\n      if (this.state.new_password.trim() !== this.state.repeat_password.trim()) {\n        _snackbar2.default.error(gettext(\"New passwords are different.\"));\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.change_password, {\n        new_password: this.state.new_password,\n        password: this.state.password\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(response) {\n      this.setState({\n        new_password: '',\n        repeat_password: '',\n        password: ''\n      });\n\n      _snackbar2.default.success(response.detail);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        if (rejection.new_password) {\n          _snackbar2.default.error(rejection.new_password);\n        } else {\n          _snackbar2.default.error(rejection.password);\n        }\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement('input', { type: 'type', style: { display: 'none' } }),\n        _react2.default.createElement('input', { type: 'password', style: { display: 'none' } }),\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change password\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"New password\"), 'for': 'id_new_password',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'password', id: 'id_new_password', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('new_password'),\n                value: this.state.new_password })\n            ),\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"Repeat password\"), 'for': 'id_repeat_password',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'password', id: 'id_repeat_password', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('repeat_password'),\n                value: this.state.repeat_password })\n            ),\n            _react2.default.createElement('hr', null),\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"Your current password\"), 'for': 'id_password',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'password', id: 'id_password', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('password'),\n                value: this.state.password })\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Change password\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../index\":121,\"../../../services/ajax\":128,\"../../../services/snackbar\":137,\"../../../utils/validators\":148,\"../../button\":55,\"../../form\":62,\"../../form-group\":61,\"react\":\"react\"}],76:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _changeEmail = require('./change-email');\n\nvar _changeEmail2 = _interopRequireDefault(_changeEmail);\n\nvar _changePassword = require('./change-password');\n\nvar _changePassword2 = _interopRequireDefault(_changePassword);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _pageTitle = require('../../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\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() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: gettext(\"Change email or password\"),\n        parent: gettext(\"Change your options\")\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(_changeEmail2.default, { user: this.props.user }),\n        _react2.default.createElement(_changePassword2.default, { user: this.props.user }),\n        _react2.default.createElement(\n          'p',\n          { className: 'message-line' },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            'warning'\n          ),\n          _react2.default.createElement(\n            'a',\n            { href: _index2.default.get('FORGOTTEN_PASSWORD_URL') },\n            gettext(\"Change forgotten password\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":121,\"../../../services/page-title\":135,\"./change-email\":74,\"./change-password\":75,\"react\":\"react\"}],77:[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: 'panel-body panel-body-loading' },\n        _react2.default.createElement(_loader2.default, { className: 'loader loader-spaced' })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"./loader\":64,\"react\":\"react\"}],78:[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: \"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: \"panel-body panel-message-body\" },\n        _react2.default.createElement(\n          \"div\",\n          { className: \"message-icon\" },\n          _react2.default.createElement(\n            \"span\",\n            { className: \"material-icon\" },\n            this.props.icon || 'info_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.getHelpText()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],79:[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\":139,\"react\":\"react\"}],80:[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 _followButton = require('./follow-button');\n\nvar _followButton2 = _interopRequireDefault(_followButton);\n\nvar _nav = require('./moderation/nav');\n\nvar _nav2 = _interopRequireDefault(_nav);\n\nvar _userStatus = require('../user-status');\n\nvar _userStatus2 = _interopRequireDefault(_userStatus);\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 _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: 'getUserStatus',\n    value: function getUserStatus() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'li',\n        { className: 'user-status-display' },\n        _react2.default.createElement(\n          _userStatus2.default,\n          { user: this.props.profile, status: this.props.profile.status },\n          _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.profile,\n            status: this.props.profile.status }),\n          _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.profile,\n            status: this.props.profile.status,\n            className: 'status-label' })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getUserRank',\n    value: function getUserRank() {\n      if (this.props.profile.rank.is_tab) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          { className: 'user-rank' },\n          _react2.default.createElement(\n            'a',\n            { href: this.props.profile.rank.absolute_url, className: 'item-title' },\n            this.props.profile.rank.name\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'li',\n            { className: 'user-rank' },\n            _react2.default.createElement(\n              'span',\n              { className: 'item-title' },\n              this.props.profile.rank.name\n            )\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getUserTitle',\n    value: function getUserTitle() {\n      if (this.props.profile.title) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          { className: 'user-title' },\n          this.props.profile.title\n        );\n        /* jshint ignore:end */\n      } else if (this.props.profile.rank.title) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'li',\n            { className: 'user-title' },\n            this.props.profile.rank.title\n          );\n          /* jshint ignore:end */\n        } else {\n            return null;\n          }\n    }\n  }, {\n    key: 'getJoinedOn',\n    value: function getJoinedOn() {\n      /* jshint ignore:start */\n      var title = interpolate(gettext(\"Joined on %(joined_on)s\"), {\n        'joined_on': this.props.profile.joined_on.format('LL, LT')\n      }, true);\n\n      var age = interpolate(gettext(\"Joined %(joined_on)s\"), {\n        'joined_on': this.props.profile.joined_on.fromNow()\n      }, true);\n\n      return _react2.default.createElement(\n        'li',\n        { className: 'user-joined-on' },\n        _react2.default.createElement(\n          'abbr',\n          { title: title },\n          age\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getEmail',\n    value: function getEmail() {\n      if (this.props.profile.email) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          { className: 'user-email' },\n          _react2.default.createElement(\n            'a',\n            { href: 'mailto:' + this.props.profile.email, className: 'item-title' },\n            this.props.profile.email\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFollowButton',\n    value: function getFollowButton() {\n      if (this.props.profile.acl.can_follow) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_followButton2.default, { className: 'btn btn-aligned hidden-xs hidden-sm',\n          profile: this.props.profile });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getModerationButton',\n    value: function getModerationButton() {\n      if (this.props.profile.acl.can_moderate) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'btn-group btn-aligned hidden-xs hidden-sm' },\n          _react2.default.createElement(\n            'button',\n            { className: 'btn btn-default btn-moderate dropdown-toggle',\n              type: 'button',\n              'data-toggle': 'dropdown',\n              'aria-haspopup': 'true',\n              'aria-expanded': 'false' },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'tonality'\n            ),\n            gettext(\"Moderation\")\n          ),\n          _react2.default.createElement(_nav2.default, { profile: this.props.profile })\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-header' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-9 col-md-offset-3' },\n              _react2.default.createElement(\n                'h1',\n                { className: 'pull-left' },\n                _react2.default.createElement(_avatar2.default, { user: this.props.profile, size: '100' }),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'user-name' },\n                  this.props.profile.username\n                )\n              ),\n              this.getFollowButton(),\n              this.getModerationButton(),\n              _react2.default.createElement(\n                'button',\n                { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',\n                  type: 'button',\n                  onClick: this.props.toggleNav,\n                  'aria-haspopup': 'true',\n                  'aria-expanded': this.props.dropdown ? 'true' : 'false' },\n                _react2.default.createElement(\n                  'i',\n                  { className: 'material-icon' },\n                  'menu'\n                )\n              )\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'header-stats' },\n          _react2.default.createElement(\n            'div',\n            { className: 'container' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-md-9 col-md-offset-3' },\n                _react2.default.createElement(\n                  'ul',\n                  { className: 'list-inline' },\n                  this.getUserStatus(),\n                  this.getUserRank(),\n                  this.getUserTitle(),\n                  this.getJoinedOn(),\n                  this.getEmail()\n                )\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},{\"../avatar\":53,\"../user-status\":104,\"./follow-button\":82,\"./moderation/nav\":88,\"react\":\"react\"}],81:[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\nvar _panelLoader = require('../panel-loader');\n\nvar _panelLoader2 = _interopRequireDefault(_panelLoader);\n\nvar _panelMessage = require('../panel-message');\n\nvar _panelMessage2 = _interopRequireDefault(_panelMessage);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _polls = require('../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nvar _pageTitle = require('../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\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 (_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.update = function (ban) {\n      if (ban.expires_on) {\n        ban.expires_on = (0, _moment2.default)(ban.expires_on);\n      }\n\n      _this.setState({\n        isLoaded: true,\n        error: null,\n\n        ban: ban\n      });\n    };\n\n    _this.error = function (error) {\n      _this.setState({\n        isLoaded: true,\n        error: error.detail,\n        ban: null\n      });\n    };\n\n    if (_index2.default.has('PROFILE_BAN')) {\n      _this.initWithPreloadedData(_index2.default.pop('PROFILE_BAN'));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n\n    _this.startPolling(props.profile.api_url.ban);\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(ban) {\n      if (ban.expires_on) {\n        ban.expires_on = (0, _moment2.default)(ban.expires_on);\n      }\n\n      this.state = {\n        isLoaded: true,\n        ban: ban\n      };\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false\n      };\n    }\n  }, {\n    key: 'startPolling',\n    value: function startPolling(api) {\n      _polls2.default.start({\n        poll: 'ban-details',\n        url: api,\n        frequency: 90 * 1000,\n        update: this.update,\n        error: this.error\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'componentDidMount',\n\n    /* jshint ignore:end */\n\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: gettext(\"Ban details\"),\n        parent: this.props.profile.username\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      _polls2.default.stop('ban-details');\n    }\n  }, {\n    key: 'getUserMessage',\n    value: function getUserMessage() {\n      if (this.state.ban.user_message) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'panel-body ban-message ban-user-message' },\n          _react2.default.createElement(\n            'h4',\n            null,\n            gettext(\"User-shown ban message\")\n          ),\n          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {\n              __html: this.state.ban.user_message.html\n            } })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getStaffMessage',\n    value: function getStaffMessage() {\n      if (this.state.ban.staff_message) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'panel-body ban-message ban-staff-message' },\n          _react2.default.createElement(\n            'h4',\n            null,\n            gettext(\"Team-shown ban message\")\n          ),\n          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {\n              __html: this.state.ban.staff_message.html\n            } })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getExpirationMessage',\n    value: function getExpirationMessage() {\n      if (this.state.ban.expires_on) {\n        if (this.state.ban.expires_on.isAfter((0, _moment2.default)())) {\n          /* jshint ignore:start */\n          var _title = interpolate(gettext(\"This ban expires on %(expires_on)s.\"), {\n            'expires_on': this.state.ban.expires_on.format('LL, LT')\n          }, true);\n\n          var message = interpolate(gettext(\"This ban expires %(expires_on)s.\"), {\n            'expires_on': this.state.ban.expires_on.fromNow()\n          }, true);\n\n          return _react2.default.createElement(\n            'abbr',\n            { title: _title },\n            message\n          );\n          /* jshint ignore:end */\n        } else {\n            return gettext(\"This ban has expired.\");\n          }\n      } else {\n        return interpolate(gettext(\"%(username)s's ban is permanent.\"), {\n          'username': this.props.profile.username\n        }, true);\n      }\n    }\n  }, {\n    key: 'getPanelBody',\n    value: function getPanelBody() {\n      if (this.state.ban) {\n        if (Object.keys(this.state.ban).length) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'div',\n            null,\n            this.getUserMessage(),\n            this.getStaffMessage(),\n            _react2.default.createElement(\n              'div',\n              { className: 'panel-body ban-expires' },\n              _react2.default.createElement(\n                'h4',\n                null,\n                gettext(\"Ban expiration\")\n              ),\n              _react2.default.createElement(\n                'p',\n                { className: 'lead' },\n                this.getExpirationMessage()\n              )\n            )\n          );\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'div',\n              null,\n              _react2.default.createElement(_panelMessage2.default, { message: gettext(\"No ban is active at the moment.\") })\n            );\n            /* jshint ignore:end */\n          }\n      } else if (this.state.error) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'div',\n            null,\n            _react2.default.createElement(_panelMessage2.default, { icon: 'error_outline',\n              message: this.state.error })\n          );\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'div',\n              null,\n              _react2.default.createElement(_panelLoader2.default, null)\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: 'profile-ban-details' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Ban details\")\n            )\n          ),\n          this.getPanelBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":121,\"../../services/page-title\":135,\"../../services/polls\":136,\"../panel-loader\":77,\"../panel-message\":78,\"moment\":\"moment\",\"react\":\"react\"}],82:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _profile = require('../../reducers/profile');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\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.action = function () {\n      _this.setState({\n        isLoading: true\n      });\n\n      if (_this.props.profile.is_followed) {\n        _store2.default.dispatch((0, _profile.patchProfile)({\n          is_followed: false,\n          followers: _this.props.profile.followers - 1\n        }));\n      } else {\n        _store2.default.dispatch((0, _profile.patchProfile)({\n          is_followed: true,\n          followers: _this.props.profile.followers + 1\n        }));\n      }\n\n      _ajax2.default.post(_this.props.profile.api_url.follow).then(function (data) {\n        _this.setState({\n          isLoading: false\n        });\n\n        _store2.default.dispatch((0, _profile.patchProfile)(data));\n      }, function (rejection) {\n        _this.setState({\n          isLoading: false\n        });\n        _snackbar2.default.apiError(rejection);\n      });\n    };\n\n    _this.state = {\n      isLoading: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.props.profile.is_followed) {\n        return this.props.className + ' btn-default btn-following';\n      } else {\n        return this.props.className + ' btn-default btn-follow';\n      }\n    }\n  }, {\n    key: 'getIcon',\n    value: function getIcon() {\n      if (this.props.profile.is_followed) {\n        return 'favorite';\n      } else {\n        return 'favorite_border';\n      }\n    }\n  }, {\n    key: 'getLabel',\n    value: function getLabel() {\n      if (this.props.profile.is_followed) {\n        return gettext(\"Following\");\n      } else {\n        return gettext(\"Follow\");\n      }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        _button2.default,\n        { className: this.getClassName(),\n          disabled: this.state.isLoading,\n          onClick: this.action },\n        _react2.default.createElement(\n          'span',\n          { className: 'material-icon' },\n          this.getIcon()\n        ),\n        this.getLabel()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../reducers/profile\":123,\"../../services/ajax\":128,\"../../services/snackbar\":137,\"../../services/store\":138,\"../button\":55,\"react\":\"react\"}],83:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _search = require('../search');\n\nvar _search2 = _interopRequireDefault(_search);\n\nvar _root = require('../users-list/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _users = require('../../reducers/users');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _pageTitle = require('../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.loadMore = function () {\n      _this.setState({\n        isBusy: true\n      });\n\n      _this.loadUsers(_this.state.page + 1, _this.state.search);\n    };\n\n    _this.search = function (ev) {\n      _this.setState({\n        isLoaded: false,\n        isBusy: true,\n\n        search: ev.target.value,\n\n        count: 0,\n        more: 0,\n\n        page: 1,\n        pages: 1\n      });\n\n      _this.loadUsers(1, ev.target.value);\n    };\n\n    _this.setSpecialProps();\n\n    if (_index2.default.has(_this.PRELOADED_DATA_KEY)) {\n      _this.initWithPreloadedData(_index2.default.pop(_this.PRELOADED_DATA_KEY));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'setSpecialProps',\n    value: function setSpecialProps() {\n      this.PRELOADED_DATA_KEY = 'PROFILE_FOLLOWERS';\n      this.TITLE = gettext('Followers');\n      this.API_FILTER = 'followers';\n    }\n  }, {\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(data) {\n      this.state = {\n        isLoaded: true,\n        isBusy: false,\n\n        search: '',\n\n        count: data.count,\n        more: data.more,\n\n        page: data.page,\n        pages: data.pages\n      };\n\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false,\n        isBusy: false,\n\n        search: '',\n\n        count: 0,\n        more: 0,\n\n        page: 1,\n        pages: 1\n      };\n\n      this.loadUsers();\n    }\n  }, {\n    key: 'loadUsers',\n    value: function loadUsers() {\n      var _ajax$get,\n          _this2 = this;\n\n      var page = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0];\n      var search = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n      _ajax2.default.get(_index2.default.get('USERS_API'), (_ajax$get = {}, _defineProperty(_ajax$get, this.API_FILTER, this.props.profile.id), _defineProperty(_ajax$get, 'name', search), _defineProperty(_ajax$get, 'page', page || 1), _ajax$get), 'user-' + this.API_FILTER).then(function (data) {\n        if (page === 1) {\n          _store2.default.dispatch((0, _users.dehydrate)(data.results));\n        } else {\n          _store2.default.dispatch((0, _users.append)(data.results));\n        }\n\n        _this2.setState({\n          isLoaded: true,\n          isBusy: false,\n\n          count: data.count,\n          more: data.more,\n\n          page: data.page,\n          pages: data.pages\n        });\n      }, function (rejection) {\n        _snackbar2.default.apiError(rejection);\n      });\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: this.TITLE,\n        parent: this.props.profile.username\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getLabel',\n\n    /* jshint ignore:end */\n\n    value: function getLabel() {\n      if (!this.state.isLoaded) {\n        return gettext('Loading...');\n      } else if (this.state.search) {\n        var message = ngettext(\"Found %(users)s user.\", \"Found %(users)s users.\", this.state.count);\n\n        return interpolate(message, {\n          'users': this.state.count\n        }, true);\n      } else if (this.props.profile.id === this.props.user.id) {\n        var message = ngettext(\"You have %(users)s follower.\", \"You have %(users)s followers.\", this.state.count);\n\n        return interpolate(message, {\n          'users': this.state.count\n        }, true);\n      } else {\n        var message = ngettext(\"%(username)s has %(users)s follower.\", \"%(username)s has %(users)s followers.\", this.state.count);\n\n        return interpolate(message, {\n          'username': this.props.profile.username,\n          'users': this.state.count\n        }, true);\n      }\n    }\n  }, {\n    key: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      if (this.state.search) {\n        return gettext(\"Search returned no users matching specified criteria.\");\n      } else if (this.props.user.id === this.props.profile.id) {\n        return gettext(\"You have no followers.\");\n      } else {\n        return interpolate(gettext(\"%(username)s has no followers.\"), {\n          'username': this.props.profile.username\n        }, true);\n      }\n    }\n  }, {\n    key: 'getMoreButton',\n    value: function getMoreButton() {\n      if (this.state.more) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'pager-more' },\n          _react2.default.createElement(\n            _button2.default,\n            { loading: this.state.isBusy,\n              onClick: this.loadMore },\n            interpolate(gettext(\"Show more (%(more)s)\"), {\n              'more': this.state.more\n            }, true)\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getListBody',\n    value: function getListBody() {\n      if (this.state.isLoaded && this.state.count === 0) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'p',\n          { className: 'lead' },\n          this.getEmptyMessage()\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'div',\n            null,\n            _react2.default.createElement(_root2.default, { isLoaded: this.state.isLoaded,\n              users: this.props.users,\n              showRank: true,\n              cols: 2 }),\n            this.getMoreButton()\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      return 'profile-' + this.API_FILTER;\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          'nav',\n          { className: 'toolbar' },\n          _react2.default.createElement(\n            'h3',\n            { className: 'toolbar-left' },\n            this.getLabel()\n          ),\n          _react2.default.createElement(_search2.default, { className: 'toolbar-right',\n            value: this.state.search,\n            onChange: this.search,\n            placeholder: gettext(\"Search history...\") })\n        ),\n        this.getListBody()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":121,\"../../reducers/users\":127,\"../../services/ajax\":128,\"../../services/page-title\":135,\"../../services/snackbar\":137,\"../../services/store\":138,\"../button\":55,\"../search\":97,\"../users-list/root\":106,\"react\":\"react\"}],84:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _followers = require('./followers');\n\nvar _followers2 = _interopRequireDefault(_followers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\nvar _class = function (_Followers) {\n  _inherits(_class, _Followers);\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: 'setSpecialProps',\n    value: function setSpecialProps() {\n      this.PRELOADED_DATA_KEY = 'PROFILE_FOLLOWS';\n      this.TITLE = gettext('Follows');\n      this.API_FILTER = 'follows';\n    }\n  }, {\n    key: 'getLabel',\n    value: function getLabel() {\n      if (!this.state.isLoaded) {\n        return gettext('Loading...');\n      } else if (this.state.search) {\n        var message = ngettext(\"Found %(users)s user.\", \"Found %(users)s users.\", this.state.count);\n\n        return interpolate(message, {\n          'users': this.state.count\n        }, true);\n      } else if (this.props.profile.id === this.props.user.id) {\n        var message = ngettext(\"You are following %(users)s user.\", \"You are following %(users)s users.\", this.state.count);\n\n        return interpolate(message, {\n          'users': this.state.count\n        }, true);\n      } else {\n        var message = ngettext(\"%(username)s is following %(users)s user.\", \"%(username)s is following %(users)s users.\", this.state.count);\n\n        return interpolate(message, {\n          'username': this.props.profile.username,\n          'users': this.state.count\n        }, true);\n      }\n    }\n  }, {\n    key: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      if (this.state.search) {\n        return gettext(\"Search returned no users matching specified criteria.\");\n      } else if (this.props.user.id === this.props.profile.id) {\n        return gettext(\"You are not following any users.\");\n      } else {\n        return interpolate(gettext(\"%(username)s is not following any users.\"), {\n          'username': this.props.profile.username\n        }, true);\n      }\n    }\n  }]);\n\n  return _class;\n}(_followers2.default);\n\nexports.default = _class;\n\n},{\"./followers\":83,\"react\":\"react\"}],85:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('../../form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('../../form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _modalLoader = require('../../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _yesNoSwitch = require('../../yes-no-switch');\n\nvar _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);\n\nvar _modalMessage = require('../../modal-message');\n\nvar _modalMessage2 = _interopRequireDefault(_modalMessage);\n\nvar _users = require('../../../reducers/users');\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// 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      isLoaded: false,\n      isLoading: false,\n      error: null,\n\n      is_avatar_locked: '',\n      avatar_lock_user_message: '',\n      avatar_lock_staff_message: ''\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      _ajax2.default.get(this.props.profile.api_url.moderate_avatar).then(function (options) {\n        _this2.setState({\n          isLoaded: true,\n\n          is_avatar_locked: options.is_avatar_locked,\n          avatar_lock_user_message: options.avatar_lock_user_message,\n          avatar_lock_staff_message: options.avatar_lock_staff_message\n        });\n      }, function (rejection) {\n        _this2.setState({\n          isLoaded: true,\n          error: rejection.detail\n        });\n      });\n    }\n  }, {\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(this.validate().username[0]);\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.profile.api_url.moderate_avatar, {\n        is_avatar_locked: this.state.is_avatar_locked,\n        avatar_lock_user_message: this.state.avatar_lock_user_message,\n        avatar_lock_staff_message: this.state.avatar_lock_staff_message\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      _store2.default.dispatch((0, _users.updateAvatar)(this.props.profile, apiResponse.avatar_hash));\n      _snackbar2.default.success(gettext(\"Avatar controls have been changed.\"));\n    }\n  }, {\n    key: 'getFormBody',\n    value: function getFormBody() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body' },\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"Lock avatar\"),\n              helpText: gettext(\"Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one.\"),\n              'for': 'id_is_avatar_locked' },\n            _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_is_avatar_locked',\n              disabled: this.state.isLoading,\n              iconOn: 'lock_outline',\n              iconOff: 'lock_open',\n              labelOn: gettext(\"Disallow user from changing avatar\"),\n              labelOff: gettext(\"Allow user to change avatar\"),\n              onChange: this.bindInput('is_avatar_locked'),\n              value: this.state.is_avatar_locked })\n          ),\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"User message\"),\n              helpText: gettext(\"Optional message for user explaining why he/she is prohibited form changing avatar.\"),\n              'for': 'id_avatar_lock_user_message' },\n            _react2.default.createElement('textarea', { id: 'id_avatar_lock_user_message',\n              className: 'form-control',\n              rows: '4',\n              disabled: this.state.isLoading,\n              onChange: this.bindInput('avatar_lock_user_message'),\n              value: this.state.avatar_lock_user_message })\n          ),\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"Staff message\"),\n              helpText: gettext(\"Optional message for forum team members explaining why user is prohibited form changing avatar.\"),\n              'for': 'id_avatar_lock_staff_message' },\n            _react2.default.createElement('textarea', { id: 'id_avatar_lock_staff_message',\n              className: 'form-control',\n              rows: '4',\n              disabled: this.state.isLoading,\n              onChange: this.bindInput('avatar_lock_staff_message'),\n              value: this.state.avatar_lock_staff_message })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-default', 'data-dismiss': 'modal' },\n            gettext(\"Close\")\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary', loading: this.state.isLoading },\n            gettext(\"Save changes\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getModalBody',\n    value: function getModalBody() {\n      if (this.state.error) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',\n          message: this.state.error });\n        /* jshint ignore:end */\n      } else if (this.state.isLoaded) {\n          return this.getFormBody();\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.error) {\n        return \"modal-dialog modal-message modal-avatar-controls\";\n      } else {\n        return \"modal-dialog modal-avatar-controls\";\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(\"Avatar controls\")\n            )\n          ),\n          this.getModalBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../reducers/users\":127,\"../../../services/ajax\":128,\"../../../services/snackbar\":137,\"../../../services/store\":138,\"../../button\":55,\"../../form\":62,\"../../form-group\":61,\"../../modal-loader\":65,\"../../modal-message\":66,\"../../yes-no-switch\":120,\"react\":\"react\"}],86:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\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 _modalLoader = require('../../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _modalMessage = require('../../modal-message');\n\nvar _modalMessage2 = _interopRequireDefault(_modalMessage);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory = require('../../../reducers/username-history');\n\nvar _users = require('../../../reducers/users');\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\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// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_Form) {\n  _inherits(_class, _Form);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.state = {\n      isLoaded: false,\n      isLoading: false,\n      error: null,\n\n      username: '',\n      validators: {\n        username: [validators.usernameContent(), validators.usernameMinLength(_index2.default.get('SETTINGS')), validators.usernameMaxLength(_index2.default.get('SETTINGS'))]\n      }\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      _ajax2.default.get(this.props.profile.api_url.moderate_username).then(function () {\n        _this2.setState({\n          isLoaded: true\n        });\n      }, function (rejection) {\n        _this2.setState({\n          isLoaded: true,\n          error: rejection.detail\n        });\n      });\n    }\n  }, {\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(this.validate().username[0]);\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.profile.api_url.moderate_username, {\n        username: this.state.username\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.setState({\n        username: ''\n      });\n\n      _store2.default.dispatch((0, _usernameHistory.addNameChange)(apiResponse, this.props.profile, this.props.user));\n      _store2.default.dispatch((0, _users.updateUsername)(this.props.profile, apiResponse.username, apiResponse.slug));\n\n      _snackbar2.default.success(gettext(\"Username has been changed.\"));\n    }\n  }, {\n    key: 'getFormBody',\n    value: function getFormBody() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body' },\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"New username\"), 'for': 'id_username' },\n            _react2.default.createElement('input', { type: 'text', id: 'id_username', className: 'form-control',\n              disabled: this.state.isLoading,\n              onChange: this.bindInput('username'),\n              value: this.state.username })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-default', 'data-dismiss': 'modal' },\n            gettext(\"Close\")\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary', loading: this.state.isLoading },\n            gettext(\"Change username\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getModalBody',\n    value: function getModalBody() {\n      if (this.state.error) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',\n          message: this.state.error });\n        /* jshint ignore:end */\n      } else if (this.state.isLoaded) {\n          return this.getFormBody();\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.error) {\n        return \"modal-dialog modal-message modal-rename-user\";\n      } else {\n        return \"modal-dialog modal-rename-user\";\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 username\")\n            )\n          ),\n          this.getModalBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../index\":121,\"../../../reducers/username-history\":126,\"../../../reducers/users\":127,\"../../../services/ajax\":128,\"../../../services/snackbar\":137,\"../../../services/store\":138,\"../../../utils/validators\":148,\"../../button\":55,\"../../form\":62,\"../../form-group\":61,\"../../modal-loader\":65,\"../../modal-message\":66,\"react\":\"react\"}],87:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\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 _modalLoader = require('../../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _modalMessage = require('../../modal-message');\n\nvar _modalMessage2 = _interopRequireDefault(_modalMessage);\n\nvar _yesNoSwitch = require('../../yes-no-switch');\n\nvar _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _polls = require('../../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// 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.countdown = function () {\n      window.setTimeout(function () {\n        if (_this.state.countdown > 1) {\n          _this.setState({\n            countdown: _this.state.countdown - 1\n          });\n          _this.countdown();\n        } else if (!_this.state.confirm) {\n          _this.setState({\n            confirm: true\n          });\n        }\n      }, 1000);\n    };\n\n    _this.state = {\n      isLoaded: false,\n      isLoading: false,\n      isDeleted: false,\n      error: null,\n\n      countdown: 5,\n      confirm: false,\n\n      with_content: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      _ajax2.default.get(this.props.profile.api_url.delete).then(function () {\n        _this2.setState({\n          isLoaded: true\n        });\n\n        _this2.countdown();\n      }, function (rejection) {\n        _this2.setState({\n          isLoaded: true,\n          error: rejection.detail\n        });\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'send',\n\n    /* jshint ignore:end */\n\n    value: function send() {\n      return _ajax2.default.post(this.props.profile.api_url.delete, {\n        with_content: this.state.with_content\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess() {\n      _polls2.default.stop('user-profile');\n\n      if (this.state.with_content) {\n        this.setState({\n          isDeleted: interpolate(gettext(\"%(username)s's account, threads, posts and other content has been deleted.\"), {\n            'username': this.props.profile.username\n          }, true)\n        });\n      } else {\n        this.setState({\n          isDeleted: interpolate(gettext(\"%(username)s's account has been deleted and other content has been hidden.\"), {\n            'username': this.props.profile.username\n          }, true)\n        });\n      }\n    }\n  }, {\n    key: 'getButtonLabel',\n    value: function getButtonLabel() {\n      if (this.state.confirm) {\n        return interpolate(gettext(\"Delete %(username)s\"), {\n          'username': this.props.profile.username\n        }, true);\n      } else {\n        return interpolate(gettext(\"Please wait... (%(countdown)ss)\"), {\n          'countdown': this.state.countdown\n        }, true);\n      }\n    }\n  }, {\n    key: 'getForm',\n    value: function getForm() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body' },\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"User content\"),\n              labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n              'for': 'id_with_content' },\n            _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_with_content',\n              disabled: this.state.isLoading,\n              labelOn: gettext(\"Delete together with user's account\"),\n              labelOff: gettext(\"Hide after deleting user's account\"),\n              onChange: this.bindInput('with_content'),\n              value: this.state.with_content })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button',\n              className: 'btn btn-default',\n              'data-dismiss': 'modal' },\n            gettext(\"Cancel\")\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-danger',\n              loading: this.state.isLoading,\n              disabled: !this.state.confirm },\n            this.getButtonLabel()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getDeletedBody',\n    value: function getDeletedBody() {\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            'info_outline'\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'message-body' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.state.isDeleted\n          ),\n          _react2.default.createElement(\n            'p',\n            null,\n            _react2.default.createElement(\n              'a',\n              { href: _index2.default.get('USERS_LIST_URL') },\n              gettext(\"Return to users list\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getModalBody',\n    value: function getModalBody() {\n      if (this.state.error) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',\n          message: this.state.error });\n        /* jshint ignore:end */\n      } else if (this.state.isLoaded) {\n          if (this.state.isDeleted) {\n            return this.getDeletedBody();\n          } else {\n            return this.getForm();\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.error || this.state.isDeleted) {\n        return \"modal-dialog modal-message modal-delete-account\";\n      } else {\n        return \"modal-dialog modal-delete-account\";\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(\"Delete user account\")\n            )\n          ),\n          this.getModalBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../index\":121,\"../../../services/ajax\":128,\"../../../services/polls\":136,\"../../button\":55,\"../../form\":62,\"../../form-group\":61,\"../../modal-loader\":65,\"../../modal-message\":66,\"../../yes-no-switch\":120,\"react\":\"react\"}],88:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _avatarControls = require('./avatar-controls');\n\nvar _avatarControls2 = _interopRequireDefault(_avatarControls);\n\nvar _changeUsername = require('./change-username');\n\nvar _changeUsername2 = _interopRequireDefault(_changeUsername);\n\nvar _deleteAccount = require('./delete-account');\n\nvar _deleteAccount2 = _interopRequireDefault(_deleteAccount);\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// jshint ignore:line\n\n// jshint ignore:line\n\n/* jshint ignore:start */\nvar select = function select(store) {\n  return {\n    tick: store.tick,\n    user: store.auth,\n    profile: store.profile\n  };\n};\n/* jshint ignore:end */\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.showAvatarDialog = function () {\n      _modal2.default.show((0, _reactRedux.connect)(select)(_avatarControls2.default));\n    }, _this.showRenameDialog = function () {\n      _modal2.default.show((0, _reactRedux.connect)(select)(_changeUsername2.default));\n    }, _this.showDeleteDialog = function () {\n      _modal2.default.show((0, _reactRedux.connect)(select)(_deleteAccount2.default));\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'getAvatarButton',\n\n    /* jshint ignore:end */\n\n    value: function getAvatarButton() {\n      if (this.props.profile.acl.can_moderate_avatar) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link',\n              onClick: this.showAvatarDialog },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'portrait'\n            ),\n            gettext(\"Avatar controls\")\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getRenameButton',\n\n    /* jshint ignore:end */\n\n    value: function getRenameButton() {\n      if (this.props.profile.acl.can_rename) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link',\n              onClick: this.showRenameDialog },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'credit_card'\n            ),\n            gettext(\"Change username\")\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getDeleteButton',\n\n    /* jshint ignore:end */\n\n    value: function getDeleteButton() {\n      if (this.props.profile.acl.can_delete) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link',\n              onClick: this.showDeleteDialog },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'clear'\n            ),\n            gettext(\"Delete 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        'ul',\n        { className: 'dropdown-menu dropdown-menu-right', role: 'menu' },\n        this.getAvatarButton(),\n        this.getRenameButton(),\n        this.getDeleteButton(),\n        _react2.default.createElement('li', { className: 'divider hidden-md hidden-lg' }),\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-buttons hidden-md hidden-lg' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-default btn-block',\n              onClick: this.props.toggleNav },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'menu'\n            ),\n            gettext(\"Menu\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../services/modal\":134,\"./avatar-controls\":85,\"./change-username\":86,\"./delete-account\":87,\"react\":\"react\",\"react-redux\":\"react-redux\"}],89:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactNav = exports.SideNav = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouter = require('react-router');\n\nvar _li = require('../li');\n\nvar _li2 = _interopRequireDefault(_li);\n\nvar _followButton = require('./follow-button');\n\nvar _followButton2 = _interopRequireDefault(_followButton);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n//jshint ignore:line\n// jshint ignore:line\n\n//jshint ignore:line\n\nvar SideNav = exports.SideNav = function (_React$Component) {\n  _inherits(SideNav, _React$Component);\n\n  function SideNav() {\n    _classCallCheck(this, SideNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(SideNav).apply(this, arguments));\n  }\n\n  _createClass(SideNav, [{\n    key: 'getMeta',\n    value: function getMeta(meta) {\n      if (meta) {\n        // jshint ignore:start\n        return _react2.default.createElement(\n          'span',\n          { className: 'badge' },\n          this.props.profile[meta.attr]\n        );\n        // jshint ignore:end\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'div',\n        { className: 'list-group nav-side' },\n        this.props.pages.map(function (page) {\n          return _react2.default.createElement(\n            _reactRouter.Link,\n            { to: _this2.props.baseUrl + page.component + '/',\n              className: 'list-group-item',\n              activeClassName: 'active',\n              key: page.component },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              page.icon\n            ),\n            page.name,\n            _this2.getMeta(page.meta)\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return SideNav;\n}(_react2.default.Component);\n\nvar CompactNav = exports.CompactNav = function (_SideNav) {\n  _inherits(CompactNav, _SideNav);\n\n  function CompactNav() {\n    _classCallCheck(this, CompactNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));\n  }\n\n  _createClass(CompactNav, [{\n    key: 'showSpecialOptions',\n    value: function showSpecialOptions() {\n      return this.props.profile.acl.can_follow || this.props.profile.acl.can_moderate;\n    }\n  }, {\n    key: 'getFollowButton',\n    value: function getFollowButton() {\n      if (this.props.profile.acl.can_follow) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_followButton2.default, { className: 'btn btn-block',\n          profile: this.props.profile });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getModerationButton',\n    value: function getModerationButton() {\n      if (this.props.profile.acl.can_moderate) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'button',\n          { type: 'button', className: 'btn btn-default btn-block',\n            onClick: this.props.toggleModeration },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            'tonality'\n          ),\n          gettext(\"Moderation\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getSpecialOptions',\n    value: function getSpecialOptions() {\n      if (this.showSpecialOptions()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          { className: 'dropdown-buttons' },\n          this.getFollowButton(),\n          this.getModerationButton()\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this4 = this;\n\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu', role: 'menu' },\n        this.getSpecialOptions(),\n        this.showSpecialOptions() ? _react2.default.createElement('li', { className: 'divider' }) : null,\n        this.props.pages.map(function (page) {\n          return _react2.default.createElement(\n            _li2.default,\n            { path: _this4.props.baseUrl + page.component + '/',\n              key: page.component },\n            _react2.default.createElement(\n              _reactRouter.Link,\n              { to: _this4.props.baseUrl + page.component + '/',\n                onClick: _this4.props.hideNav },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                page.icon\n              ),\n              page.name,\n              _this4.getMeta(page.meta)\n            )\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return CompactNav;\n}(SideNav);\n\n},{\"../../index\":121,\"../li\":63,\"./follow-button\":82,\"react\":\"react\",\"react-router\":\"react-router\"}],90:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.select = select;\nexports.paths = paths;\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 _banDetails = require('./ban-details');\n\nvar _banDetails2 = _interopRequireDefault(_banDetails);\n\nvar _followers = require('./followers');\n\nvar _followers2 = _interopRequireDefault(_followers);\n\nvar _follows = require('./follows');\n\nvar _follows2 = _interopRequireDefault(_follows);\n\nvar _usernameHistory = require('./username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _Header = require('./Header');\n\nvar _Header2 = _interopRequireDefault(_Header);\n\nvar _nav = require('./moderation/nav');\n\nvar _nav2 = _interopRequireDefault(_nav);\n\nvar _navs = require('./navs');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _profile = require('../../reducers/profile');\n\nvar _polls = require('../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// 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.update = function (data) {\n      _store2.default.dispatch((0, _profile.dehydrate)(data));\n    };\n\n    _this.toggleNav = function () {\n      if (_this.state.dropdown === 'pages') {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: 'pages'\n        });\n      }\n    };\n\n    _this.toggleModeration = function () {\n      if (_this.state.dropdown === 'moderation') {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: 'moderation'\n        });\n      }\n    };\n\n    _this.hideNav = function () {\n      _this.setState({\n        dropdown: false\n      });\n    };\n\n    _this.state = {\n      dropdown: false\n    };\n\n    _this.startPolling(props.profile.api_url.root);\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'startPolling',\n    value: function startPolling(api) {\n      _polls2.default.start({\n        poll: 'user-profile',\n        url: api,\n        frequency: 90 * 1000,\n        update: this.update\n      });\n    }\n\n    /* jshint ignore:start */\n\n    /* jshint ignore:end */\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getToggleNavClassName',\n\n    /* jshint ignore:end */\n\n    value: function getToggleNavClassName() {\n      if (this.state.dropdown) {\n        return 'btn btn-default btn-icon open';\n      } else {\n        return 'btn btn-default btn-icon';\n      }\n    }\n  }, {\n    key: 'getCompactNavClassName',\n    value: function getCompactNavClassName() {\n      if (this.state.dropdown) {\n        return 'compact-nav open';\n      } else {\n        return 'compact-nav';\n      }\n    }\n  }, {\n    key: 'getNavDropdown',\n    value: function getNavDropdown() {\n      if (this.state.dropdown === 'pages') {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_navs.CompactNav, { pages: _index2.default.get('PROFILE_PAGES'),\n          baseUrl: _index2.default.get('PROFILE').absolute_url,\n          profile: this.props.profile,\n          toggleModeration: this.toggleModeration,\n          hideNav: this.hideNav });\n        /* jshint ignore:end */\n      } else if (this.state.dropdown === 'moderation') {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_nav2.default, { profile: this.props.profile,\n            toggleNav: this.toggleNav,\n            hideNav: this.hideNav });\n          /* jshint ignore:end */\n        } else {\n            return null;\n          }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      var baseClass = 'page page-user-profile';\n      if (false && this.props.profile.rank.css_class) {\n        return baseClass + ' page-user-profile-' + this.props.profile.rank.css_class;\n      } else {\n        return baseClass;\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(_Header2.default, { user: this.props.user,\n          profile: this.props.profile,\n          toggleNav: this.toggleNav,\n          toggleModeration: this.toggleModeration }),\n        _react2.default.createElement(\n          'div',\n          { className: this.getCompactNavClassName() },\n          this.getNavDropdown()\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-3 hidden-xs hidden-sm' },\n              _react2.default.createElement(\n                'div',\n                { className: 'profile-side-avatar' },\n                _react2.default.createElement(_avatar2.default, { user: this.props.profile, size: '400' })\n              ),\n              _react2.default.createElement(_navs.SideNav, { pages: _index2.default.get('PROFILE_PAGES'),\n                baseUrl: _index2.default.get('PROFILE').absolute_url,\n                profile: this.props.profile })\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-9' },\n              this.props.children\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(store) {\n  return {\n    'tick': store.tick.tick,\n    'user': store.auth.user,\n    'users': store.users,\n    'profile': store.profile,\n    'username-history': store['username-history']\n  };\n}\n\nvar Placeholder = function (_React$Component2) {\n  _inherits(Placeholder, _React$Component2);\n\n  function Placeholder() {\n    _classCallCheck(this, Placeholder);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Placeholder).apply(this, arguments));\n  }\n\n  _createClass(Placeholder, [{\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'div',\n        { className: 'container' },\n        _react2.default.createElement(\n          'p',\n          null,\n          \"Hello, I'm placeholder for \" + this.props.route.name\n        )\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return Placeholder;\n}(_react2.default.Component);\n\nvar COMPONENTS = {\n  'posts': Placeholder,\n  'threads': Placeholder,\n  'followers': _followers2.default,\n  'follows': _follows2.default,\n  'username-history': _usernameHistory2.default,\n  'ban-details': _banDetails2.default\n};\n\nfunction paths() {\n  var paths = [];\n\n  _index2.default.get('PROFILE_PAGES').forEach(function (item) {\n    paths.push(Object.assign({}, item, {\n      path: _index2.default.get('PROFILE').absolute_url + item.component + '/',\n      component: (0, _reactRedux.connect)(select)(COMPONENTS[item.component])\n    }));\n  });\n\n  return paths;\n}\n\n},{\"../../index\":121,\"../../reducers/profile\":123,\"../../services/polls\":136,\"../../services/store\":138,\"../avatar\":53,\"./Header\":80,\"./ban-details\":81,\"./followers\":83,\"./follows\":84,\"./moderation/nav\":88,\"./navs\":89,\"./username-history\":91,\"react\":\"react\",\"react-redux\":\"react-redux\"}],91:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _search = require('../search');\n\nvar _search2 = _interopRequireDefault(_search);\n\nvar _usernameHistory = require('../username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory3 = require('../../reducers/username-history');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _pageTitle = require('../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.loadMore = function () {\n      _this.setState({\n        isBusy: true\n      });\n\n      _this.loadChanges(_this.state.page + 1, _this.state.search);\n    };\n\n    _this.search = function (ev) {\n      _this.setState({\n        isLoaded: false,\n        isBusy: true,\n\n        search: ev.target.value,\n\n        count: 0,\n        more: 0,\n\n        page: 1,\n        pages: 1\n      });\n\n      _this.loadChanges(1, ev.target.value);\n    };\n\n    if (_index2.default.has('PROFILE_NAME_HISTORY')) {\n      _this.initWithPreloadedData(_index2.default.pop('PROFILE_NAME_HISTORY'));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(data) {\n      this.state = {\n        isLoaded: true,\n        isBusy: false,\n\n        search: '',\n\n        count: data.count,\n        more: data.more,\n\n        page: data.page,\n        pages: data.pages\n      };\n\n      _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data.results));\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false,\n        isBusy: false,\n\n        search: '',\n\n        count: 0,\n        more: 0,\n\n        page: 1,\n        pages: 1\n      };\n\n      this.loadChanges();\n    }\n  }, {\n    key: 'loadChanges',\n    value: function loadChanges() {\n      var _this2 = this;\n\n      var page = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0];\n      var search = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n      _ajax2.default.get(_index2.default.get('USERNAME_CHANGES_API'), {\n        user: this.props.profile.id,\n        search: search,\n        page: page || 1\n      }, 'search-username-history').then(function (data) {\n        if (page === 1) {\n          _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data.results));\n        } else {\n          _store2.default.dispatch((0, _usernameHistory3.append)(data.results));\n        }\n\n        _this2.setState({\n          isLoaded: true,\n          isBusy: false,\n\n          count: data.count,\n          more: data.more,\n\n          page: data.page,\n          pages: data.pages\n        });\n      }, function (rejection) {\n        _snackbar2.default.apiError(rejection);\n      });\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: gettext(\"Username history\"),\n        parent: this.props.profile.username\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getLabel',\n\n    /* jshint ignore:end */\n\n    value: function getLabel() {\n      if (!this.state.isLoaded) {\n        return gettext('Loading...');\n      } else if (this.state.search) {\n        var message = ngettext(\"Found %(changes)s username change.\", \"Found %(changes)s username changes.\", this.state.count);\n\n        return interpolate(message, {\n          'changes': this.state.count\n        }, true);\n      } else if (this.props.profile.id === this.props.user.id) {\n        var message = ngettext(\"Your username was changed %(changes)s time.\", \"Your username was changed %(changes)s times.\", this.state.count);\n\n        return interpolate(message, {\n          'changes': this.state.count\n        }, true);\n      } else {\n        var message = ngettext(\"%(username)s's username was changed %(changes)s time.\", \"%(username)s's username was changed %(changes)s times.\", this.state.count);\n\n        return interpolate(message, {\n          'username': this.props.profile.username,\n          'changes': this.state.count\n        }, true);\n      }\n    }\n  }, {\n    key: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      if (this.state.search) {\n        return gettext(\"Search returned no username changes matching specified criteria.\");\n      } else if (this.props.user.id === this.props.profile.id) {\n        return gettext(\"No name changes have been recorded for your account.\");\n      } else {\n        return interpolate(gettext(\"%(username)s's username was never changed.\"), {\n          'username': this.props.profile.username\n        }, true);\n      }\n    }\n  }, {\n    key: 'getMoreButton',\n    value: function getMoreButton() {\n      if (this.state.more) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'pager-more' },\n          _react2.default.createElement(\n            _button2.default,\n            { loading: this.state.isBusy,\n              onClick: this.loadMore },\n            interpolate(gettext(\"Show older (%(more)s)\"), {\n              'more': this.state.more\n            }, true)\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: 'profile-username-history' },\n        _react2.default.createElement(\n          'nav',\n          { className: 'toolbar' },\n          _react2.default.createElement(\n            'h3',\n            { className: 'toolbar-left' },\n            this.getLabel()\n          ),\n          _react2.default.createElement(_search2.default, { className: 'toolbar-right',\n            value: this.state.search,\n            onChange: this.search,\n            placeholder: gettext(\"Search history...\") })\n        ),\n        _react2.default.createElement(_usernameHistory2.default, { isLoaded: this.state.isLoaded,\n          emptyMessage: this.getEmptyMessage(),\n          changes: this.props['username-history'] }),\n        this.getMoreButton()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":121,\"../../reducers/username-history\":126,\"../../services/ajax\":128,\"../../services/page-title\":135,\"../../services/snackbar\":137,\"../../services/store\":138,\"../button\":55,\"../search\":97,\"../username-history\":105,\"react\":\"react\"}],92:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\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\":130,\"../services/modal\":134,\"../services/snackbar\":137,\"../services/zxcvbn\":139,\"./loader\":64,\"./register.js\":93,\"react\":\"react\"}],93:[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\":121,\"../services/ajax\":128,\"../services/auth\":129,\"../services/captcha\":130,\"../services/modal\":134,\"../services/snackbar\":137,\"../utils/banned-page\":140,\"../utils/validators\":148,\"./button\":55,\"./form\":62,\"./form-group\":61,\"./password-strength\":79,\"react\":\"react\"}],94:[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\":121,\"../services/ajax\":128,\"../services/snackbar\":137,\"../utils/banned-page\":140,\"../utils/validators\":148,\"./button\":55,\"./form\":62,\"react\":\"react\"}],95:[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\":121,\"../services/ajax\":128,\"../services/snackbar\":137,\"../utils/banned-page\":140,\"../utils/validators\":148,\"./button\":55,\"./form\":62,\"react\":\"react\",\"react-dom\":\"react-dom\"}],96:[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\":121,\"../services/ajax\":128,\"../services/auth\":129,\"../services/modal\":134,\"../services/snackbar\":137,\"../utils/banned-page\":140,\"../utils/validators\":148,\"./button\":55,\"./form\":62,\"./sign-in.js\":99,\"react\":\"react\",\"react-dom\":\"react-dom\"}],97:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\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: \"getClassName\",\n    value: function getClassName() {\n      if (this.props.className) {\n        return \"form-search \" + this.props.className;\n      } else {\n        return \"form-search\";\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(\"input\", { type: \"text\",\n          className: \"form-control\",\n          value: this.props.value,\n          onChange: this.props.onChange,\n          placeholder: this.props.placeholder || gettext(\"Search...\") }),\n        _react2.default.createElement(\n          \"span\",\n          { className: \"material-icon\" },\n          \"search\"\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],98:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.change = function (value) {\n      return function () {\n        _this.props.onChange({\n          target: {\n            value: value\n          }\n        });\n      };\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: \"getChoice\",\n    value: function getChoice() {\n      var _this2 = this;\n\n      var choice = null;\n      this.props.choices.map(function (item) {\n        if (item.value === _this2.props.value) {\n          choice = item;\n        }\n      });\n      return choice;\n    }\n  }, {\n    key: \"getIcon\",\n    value: function getIcon() {\n      return this.getChoice().icon;\n    }\n  }, {\n    key: \"getLabel\",\n    value: function getLabel() {\n      return this.getChoice().label;\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: \"render\",\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      var _this3 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"div\",\n        { className: \"btn-group btn-select-group\" },\n        _react2.default.createElement(\n          \"button\",\n          { type: \"button\",\n            className: \"btn btn-select dropdown-toggle\",\n            id: this.props.id || null,\n            \"data-toggle\": \"dropdown\",\n            \"aria-haspopup\": \"true\",\n            \"aria-expanded\": \"false\",\n            \"aria-describedby\": this.props['aria-describedby'] || null,\n            disabled: this.props.disabled || false },\n          _react2.default.createElement(\n            \"span\",\n            { className: \"material-icon\" },\n            this.getIcon()\n          ),\n          this.getLabel()\n        ),\n        _react2.default.createElement(\n          \"ul\",\n          { className: \"dropdown-menu\" },\n          this.props.choices.map(function (item, i) {\n            return _react2.default.createElement(\n              \"li\",\n              { key: i },\n              _react2.default.createElement(\n                \"button\",\n                { type: \"button\", className: \"btn-link\",\n                  onClick: _this3.change(item.value) },\n                _react2.default.createElement(\n                  \"span\",\n                  { className: \"material-icon\" },\n                  item.icon\n                ),\n                item.label\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],99:[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\":121,\"../services/ajax\":128,\"../services/modal\":134,\"../services/snackbar\":137,\"../utils/banned-page\":140,\"./button\":55,\"./form\":62,\"react\":\"react\"}],100:[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\"}],101:[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\":133,\"../../services/modal\":134,\"../avatar\":53,\"../register-button\":92,\"../sign-in.js\":99,\"react\":\"react\"}],102:[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\":101,\"./user-nav\":103,\"react\":\"react\"}],103:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactUserNav = exports.UserNav = exports.UserMenu = undefined;\nexports.selectUserMenu = selectUserMenu;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _root = require('../change-avatar/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../../services/mobile-navbar-dropdown');\n\nvar _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);\n\nvar _modal = require('../../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar UserMenu = exports.UserMenu = function (_React$Component) {\n  _inherits(UserMenu, _React$Component);\n\n  function UserMenu() {\n    _classCallCheck(this, UserMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserMenu).apply(this, arguments));\n  }\n\n  _createClass(UserMenu, [{\n    key: 'logout',\n    value: function logout() {\n      var decision = confirm(gettext(\"Are you sure you want to sign out?\"));\n      if (decision) {\n        $('#hidden-logout-form').submit();\n      }\n    }\n  }, {\n    key: 'changeAvatar',\n    value: function changeAvatar() {\n      _modal2.default.show((0, _reactRedux.connect)(_root.select)(_root2.default));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu user-dropdown dropdown-menu-right',\n          role: 'menu' },\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-header' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            this.props.user.username\n          )\n        ),\n        _react2.default.createElement('li', { className: 'divider' }),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: this.props.user.absolute_url },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'account_circle'\n            ),\n            gettext(\"See your profile\")\n          )\n        ),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: _index2.default.get('USERCP_URL') },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'done_all'\n            ),\n            gettext(\"Change options\")\n          )\n        ),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link', onClick: this.changeAvatar },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'portrait'\n            ),\n            gettext(\"Change avatar\")\n          )\n        ),\n        _react2.default.createElement('li', { className: 'divider' }),\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-buttons' },\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\":121,\"../../services/mobile-navbar-dropdown\":133,\"../../services/modal\":134,\"../avatar\":53,\"../change-avatar/root\":59,\"react\":\"react\",\"react-redux\":\"react-redux\"}],104:[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.StatusLabel = exports.StatusIcon = undefined;\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: 'getClass',\n    value: function getClass() {\n      var status = '';\n      if (this.props.status.is_banned) {\n        status = 'banned';\n      } else if (this.props.status.is_hidden) {\n        status = 'offline';\n      } else if (this.props.status.is_online_hidden) {\n        status = 'online';\n      } else if (this.props.status.is_offline_hidden) {\n        status = 'offline';\n      } else if (this.props.status.is_online) {\n        status = 'online';\n      } else if (this.props.status.is_offline) {\n        status = 'offline';\n      }\n\n      return 'user-status user-' + status;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'span',\n        { className: this.getClass() },\n        this.props.children\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\nvar StatusIcon = exports.StatusIcon = function (_React$Component2) {\n  _inherits(StatusIcon, _React$Component2);\n\n  function StatusIcon() {\n    _classCallCheck(this, StatusIcon);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(StatusIcon).apply(this, arguments));\n  }\n\n  _createClass(StatusIcon, [{\n    key: 'getIcon',\n    value: function getIcon() {\n      if (this.props.status.is_banned) {\n        return 'remove_circle_outline';\n      } else if (this.props.status.is_hidden) {\n        return 'help_outline';\n      } else if (this.props.status.is_online_hidden) {\n        return 'label';\n      } else if (this.props.status.is_offline_hidden) {\n        return 'label_outline';\n      } else if (this.props.status.is_online) {\n        return 'lens';\n      } else if (this.props.status.is_offline) {\n        return 'panorama_fish_eye';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'span',\n        { className: 'material-icon status-icon' },\n        this.getIcon()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return StatusIcon;\n}(_react2.default.Component);\n\nvar StatusLabel = exports.StatusLabel = function (_React$Component3) {\n  _inherits(StatusLabel, _React$Component3);\n\n  function StatusLabel() {\n    _classCallCheck(this, StatusLabel);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(StatusLabel).apply(this, arguments));\n  }\n\n  _createClass(StatusLabel, [{\n    key: 'getHelp',\n    value: function getHelp() {\n      if (this.props.status.is_banned) {\n        if (this.props.status.banned_until) {\n          return interpolate(gettext(\"%(username)s is banned until %(ban_expires)s\"), {\n            username: this.props.user.username,\n            ban_expires: this.props.status.banned_until.format('LL, LT')\n          }, true);\n        } else {\n          return interpolate(gettext(\"%(username)s is banned\"), {\n            username: this.props.user.username\n          }, true);\n        }\n      } else if (this.props.status.is_hidden) {\n        return interpolate(gettext(\"%(username)s is hiding presence\"), {\n          username: this.props.user.username\n        }, true);\n      } else if (this.props.status.is_online_hidden) {\n        return interpolate(gettext(\"%(username)s is online (hidden)\"), {\n          username: this.props.user.username\n        }, true);\n      } else if (this.props.status.is_offline_hidden) {\n        return interpolate(gettext(\"%(username)s was last seen %(last_click)s (hidden)\"), {\n          username: this.props.user.username,\n          last_click: this.props.status.last_click.fromNow()\n        }, true);\n      } else if (this.props.status.is_online) {\n        return interpolate(gettext(\"%(username)s is online\"), {\n          username: this.props.user.username\n        }, true);\n      } else if (this.props.status.is_offline) {\n        return interpolate(gettext(\"%(username)s was last seen %(last_click)s\"), {\n          username: this.props.user.username,\n          last_click: this.props.status.last_click.fromNow()\n        }, true);\n      }\n    }\n  }, {\n    key: 'getLabel',\n    value: function getLabel() {\n      if (this.props.status.is_banned) {\n        return gettext(\"Banned\");\n      } else if (this.props.status.is_hidden) {\n        return gettext(\"Hidden\");\n      } else if (this.props.status.is_online_hidden) {\n        return gettext(\"Online (hidden)\");\n      } else if (this.props.status.is_offline_hidden) {\n        return gettext(\"Offline (hidden)\");\n      } else if (this.props.status.is_online) {\n        return gettext(\"Online\");\n      } else if (this.props.status.is_offline) {\n        return gettext(\"Offline\");\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'span',\n        { className: this.props.className || \"status-label\",\n          title: this.getHelp() },\n        this.getLabel()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return StatusLabel;\n}(_react2.default.Component);\n\n},{\"react\":\"react\"}],105:[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 _random = require('../utils/random');\n\nvar random = _interopRequireWildcard(_random);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar _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: 'renderUserAvatar',\n    value: function renderUserAvatar(item) {\n      if (item.changed_by) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: item.changed_by.absolute_url, className: 'user-avatar' },\n          _react2.default.createElement(_avatar2.default, { user: item.changed_by, size: '100' })\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'user-avatar' },\n            _react2.default.createElement(_avatar2.default, { size: '100' })\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'renderUsername',\n    value: function renderUsername(item) {\n      if (item.changed_by) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: item.changed_by.absolute_url, className: 'item-title' },\n          item.changed_by.username\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'item-title' },\n            item.changed_by_username\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'renderHistory',\n    value: function renderHistory() {\n      var _this2 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-ready' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          this.props.changes.map(function (item) {\n            return _react2.default.createElement(\n              'li',\n              { className: 'list-group-item', key: item.id },\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-avatar' },\n                _this2.renderUserAvatar(item)\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-author' },\n                _this2.renderUsername(item)\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change' },\n                item.old_username,\n                _react2.default.createElement(\n                  'span',\n                  { className: 'material-icon' },\n                  'arrow_forward'\n                ),\n                item.new_username\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-date' },\n                _react2.default.createElement(\n                  'abbr',\n                  { title: item.changed_on.format('LLL') },\n                  item.changed_on.fromNow()\n                )\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      if (this.props.emptyMessage) {\n        return this.props.emptyMessage;\n      } else {\n        return gettext(\"No name changes have been recorded for your account.\");\n      }\n    }\n  }, {\n    key: 'renderEmptyHistory',\n    value: function renderEmptyHistory() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-ready' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          _react2.default.createElement(\n            'li',\n            { className: 'list-group-item empty-message' },\n            this.getEmptyMessage()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderHistoryPreview',\n    value: function renderHistoryPreview() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-preview' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          random.range(3, 5).map(function (i) {\n            return _react2.default.createElement(\n              'li',\n              { className: 'list-group-item', key: i },\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-avatar' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'user-avatar' },\n                  _react2.default.createElement(_avatar2.default, { size: '100' })\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-author' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 100) + \"px\" } },\n                  ' '\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                  ' '\n                ),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'material-icon' },\n                  'arrow_forward'\n                ),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                  ' '\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-date' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(50, 100) + \"px\" } },\n                  ' '\n                )\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      if (this.props.isLoaded) {\n        if (this.props.changes.length) {\n          return this.renderHistory();\n        } else {\n          return this.renderEmptyHistory();\n        }\n      } else {\n        return this.renderHistoryPreview();\n      }\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../utils/random\":145,\"./avatar\":53,\"react\":\"react\"}],106:[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 _userCard = require('./user-card');\n\nvar _userCard2 = _interopRequireDefault(_userCard);\n\nvar _userPreview = require('./user-preview');\n\nvar _userPreview2 = _interopRequireDefault(_userPreview);\n\nvar _batch = require('../../utils/batch');\n\nvar _batch2 = _interopRequireDefault(_batch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n\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: 'getPager',\n    value: function getPager() {\n      if (this.props.pages > 1) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(Pager, this.props);\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.props.className) {\n        return \"users-cards-list \" + this.props.className + \" ui-ready\";\n      } else {\n        return \"users-cards-list ui-ready\";\n      }\n    }\n  }, {\n    key: 'getColClassName',\n    value: function getColClassName() {\n      return \"col-md-\" + 12 / this.props.cols;\n    }\n  }, {\n    key: 'getBody',\n    value: function getBody() {\n      var _this2 = this;\n\n      if (this.props.isLoaded) {\n        /* jshint ignore:start */\n        return (0, _batch2.default)(this.props.users, this.props.cols).map(function (row, r) {\n          return _react2.default.createElement(\n            'div',\n            { className: 'row', key: r },\n            row.map(function (user) {\n              return _react2.default.createElement(\n                'div',\n                { className: _this2.getColClassName(), key: user.id },\n                _react2.default.createElement(_userCard2.default, { user: user,\n                  showStatus: _this2.props.showStatus,\n                  showRank: _this2.props.showRank })\n              );\n            })\n          );\n        });\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          var row = [];\n          for (var i = 0; i < this.props.cols; i++) {\n            row.push(i);\n          }\n\n          return _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            row.map(function (i) {\n              return _react2.default.createElement(\n                'div',\n                { className: _this2.getColClassName(), key: i },\n                _react2.default.createElement(_userPreview2.default, { showStatus: _this2.props.showStatus })\n              );\n            })\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: 'users-cards-list ui-ready' },\n        this.getBody()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../utils/batch\":141,\"./user-card\":107,\"./user-preview\":108,\"react\":\"react\"}],107:[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 _userStatus = require('../user-status');\n\nvar _userStatus2 = _interopRequireDefault(_userStatus);\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 _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: 'getClassName',\n    value: function getClassName() {\n      if (this.props.user.rank.css_class) {\n        return 'user-card user-card-' + this.props.user.rank.css_class + ' ui-ready';\n      } else {\n        return 'user-card ui-ready';\n      }\n    }\n  }, {\n    key: 'getUserStatus',\n    value: function getUserStatus() {\n      if (this.props.showStatus) {\n        if (this.props.user.status) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            _userStatus2.default,\n            { user: this.props.user, status: this.props.user.status },\n            _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.user,\n              status: this.props.user.status }),\n            _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.user,\n              status: this.props.user.status,\n              className: 'status-label' })\n          );\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'span',\n              { className: 'user-status' },\n              _react2.default.createElement(\n                'span',\n                { className: 'status-icon ui-preview' },\n                ' '\n              ),\n              _react2.default.createElement(\n                'span',\n                { className: 'status-label ui-preview' },\n                ' '\n              )\n            );\n            /* jshint ignore:end */\n          }\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getRankName',\n    value: function getRankName() {\n      if (this.props.showRank) {\n        if (this.props.user.rank.is_tab) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'a',\n            { href: this.props.user.rank.absolute_url,\n              className: 'item-title rank-name' },\n            this.props.user.rank.name\n          );\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'span',\n              { className: 'item-title rank-name' },\n              this.props.user.rank.name\n            );\n            /* jshint ignore:end */\n          }\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getUserTitle',\n    value: function getUserTitle() {\n      if (this.props.user.title) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'user-title' },\n          this.props.user.title\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getUserJoinedOn',\n    value: function getUserJoinedOn() {\n      /* jshint ignore:start */\n      var title = interpolate(gettext(\"Joined on %(joined_on)s\"), {\n        'joined_on': this.props.user.joined_on.format('LL, LT')\n      }, true);\n\n      var age = interpolate(gettext(\"Joined %(joined_on)s\"), {\n        'joined_on': this.props.user.joined_on.fromNow()\n      }, true);\n\n      return _react2.default.createElement(\n        'span',\n        { className: 'user-joined-on', title: title },\n        age\n      );\n      /* jshint ignore:end */\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: 'user-card-bg-image' },\n          _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '400', className: 'bg-image' }),\n          _react2.default.createElement(\n            'div',\n            { className: 'user-card-bg' },\n            _react2.default.createElement(\n              'div',\n              { className: 'user-details' },\n              _react2.default.createElement(\n                'div',\n                { className: 'user-avatar' },\n                _react2.default.createElement(\n                  'a',\n                  { href: this.props.user.absolute_url },\n                  _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '400' })\n                )\n              ),\n              _react2.default.createElement(\n                'h4',\n                { className: 'user-name' },\n                _react2.default.createElement(\n                  'a',\n                  { href: this.props.user.absolute_url, className: 'item-title' },\n                  this.props.user.username\n                )\n              ),\n              _react2.default.createElement(\n                'p',\n                { className: 'user-subscript' },\n                this.getUserStatus(),\n                this.getRankName(),\n                this.getUserTitle(),\n                this.getUserJoinedOn()\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'user-card-stats' },\n              _react2.default.createElement(\n                'ul',\n                { className: 'list-unstyled' },\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-posts-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    this.props.user.posts\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"posts\")\n                  )\n                ),\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-threads-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    this.props.user.threads\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"threads\")\n                  )\n                ),\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-followers-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    this.props.user.followers\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"followers\")\n                  )\n                )\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},{\"../avatar\":53,\"../user-status\":104,\"react\":\"react\"}],108:[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 _random = require('../../utils/random');\n\nvar random = _interopRequireWildcard(_random);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar _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: 'getUserStatus',\n    value: function getUserStatus() {\n      if (this.props.showStatus) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'user-status' },\n          _react2.default.createElement(\n            'span',\n            { className: 'status-icon ui-preview' },\n            ' '\n          ),\n          _react2.default.createElement(\n            'span',\n            { className: 'status-label ui-preview' },\n            ' '\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: 'user-card ui-preview' },\n        _react2.default.createElement(\n          'div',\n          { className: 'user-card-bg-image' },\n          _react2.default.createElement(_avatar2.default, { size: '400', className: 'bg-image' }),\n          _react2.default.createElement(\n            'div',\n            { className: 'user-card-bg' },\n            _react2.default.createElement(\n              'div',\n              { className: 'user-details' },\n              _react2.default.createElement(\n                'div',\n                { className: 'user-avatar' },\n                _react2.default.createElement(_avatar2.default, { size: '400' })\n              ),\n              _react2.default.createElement(\n                'h4',\n                { className: 'user-name' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'item-title' },\n                  _react2.default.createElement(\n                    'span',\n                    { className: 'ui-preview-text', style: { width: random.int(60, 150) + \"px\" } },\n                    ' '\n                  )\n                )\n              ),\n              _react2.default.createElement(\n                'p',\n                { className: 'user-subscript' },\n                this.getUserStatus(),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'user-joined-on' },\n                  _react2.default.createElement(\n                    'span',\n                    { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                    ' '\n                  )\n                )\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'user-card-stats' },\n              _react2.default.createElement(\n                'ul',\n                { className: 'list-unstyled' },\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-posts-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'ui-preview-text' },\n                      ' '\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"posts\")\n                  )\n                ),\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-threads-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'ui-preview-text' },\n                      ' '\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"threads\")\n                  )\n                ),\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-followers-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'ui-preview-text' },\n                      ' '\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"followers\")\n                  )\n                )\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},{\"../../utils/random\":145,\"../avatar\":53,\"react\":\"react\"}],109:[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: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      return interpolate(gettext(\"No users have posted any new messages during last %(days)s days.\"), { 'days': this.props.trackedPeriod }, true);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'active-posters-list' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.getEmptyMessage()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],110:[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 _reactRouter = require('react-router');\n\nvar _avatar = require('../../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _userStatus = require('../../user-status');\n\nvar _userStatus2 = _interopRequireDefault(_userStatus);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\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: 'getClassName',\n    value: function getClassName() {\n      if (this.props.rank.css_class) {\n        return \"list-group-item list-group-rank-\" + this.props.rank.css_class;\n      } else {\n        return \"list-group-item\";\n      }\n    }\n  }, {\n    key: 'getUserStatus',\n    value: function getUserStatus() {\n      if (this.props.user.status) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _userStatus2.default,\n          { user: this.props.user, status: this.props.user.status },\n          _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.user,\n            status: this.props.user.status }),\n          _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.user,\n            status: this.props.user.status,\n            className: 'status-label hidden-xs hidden-sm' })\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'user-status' },\n            _react2.default.createElement(\n              'span',\n              { className: 'status-icon ui-preview' },\n              ' '\n            ),\n            _react2.default.createElement(\n              'span',\n              { className: 'status-label ui-preview hidden-xs hidden-sm' },\n              ' '\n            )\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getRankName',\n    value: function getRankName() {\n      if (this.props.rank.is_tab) {\n        /* jshint ignore:start */\n        var rankUrl = _index2.default.get('USERS_LIST_URL') + this.props.rank.slug + '/';\n        return _react2.default.createElement(\n          _reactRouter.Link,\n          { to: rankUrl, className: 'item-title rank-name' },\n          this.props.rank.name\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'item-title rank-name' },\n            this.props.rank.name\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getUserTitle',\n    value: function getUserTitle() {\n      if (this.props.user.title) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'user-title hidden-xs hidden-sm' },\n          this.props.user.title\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        'li',\n        { className: this.getClassName() },\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-user-avatar' },\n          _react2.default.createElement(\n            'a',\n            { href: this.props.user.absolute_url },\n            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '50' })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-user' },\n          _react2.default.createElement(\n            'div',\n            { className: 'user-name' },\n            _react2.default.createElement(\n              'a',\n              { href: this.props.user.absolute_url, className: 'item-title' },\n              this.props.user.username\n            )\n          ),\n          this.getUserStatus(),\n          this.getRankName(),\n          this.getUserTitle()\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-position' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            '#',\n            this.props.counter\n          ),\n          _react2.default.createElement(\n            'small',\n            null,\n            gettext(\"Rank\")\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-posts-counted' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            this.props.user.meta.score\n          ),\n          _react2.default.createElement(\n            'small',\n            null,\n            gettext(\"Ranked posts\")\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-posts-total' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            this.props.user.posts\n          ),\n          _react2.default.createElement(\n            'small',\n            null,\n            gettext(\"Total posts\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":121,\"../../avatar\":53,\"../../user-status\":104,\"react\":\"react\",\"react-router\":\"react-router\"}],111:[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 _random = require('../../../utils/random');\n\nvar random = _interopRequireWildcard(_random);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar _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: 'active-posters-list' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead ui-preview-paragraph' },\n            random.range(3, 4).map(function (i) {\n              return _react2.default.createElement(\n                'span',\n                { key: i, className: 'ui-preview-text', style: { width: random.int(50, 120) + \"px\" } },\n                ' '\n              );\n            })\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'active-posters ui-preview' },\n            _react2.default.createElement(\n              'ul',\n              { className: 'list-group' },\n              random.range(5, 10).map(function (i, counter) {\n                return _react2.default.createElement(\n                  'li',\n                  { key: i, className: 'list-group-item' },\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-user-avatar' },\n                    _react2.default.createElement(\n                      'span',\n                      null,\n                      _react2.default.createElement(_avatar2.default, { size: '50' })\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-user' },\n                    _react2.default.createElement(\n                      'div',\n                      { className: 'user-name' },\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'item-title' },\n                        _react2.default.createElement(\n                          'span',\n                          { className: 'ui-preview-text', style: { width: random.int(30, 80) + \"px\" } },\n                          ' '\n                        )\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'user-status' },\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'status-icon ui-preview' },\n                        ' '\n                      ),\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'status-label ui-preview hidden-xs hidden-sm' },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'rank-name' },\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'user-title hidden-xs hidden-sm' },\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                        ' '\n                      )\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-position' },\n                    _react2.default.createElement(\n                      'strong',\n                      null,\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: \"30px\" } },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'small',\n                      null,\n                      gettext(\"Rank\")\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-posts-counted' },\n                    _react2.default.createElement(\n                      'strong',\n                      null,\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: \"30px\" } },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'small',\n                      null,\n                      gettext(\"Ranked posts\")\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-posts-total' },\n                    _react2.default.createElement(\n                      'strong',\n                      null,\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: \"30px\" } },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'small',\n                      null,\n                      gettext(\"Total posts\")\n                    )\n                  )\n                );\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},{\"../../../utils/random\":145,\"../../avatar\":53,\"react\":\"react\"}],112:[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 _listItem = require('./list-item');\n\nvar _listItem2 = _interopRequireDefault(_listItem);\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: 'getLeadMessage',\n    value: function getLeadMessage() {\n      var message = ngettext(\"%(posters)s most active poster from last %(days)s days.\", \"%(posters)s most active posters from last %(days)s days.\", this.props.count);\n\n      return interpolate(message, {\n        posters: this.props.count,\n        days: this.props.trackedPeriod\n      }, true);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'active-posters-list' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.getLeadMessage()\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'active-posters ui-ready' },\n            _react2.default.createElement(\n              'ul',\n              { className: 'list-group' },\n              this.props.users.map(function (user, i) {\n                return _react2.default.createElement(_listItem2.default, { user: user,\n                  rank: user.rank,\n                  counter: i + 1,\n                  key: user.id });\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},{\"./list-item\":110,\"react\":\"react\"}],113:[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 _listEmpty = require('./list-empty');\n\nvar _listEmpty2 = _interopRequireDefault(_listEmpty);\n\nvar _listLoading = require('./list-loading');\n\nvar _listLoading2 = _interopRequireDefault(_listLoading);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _users = require('../../../reducers/users');\n\nvar _polls = require('../../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _pageTitle = require('../../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\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.update = function (data) {\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n\n      _this.setState({\n        isLoaded: true,\n\n        trackedPeriod: data.tracked_period,\n        count: data.count\n      });\n    };\n\n    if (_index2.default.has('USERS')) {\n      _this.initWithPreloadedData(_index2.default.pop('USERS'));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n\n    _this.startPolling();\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(data) {\n      this.state = {\n        isLoaded: true,\n\n        trackedPeriod: data.tracked_period,\n        count: data.count\n      };\n\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false\n      };\n    }\n  }, {\n    key: 'startPolling',\n    value: function startPolling() {\n      _polls2.default.start({\n        poll: 'active-posters',\n        url: _index2.default.get('USERS_API'),\n        data: {\n          list: 'active'\n        },\n        frequency: 90 * 1000,\n        update: this.update\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'componentDidMount',\n\n    /* jshint ignore:end */\n\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: this.props.route.extra.name,\n        parent: gettext(\"Users\")\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      _polls2.default.stop('active-posters');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      if (this.state.isLoaded) {\n        if (this.state.count > 0) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_list2.default, { users: this.props.users,\n            trackedPeriod: this.state.trackedPeriod,\n            count: this.state.count });\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(_listEmpty2.default, { trackedPeriod: this.state.trackedPeriod });\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_listLoading2.default, null);\n          /* jshint ignore:end */\n        }\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":121,\"../../../reducers/users\":127,\"../../../services/page-title\":135,\"../../../services/polls\":136,\"../../../services/store\":138,\"./list\":112,\"./list-empty\":109,\"./list-loading\":111,\"react\":\"react\"}],114:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactNav = exports.TabsNav = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouter = require('react-router');\n\nvar _li = require('../li');\n\nvar _li2 = _interopRequireDefault(_li);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n//jshint ignore:line\n\n//jshint ignore:line\n\n// jshint ignore:start\nvar listUrl = function listUrl(baseUrl, list) {\n  var url = baseUrl;\n  if (list.component === 'rank') {\n    url += list.slug;\n  } else {\n    url += list.component;\n  }\n  return url + '/';\n};\n\nvar navLinks = function navLinks(baseUrl, lists, hideNav) {\n  return lists.map(function (list) {\n    var url = listUrl(baseUrl, list);\n    return _react2.default.createElement(\n      _li2.default,\n      { path: url,\n        key: url },\n      _react2.default.createElement(\n        _reactRouter.Link,\n        { to: url, onClick: hideNav },\n        list.name\n      )\n    );\n  });\n};\n// jshint ignore:end\n\nvar TabsNav = exports.TabsNav = function (_React$Component) {\n  _inherits(TabsNav, _React$Component);\n\n  function TabsNav() {\n    _classCallCheck(this, TabsNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(TabsNav).apply(this, arguments));\n  }\n\n  _createClass(TabsNav, [{\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'nav nav-pills' },\n        navLinks(this.props.baseUrl, this.props.lists)\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return TabsNav;\n}(_react2.default.Component);\n\nvar CompactNav = exports.CompactNav = function (_React$Component2) {\n  _inherits(CompactNav, _React$Component2);\n\n  function CompactNav() {\n    _classCallCheck(this, CompactNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));\n  }\n\n  _createClass(CompactNav, [{\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu', role: 'menu' },\n        navLinks(this.props.baseUrl, this.props.lists, this.props.hideNav)\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return CompactNav;\n}(_react2.default.Component);\n\n},{\"../../index\":121,\"../li\":63,\"react\":\"react\",\"react-router\":\"react-router\"}],115:[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 _root = require('../../users-list/root');\n\nvar _root2 = _interopRequireDefault(_root);\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        null,\n        _react2.default.createElement(_root2.default, { isLoaded: false, cols: 3, showStatus: true })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../users-list/root\":106,\"react\":\"react\"}],116:[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 _pager = require('./pager');\n\nvar _pager2 = _interopRequireDefault(_pager);\n\nvar _root = require('../../users-list/root');\n\nvar _root2 = _interopRequireDefault(_root);\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 _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: 'getPager',\n    value: function getPager() {\n      if (this.props.pages > 1) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_pager2.default, this.props);\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        null,\n        _react2.default.createElement(_root2.default, { users: this.props.users,\n          showStatus: true,\n          cols: 3,\n          isLoaded: true }),\n        this.getPager()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../users-list/root\":106,\"./pager\":117,\"react\":\"react\"}],117:[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 _reactRouter = require('react-router');\n\nvar _resetScroll = require('../../../utils/reset-scroll');\n\nvar _resetScroll2 = _interopRequireDefault(_resetScroll);\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 _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: 'getPreviousPage',\n    value: function getPreviousPage() {\n      if (this.props.previous || this.props.first) {\n        /* jshint ignore:start */\n        var url = this.props.baseUrl;\n        if (this.props.previous) {\n          url += this.props.previous + '/';\n        }\n\n        return _react2.default.createElement(\n          'li',\n          { className: 'previous' },\n          _react2.default.createElement(\n            _reactRouter.Link,\n            { to: url, onClick: _resetScroll2.default },\n            _react2.default.createElement(\n              'span',\n              { 'aria-hidden': 'true', className: 'material-icon' },\n              'arrow_back'\n            )\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getNextPage',\n    value: function getNextPage() {\n      if (this.props.next) {\n        /* jshint ignore:start */\n        var url = this.props.baseUrl + this.props.next + '/';\n        return _react2.default.createElement(\n          'li',\n          { className: 'next' },\n          _react2.default.createElement(\n            _reactRouter.Link,\n            { to: url, onClick: _resetScroll2.default },\n            _react2.default.createElement(\n              'span',\n              { 'aria-hidden': 'true', className: 'material-icon' },\n              'arrow_forward'\n            )\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getProgessBar',\n    value: function getProgessBar() {\n      var _this2 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'pager-progress-bar' },\n        this.props.page_range.map(function (page) {\n          var className = page === _this2.props.page ? 'active' : null;\n          var url = _this2.props.baseUrl;\n\n          if (page > 1) {\n            url += page + '/';\n          }\n\n          return _react2.default.createElement(\n            'li',\n            { key: page, className: className },\n            _react2.default.createElement(\n              _reactRouter.Link,\n              { to: url, onClick: _resetScroll2.default },\n              page\n            )\n          );\n        })\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'pager-undercontent' },\n        _react2.default.createElement(\n          'nav',\n          null,\n          _react2.default.createElement(\n            'ul',\n            { className: 'pager' },\n            this.getPreviousPage(),\n            this.getNextPage()\n          ),\n          this.getProgessBar()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../utils/reset-scroll\":146,\"react\":\"react\",\"react-router\":\"react-router\"}],118:[function(require,module,exports){\n'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _listLoading = require('./list-loading');\n\nvar _listLoading2 = _interopRequireDefault(_listLoading);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _users = require('../../../reducers/users');\n\nvar _polls = require('../../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _pageTitle = require('../../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\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 (_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.update = function (data) {\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n\n      data.isLoaded = true;\n      _this.setState(data);\n    };\n\n    if (_index2.default.has('USERS')) {\n      _this.initWithPreloadedData(_index2.default.pop('USERS'));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n\n    _this.startPolling(props.params.page || 1);\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(data) {\n      this.state = Object.assign(data, {\n        isLoaded: true\n      });\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false\n      };\n    }\n  }, {\n    key: 'startPolling',\n    value: function startPolling(page) {\n      _polls2.default.start({\n        poll: 'rank-users',\n        url: _index2.default.get('USERS_API'),\n        data: {\n          rank: this.props.route.rank.id,\n          page: page\n        },\n        frequency: 90 * 1000,\n        update: this.update\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'componentDidMount',\n\n    /* jshint ignore:end */\n\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: this.props.route.rank.name,\n        page: this.props.params.page || null,\n        parent: gettext(\"Users\")\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      _polls2.default.stop('rank-users');\n    }\n  }, {\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(nextProps) {\n      if (this.props.params.page !== nextProps.params.page) {\n        _pageTitle2.default.set({\n          title: this.props.route.rank.name,\n          page: nextProps.params.page || null,\n          parent: gettext(\"Users\")\n        });\n\n        this.setState({\n          isLoaded: false\n        });\n\n        _polls2.default.stop('rank-users');\n        this.startPolling(nextProps.params.page);\n      }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.props.route.rank.css_class) {\n        return 'rank-users-list rank-users-' + this.props.route.rank.css_class;\n      } else {\n        return 'rank-users-list';\n      }\n    }\n  }, {\n    key: 'getRankDescription',\n    value: function getRankDescription() {\n      if (this.props.route.rank.description) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'rank-description' },\n          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {\n              __html: this.props.route.rank.description.html\n            } })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getComponent',\n    value: function getComponent() {\n      if (this.state.isLoaded) {\n        if (this.state.count > 0) {\n          /* jshint ignore:start */\n          var baseUrl = _index2.default.get('USERS_LIST_URL') + this.props.route.rank.slug + '/';\n          return _react2.default.createElement(_list2.default, _extends({ baseUrl: baseUrl,\n            users: this.props.users\n          }, this.state));\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'p',\n              { className: 'lead' },\n              gettext(\"There are no users with this rank at the moment.\")\n            );\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_listLoading2.default, null);\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: this.getClassName() },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          this.getRankDescription(),\n          this.getComponent()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":121,\"../../../reducers/users\":127,\"../../../services/page-title\":135,\"../../../services/polls\":136,\"../../../services/store\":138,\"./list\":116,\"./list-loading\":115,\"react\":\"react\"}],119:[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;\nexports.paths = paths;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _navs = require('./navs');\n\nvar _root = require('./active-posters/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _root3 = require('./rank/root');\n\nvar _root4 = _interopRequireDefault(_root3);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n\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.toggleNav = function () {\n      if (_this.state.dropdown) {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: true\n        });\n      }\n    };\n\n    _this.hideNav = function () {\n      _this.setState({\n        dropdown: false\n      });\n    };\n\n    _this.state = {\n      dropdown: false\n    };\n    return _this;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'getToggleNavClassName',\n\n    /* jshint ignore:end */\n\n    value: function getToggleNavClassName() {\n      if (this.state.dropdown) {\n        return 'btn btn-default btn-icon open';\n      } else {\n        return 'btn btn-default btn-icon';\n      }\n    }\n  }, {\n    key: 'getCompactNavClassName',\n    value: function getCompactNavClassName() {\n      if (this.state.dropdown) {\n        return 'compact-nav open';\n      } else {\n        return 'compact-nav';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-users-lists' },\n        _react2.default.createElement(\n          'div',\n          { className: 'page-header tabbed' },\n          _react2.default.createElement(\n            'div',\n            { className: 'container' },\n            _react2.default.createElement(\n              'h1',\n              { className: 'pull-left' },\n              gettext(\"Users\")\n            ),\n            _react2.default.createElement(\n              'button',\n              { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',\n                type: 'button',\n                onClick: this.toggleNav,\n                'aria-haspopup': 'true',\n                'aria-expanded': this.state.dropdown ? 'true' : 'false' },\n              _react2.default.createElement(\n                'i',\n                { className: 'material-icon' },\n                'menu'\n              )\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'page-tabs hidden-xs hidden-sm' },\n            _react2.default.createElement(\n              'div',\n              { className: 'container' },\n              _react2.default.createElement(_navs.TabsNav, { lists: _index2.default.get('USERS_LISTS'),\n                baseUrl: _index2.default.get('USERS_LIST_URL') })\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.getCompactNavClassName() },\n          _react2.default.createElement(_navs.CompactNav, { lists: _index2.default.get('USERS_LISTS'),\n            baseUrl: _index2.default.get('USERS_LIST_URL'),\n            hideNav: this.hideNav })\n        ),\n        this.props.children\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(store) {\n  return {\n    'tick': store.tick.tick,\n    'user': store.auth.user,\n    'users': store.users\n  };\n}\n\nfunction paths() {\n  var paths = [];\n\n  _index2.default.get('USERS_LISTS').forEach(function (item) {\n    if (item.component === 'rank') {\n      paths.push({\n        path: _index2.default.get('USERS_LIST_URL') + item.slug + '/:page/',\n        component: (0, _reactRedux.connect)(select)(_root4.default),\n        rank: item\n      });\n      paths.push({\n        path: _index2.default.get('USERS_LIST_URL') + item.slug + '/',\n        component: (0, _reactRedux.connect)(select)(_root4.default),\n        rank: item\n      });\n    } else if (item.component === 'active-posters') {\n      paths.push({\n        path: _index2.default.get('USERS_LIST_URL') + item.component + '/',\n        component: (0, _reactRedux.connect)(select)(_root2.default),\n        extra: {\n          name: item.name\n        }\n      });\n    }\n  });\n\n  return paths;\n}\n\n},{\"../../index\":121,\"./active-posters/root\":113,\"./navs\":114,\"./rank/root\":118,\"react\":\"react\",\"react-redux\":\"react-redux\"}],120:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.toggle = function () {\n      _this.props.onChange({\n        target: {\n          value: !_this.props.value\n        }\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: \"getClassName\",\n    value: function getClassName() {\n      if (this.props.value) {\n        return \"btn btn-yes-no btn-yes-no-on\";\n      } else {\n        return \"btn btn-yes-no btn-yes-no-off\";\n      }\n    }\n  }, {\n    key: \"getIcon\",\n    value: function getIcon() {\n      if (this.props.value) {\n        return this.props.iconOn || 'check_box';\n      } else {\n        return this.props.iconOff || 'check_box_outline_blank';\n      }\n    }\n  }, {\n    key: \"getLabel\",\n    value: function getLabel() {\n      if (this.props.value) {\n        return this.props.labelOn || gettext(\"yes\");\n      } else {\n        return this.props.labelOff || gettext(\"no\");\n      }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: \"render\",\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"button\",\n        { type: \"button\",\n          onClick: this.toggle,\n          className: this.getClassName(),\n          id: this.props.id || null,\n          \"aria-describedby\": this.props['aria-describedby'] || null,\n          disabled: this.props.disabled || false },\n        _react2.default.createElement(\n          \"span\",\n          { className: \"material-icon\" },\n          this.getIcon()\n        ),\n        this.getLabel()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],121:[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[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    key: 'pop',\n    value: function pop(key) {\n      if (this.has(key)) {\n        var value = this._context[key];\n        this._context[key] = null;\n        return value;\n      } else {\n        return 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\":144}],122:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SIGN_OUT = exports.SIGN_IN = exports.PATCH_USER = exports.initialState = undefined;\nexports.patchUser = patchUser;\nexports.signIn = signIn;\nexports.signOut = signOut;\nexports.default = auth;\n\nvar _users = require('./users');\n\nvar initialState = exports.initialState = {\n  signedIn: false,\n  signedOut: false\n};\n\nvar PATCH_USER = exports.PATCH_USER = 'PATCH_USER';\nvar SIGN_IN = exports.SIGN_IN = 'SIGN_IN';\nvar SIGN_OUT = exports.SIGN_OUT = 'SIGN_OUT';\n\nfunction patchUser(patch) {\n  return {\n    type: PATCH_USER,\n    patch: patch\n  };\n}\n\nfunction signIn(user) {\n  return {\n    type: SIGN_IN,\n    user: user\n  };\n}\n\nfunction signOut() {\n  var soft = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0];\n\n  return {\n    type: SIGN_OUT,\n    soft: soft\n  };\n}\n\nfunction auth() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case PATCH_USER:\n      var newState = Object.assign({}, state);\n      newState.user = Object.assign({}, state.user, action.patch);\n      return newState;\n\n    case SIGN_IN:\n      return Object.assign({}, state, {\n        signedIn: action.user\n      });\n\n    case SIGN_OUT:\n      return Object.assign({}, state, {\n        isAuthenticated: false,\n        isAnonymous: true,\n        signedOut: !action.soft\n      });\n\n    case _users.UPDATE_AVATAR:\n      if (state.isAuthenticated && state.user.id === action.userId) {\n        var _newState = Object.assign({}, state);\n        _newState.user = Object.assign({}, state.user, {\n          'avatar_hash': action.avatarHash\n        });\n        return _newState;\n      }\n      return state;\n\n    case _users.UPDATE_USERNAME:\n      if (state.isAuthenticated && state.user.id === action.userId) {\n        var _newState2 = Object.assign({}, state);\n        _newState2.user = Object.assign({}, state.user, {\n          username: action.username,\n          slug: action.slug\n        });\n        return _newState2;\n      }\n      return state;\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":127}],123:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PATCH_PROFILE = exports.DEHYDRATE_PROFILE = undefined;\nexports.dehydrate = dehydrate;\nexports.patchProfile = patchProfile;\nexports.default = auth;\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _users = require('./users');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEHYDRATE_PROFILE = exports.DEHYDRATE_PROFILE = 'DEHYDRATE_PROFILE';\nvar PATCH_PROFILE = exports.PATCH_PROFILE = 'PATCH_PROFILE';\n\nfunction dehydrate(profile) {\n  return {\n    type: DEHYDRATE_PROFILE,\n    profile: profile\n  };\n}\n\nfunction patchProfile(patch) {\n  return {\n    type: PATCH_PROFILE,\n    patch: patch\n  };\n}\n\nfunction auth() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case DEHYDRATE_PROFILE:\n      return Object.assign({}, action.profile, {\n        joined_on: (0, _moment2.default)(action.profile.joined_on),\n        status: (0, _users.dehydrateStatus)(action.profile.status)\n      });\n\n    case PATCH_PROFILE:\n      return Object.assign({}, state, action.patch);\n\n    case _users.UPDATE_AVATAR:\n      if (state.id === action.userId) {\n        return Object.assign({}, state, {\n          avatar_hash: action.avatarHash\n        });\n      }\n      return state;\n\n    case _users.UPDATE_USERNAME:\n      if (state.id === action.userId) {\n        return Object.assign({}, state, {\n          username: action.username,\n          slug: action.slug\n        });\n      }\n      return state;\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":127,\"moment\":\"moment\"}],124:[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},{}],125:[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},{}],126:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DEHYDRATE_HISTORY = exports.APPEND_HISTORY = exports.ADD_NAME_CHANGE = undefined;\nexports.addNameChange = addNameChange;\nexports.append = append;\nexports.dehydrate = dehydrate;\nexports.default = username;\n\nvar _users = require('./users');\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ADD_NAME_CHANGE = exports.ADD_NAME_CHANGE = 'ADD_NAME_CHANGE';\nvar APPEND_HISTORY = exports.APPEND_HISTORY = 'APPEND_HISTORY';\nvar DEHYDRATE_HISTORY = exports.DEHYDRATE_HISTORY = 'DEHYDRATE_HISTORY';\n\nfunction addNameChange(change, user, changedBy) {\n  return {\n    type: ADD_NAME_CHANGE,\n    change: change,\n    user: user,\n    changedBy: changedBy\n  };\n}\n\nfunction append(items) {\n  return {\n    type: APPEND_HISTORY,\n    items: items\n  };\n}\n\nfunction dehydrate(items) {\n  return {\n    type: DEHYDRATE_HISTORY,\n    items: items\n  };\n}\n\nfunction username() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case ADD_NAME_CHANGE:\n      var newState = state.slice();\n      newState.unshift({\n        id: Math.floor(Date.now() / 1000), // just small hax for getting id\n        changed_by: action.changedBy,\n        changed_by_username: action.changedBy.username,\n        changed_on: (0, _moment2.default)(),\n        new_username: action.change.username,\n        old_username: action.user.username\n      });\n      return newState;\n\n    case APPEND_HISTORY:\n      return state.concat(action.items.map(function (item) {\n        return Object.assign({}, item, {\n          changed_on: (0, _moment2.default)(item.changed_on)\n        });\n      }));\n\n    case DEHYDRATE_HISTORY:\n      return action.items.map(function (item) {\n        return Object.assign({}, item, {\n          changed_on: (0, _moment2.default)(item.changed_on)\n        });\n      });\n\n    case _users.UPDATE_AVATAR:\n      return state.map(function (item) {\n        item = Object.assign({}, item);\n        if (item.changed_by && item.changed_by.id === action.userId) {\n          item.changed_by = Object.assign({}, item.changed_by, {\n            'avatar_hash': action.avatarHash\n          });\n        }\n\n        return item;\n      });\n\n    case _users.UPDATE_USERNAME:\n      return state.map(function (item) {\n        item = Object.assign({}, item);\n        if (item.changed_by && item.changed_by.id === action.userId) {\n          item.changed_by = Object.assign({}, item.changed_by, {\n            'username': action.username,\n            'slug': action.slug\n          });\n        }\n\n        return Object.assign({}, item);\n      });\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":127,\"moment\":\"moment\"}],127:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.UPDATE_USERNAME = exports.UPDATE_AVATAR = exports.DEHYDRATE_USERS = exports.APPEND_USERS = undefined;\nexports.append = append;\nexports.dehydrate = dehydrate;\nexports.dehydrateStatus = dehydrateStatus;\nexports.updateAvatar = updateAvatar;\nexports.updateUsername = updateUsername;\nexports.default = user;\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar APPEND_USERS = exports.APPEND_USERS = 'APPEND_USERS';\nvar DEHYDRATE_USERS = exports.DEHYDRATE_USERS = 'DEHYDRATE_USERS';\nvar UPDATE_AVATAR = exports.UPDATE_AVATAR = 'UPDATE_AVATAR';\nvar UPDATE_USERNAME = exports.UPDATE_USERNAME = 'UPDATE_USERNAME';\n\nfunction append(items) {\n  return {\n    type: APPEND_USERS,\n    items: items\n  };\n}\n\nfunction dehydrate(items) {\n  return {\n    type: DEHYDRATE_USERS,\n    items: items\n  };\n}\n\nfunction dehydrateStatus(status) {\n  if (status) {\n    return Object.assign({}, status, {\n      last_click: status.last_click ? (0, _moment2.default)(status.last_click) : null,\n      banned_until: status.banned_until ? (0, _moment2.default)(status.banned_until) : null\n    });\n  } else {\n    return null;\n  }\n}\n\nfunction updateAvatar(user, avatarHash) {\n  return {\n    type: UPDATE_AVATAR,\n    userId: user.id,\n    avatarHash: avatarHash\n  };\n}\n\nfunction updateUsername(user, username, slug) {\n  return {\n    type: UPDATE_USERNAME,\n    userId: user.id,\n    username: username,\n    slug: slug\n  };\n}\n\nfunction user() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case APPEND_USERS:\n      return state.concat(action.items.map(function (item) {\n        return Object.assign({}, item, {\n          joined_on: (0, _moment2.default)(item.joined_on),\n          status: dehydrateStatus(item.status)\n        });\n      }));\n\n    case DEHYDRATE_USERS:\n      return action.items.map(function (item) {\n        return Object.assign({}, item, {\n          joined_on: (0, _moment2.default)(item.joined_on),\n          status: dehydrateStatus(item.status)\n        });\n      });\n\n    case UPDATE_AVATAR:\n      return state.map(function (item) {\n        item = Object.assign({}, item);\n        if (item.id === action.userId) {\n          item.avatar_hash = action.avatarHash;\n        }\n\n        return item;\n      });\n\n    default:\n      return state;\n  }\n}\n\n},{\"moment\":\"moment\"}],128:[function(require,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\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    this._locks = {};\n  }\n\n  _createClass(Ajax, [{\n    key: 'init',\n    value: function init(cookieName) {\n      this._cookieName = cookieName;\n      this._csrfToken = this.getCsrfToken();\n    }\n  }, {\n    key: 'getCsrfToken',\n    value: function getCsrfToken() {\n      if (document.cookie.indexOf(this._cookieName) !== -1) {\n        var cookieRegex = new RegExp(this._cookieName + '\\=([^;]*)');\n        var cookie = document.cookie.match(cookieRegex)[0];\n        return cookie ? cookie.split('=')[1] : null;\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: 'request',\n    value: function request(method, url, data) {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        var xhr = {\n          url: url,\n          method: method,\n          headers: {\n            'X-CSRFToken': self._csrfToken\n          },\n\n          data: data ? JSON.stringify(data) : null,\n          contentType: \"application/json; charset=utf-8\",\n          dataType: 'json',\n\n          success: function success(data) {\n            resolve(data);\n          },\n\n          error: function error(jqXHR) {\n            var rejection = jqXHR.responseJSON || {};\n\n            rejection.status = jqXHR.status;\n\n            if (rejection.status === 0) {\n              rejection.detail = gettext(\"Lost connection with application.\");\n            }\n\n            if (rejection.status === 404) {\n              if (!rejection.detail || rejection.detail === 'NOT FOUND') {\n                rejection.detail = gettext(\"Action link is invalid.\");\n              }\n            }\n\n            if (rejection.status === 500 && !rejection.detail) {\n              rejection.detail = gettext(\"Unknown error has occured.\");\n            }\n\n            rejection.statusText = jqXHR.statusText;\n\n            reject(rejection);\n          }\n        };\n\n        $.ajax(xhr);\n      });\n    }\n  }, {\n    key: 'get',\n    value: function get(url, params, lock) {\n      var _this = this;\n\n      if (params) {\n        url += '?' + $.param(params);\n      }\n\n      if (lock) {\n        var _ret = function () {\n          var self = _this;\n\n          // update url in existing lock?\n          if (_this._locks[lock]) {\n            _this._locks[lock].url = url;\n          }\n\n          // immediately dereference promise handlers without doing anything\n          // we are already waiting for existing response to resolve\n          if (_this._locks[lock] && _this._locks[lock].waiter) {\n            return {\n              v: {\n                then: function then() {\n                  return;\n                }\n              }\n            };\n\n            // return promise that will begin when original one resolves\n          } else if (_this._locks[lock] && _this._locks[lock].wait) {\n              _this._locks[lock].waiter = true;\n\n              return {\n                v: new Promise(function (resolve, reject) {\n                  var wait = function wait(url) {\n                    // keep waiting on promise\n                    if (self._locks[lock].wait) {\n                      window.setTimeout(function () {\n                        wait(url);\n                      }, 300);\n\n                      // poll for new url\n                    } else if (self._locks[lock].url !== url) {\n                        wait(self._locks[lock].url);\n\n                        // ajax backend for response\n                      } else {\n                          self._locks[lock].waiter = false;\n                          self.request('GET', self._locks[lock].url).then(function (data) {\n                            if (self._locks[lock].url === url) {\n                              resolve(data);\n                            } else {\n                              self._locks[lock].waiter = true;\n                              wait(self._locks[lock].url);\n                            }\n                          }, function (rejection) {\n                            if (self._locks[lock].url === url) {\n                              reject(rejection);\n                            } else {\n                              self._locks[lock].waiter = true;\n                              wait(self._locks[lock].url);\n                            }\n                          });\n                        }\n                  };\n\n                  window.setTimeout(function () {\n                    wait(url);\n                  }, 300);\n                })\n              };\n\n              // setup new lock without waiter\n            } else {\n                _this._locks[lock] = {\n                  url: url,\n                  wait: true,\n                  waiter: false\n                };\n\n                return {\n                  v: new Promise(function (resolve, reject) {\n                    self.request('GET', url).then(function (data) {\n                      self._locks[lock].wait = false;\n                      if (self._locks[lock].url === url) {\n                        resolve(data);\n                      }\n                    }, function (rejection) {\n                      self._locks[lock].wait = false;\n                      if (self._locks[lock].url === url) {\n                        reject(rejection);\n                      }\n                    });\n                  })\n                };\n              }\n        }();\n\n        if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n      } else {\n        return this.request('GET', url);\n      }\n    }\n  }, {\n    key: 'post',\n    value: function post(url, data) {\n      return this.request('POST', url, data);\n    }\n  }, {\n    key: 'patch',\n    value: function patch(url, data) {\n      return this.request('PATCH', url, data);\n    }\n  }, {\n    key: 'put',\n    value: function put(url, data) {\n      return this.request('PUT', url, data);\n    }\n  }, {\n    key: 'delete',\n    value: function _delete(url) {\n      return this.request('DELETE', url);\n    }\n  }, {\n    key: 'upload',\n    value: function upload(url, data, progress) {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        var xhr = {\n          url: url,\n          method: 'POST',\n          headers: {\n            'X-CSRFToken': self._csrfToken\n          },\n\n          data: data,\n          contentType: false,\n          processData: false,\n\n          xhr: function xhr() {\n            var xhr = new window.XMLHttpRequest();\n            xhr.upload.addEventListener(\"progress\", function (evt) {\n              if (evt.lengthComputable) {\n                progress(Math.round(evt.loaded / evt.total * 100));\n              }\n            }, false);\n            return xhr;\n          },\n\n          success: function success(response) {\n            resolve(response);\n          },\n\n          error: function error(jqXHR) {\n            var rejection = jqXHR.responseJSON || {};\n\n            rejection.status = jqXHR.status;\n\n            if (rejection.status === 0) {\n              rejection.detail = gettext(\"Lost connection with application.\");\n            }\n\n            if (rejection.status === 404) {\n              if (!rejection.detail || rejection.detail === 'NOT FOUND') {\n                rejection.detail = gettext(\"Action link is invalid.\");\n              }\n            }\n\n            if (rejection.status === 500 && !rejection.detail) {\n              rejection.detail = gettext(\"Unknown error has occured.\");\n            }\n\n            rejection.statusText = jqXHR.statusText;\n\n            reject(rejection);\n          }\n        };\n\n        $.ajax(xhr);\n      });\n    }\n  }]);\n\n  return Ajax;\n}();\n\nexports.default = new Ajax();\n\n},{}],129:[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\":122}],130:[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\":61,\"react\":\"react\"}],131:[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},{}],132:[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},{}],133:[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\":143}],134:[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\":143,\"react-dom\":\"react-dom\"}],135:[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 PageTitle = exports.PageTitle = function () {\n  function PageTitle() {\n    _classCallCheck(this, PageTitle);\n  }\n\n  _createClass(PageTitle, [{\n    key: 'init',\n    value: function init(forumName) {\n      this._forumName = forumName;\n    }\n  }, {\n    key: 'set',\n    value: function set(title) {\n      if (typeof title === 'string') {\n        title = { title: title };\n      }\n\n      var finalTitle = title.title;\n\n      if (title.page) {\n        var pageLabel = interpolate(gettext('page: %(page)s'), {\n          page: title.page\n        }, true);\n\n        finalTitle += ' (' + pageLabel + ')';\n      }\n\n      if (title.parent) {\n        finalTitle += ' | ' + title.parent;\n      }\n\n      document.title = finalTitle + ' | ' + this._forumName;\n    }\n  }]);\n\n  return PageTitle;\n}();\n\nexports.default = new PageTitle();\n\n},{}],136:[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 Polls = exports.Polls = function () {\n  function Polls() {\n    _classCallCheck(this, Polls);\n  }\n\n  _createClass(Polls, [{\n    key: \"init\",\n    value: function init(ajax, snackbar) {\n      this._ajax = ajax;\n      this._snackbar = snackbar;\n\n      this._polls = {};\n    }\n  }, {\n    key: \"start\",\n    value: function start(kwargs) {\n      var _this = this;\n\n      var poolServer = function poolServer() {\n        _this._polls[kwargs.poll] = kwargs;\n\n        _this._ajax.get(kwargs.url, kwargs.data || null).then(function (data) {\n          kwargs.update(data);\n\n          _this._polls[kwargs.poll].timeout = window.setTimeout(poolServer, kwargs.frequency);\n        }, function (rejection) {\n          if (kwargs.error) {\n            kwargs.error(rejection);\n          } else {\n            _this._snackbar.apiError(rejection);\n          }\n        });\n      };\n\n      poolServer();\n    }\n  }, {\n    key: \"stop\",\n    value: function stop(pollId) {\n      if (this._polls[pollId]) {\n        window.clearTimeout(this._polls[pollId].timeout);\n      }\n    }\n  }]);\n\n  return Polls;\n}();\n\nexports.default = new Polls();\n\n},{}],137:[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 = rejection.detail;\n\n      if (!message) {\n        if (rejection.status === 404) {\n          message = gettext(\"Action link is invalid.\");\n        } else {\n          message = gettext(\"Unknown error has occured.\");\n        }\n      }\n\n      if (rejection.status === 403 && message === \"Permission denied\") {\n        message = gettext(\"You don't have permission to perform this action.\");\n      }\n\n      this.error(message);\n    }\n  }]);\n\n  return Snackbar;\n}();\n\nexports.default = new Snackbar();\n\n},{\"../reducers/snackbar\":124}],138:[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\"}],139:[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},{}],140:[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\":54,\"../index\":121,\"../services/store\":138,\"moment\":\"moment\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],141:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (list, rowWidth) {\n  var padding = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];\n\n  var rows = [];\n  var row = [];\n\n  list.forEach(function (element) {\n    row.push(element);\n    if (row.length === rowWidth) {\n      rows.push(row);\n      row = [];\n    }\n  });\n\n  // pad row to required length?\n  if (padding !== false && row.length > 0 && row.length < rowWidth) {\n    for (var i = row.length; i < rowWidth; i++) {\n      row.push(padding);\n    }\n  }\n\n  if (row.length) {\n    rows.push(row);\n  }\n\n  return rows;\n};\n\n},{}],142:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (bytes) {\n  if (bytes > 1000 * 1000 * 1000) {\n    return Math.round(bytes * 100 / (1000 * 1000 * 1000)) / 100 + ' GB';\n  } else if (bytes > 1000 * 1000) {\n    return Math.round(bytes * 100 / (1000 * 1000)) / 100 + ' MB';\n  } else if (bytes > 1000) {\n    return Math.round(bytes * 100 / 1000) / 100 + ' KB';\n  } else {\n    return Math.round(bytes * 100) / 100 + ' B';\n  }\n};\n\n},{}],143:[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  /* jshint ignore:start */\n  var finalComponent = Component.props ? Component : _react2.default.createElement(Component, null);\n  /* jshint ignore:end */\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        finalComponent\n      ),\n      /* jshint ignore:end */\n      rootElement);\n    } else {\n      /* jshint ignore:start */\n      _reactDom2.default.render(finalComponent, rootElement);\n      /* jshint ignore:end */\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\":138,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],144:[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},{}],145:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.int = int;\nexports.range = range;\nfunction int(min, max) {\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nfunction range(min, max) {\n  var array = new Array(int(min, max));\n  for (var i = 0; i < array.length; i++) {\n    array[i] = i;\n  }\n\n  return array;\n}\n\n},{}],146:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function () {\n  window.scrollTo(0, 0);\n};\n\n},{}],147:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (options) {\n  var routes = {\n    component: options.component,\n    childRoutes: [{\n      path: options.root,\n      onEnter: function onEnter(nextState, replaceState) {\n        replaceState(null, options.paths[0].path);\n      }\n    }].concat(options.paths.map(function (path) {\n      return path;\n    }))\n  };\n\n  _reactDom2.default.render(_react2.default.createElement(\n    _reactRedux.Provider,\n    { store: _store2.default.getStore() },\n    _react2.default.createElement(_reactRouter.Router, { routes: routes, history: history })\n  ), rootElement);\n};\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = require('react-redux');\n\nvar _reactRouter = require('react-router');\n\nvar _createBrowserHistory = require('history/lib/createBrowserHistory');\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _store = require('../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// jshint ignore:start\n\nvar rootElement = document.getElementById('page-mount');\nvar history = new _createBrowserHistory2.default();\n\n},{\"../services/store\":138,\"history/lib/createBrowserHistory\":42,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\",\"react-router\":\"react-router\"}],148:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.required = required;\nexports.email = email;\nexports.minLength = minLength;\nexports.maxLength = maxLength;\nexports.usernameMinLength = usernameMinLength;\nexports.usernameMaxLength = usernameMaxLength;\nexports.usernameContent = usernameContent;\nexports.passwordMinLength = passwordMinLength;\nvar EMAIL = /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\nvar USERNAME = new RegExp('^[0-9a-z]+$', 'i');\n\nfunction required() {\n  return function (value) {\n    if ($.trim(value).length === 0) {\n      return gettext(\"This field is required.\");\n    }\n  };\n}\n\nfunction email(message) {\n  return function (value) {\n    if (!EMAIL.test(value)) {\n      return message || gettext(\"Enter a valid email address.\");\n    }\n  };\n}\n\nfunction minLength(limitValue, message) {\n  return function (value) {\n    var returnMessage = '';\n    var length = $.trim(value).length;\n\n    if (length < limitValue) {\n      if (message) {\n        returnMessage = message(limitValue, length);\n      } else {\n        returnMessage = ngettext(\"Ensure this value has at least %(limit_value)s character (it has %(show_value)s).\", \"Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).\", limitValue);\n      }\n      return interpolate(returnMessage, {\n        limit_value: limitValue,\n        show_value: length\n      }, true);\n    }\n  };\n}\n\nfunction maxLength(limitValue, message) {\n  return function (value) {\n    var returnMessage = '';\n    var length = $.trim(value).length;\n\n    if (length > limitValue) {\n      if (message) {\n        returnMessage = message(limitValue, length);\n      } else {\n        returnMessage = ngettext(\"Ensure this value has at most %(limit_value)s character (it has %(show_value)s).\", \"Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).\", limitValue);\n      }\n      return interpolate(returnMessage, {\n        limit_value: limitValue,\n        show_value: length\n      }, true);\n    }\n  };\n}\n\nfunction usernameMinLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Username must be at least %(limit_value)s character long.\", \"Username must be at least %(limit_value)s characters long.\", limitValue);\n  };\n  return this.minLength(settings.username_length_min, message);\n}\n\nfunction usernameMaxLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Username cannot be longer than %(limit_value)s character.\", \"Username cannot be longer than %(limit_value)s characters.\", limitValue);\n  };\n  return this.maxLength(settings.username_length_max, message);\n}\n\nfunction usernameContent() {\n  return function (value) {\n    if (!USERNAME.test($.trim(value))) {\n      return gettext(\"Username can only contain latin alphabet letters and digits.\");\n    }\n  };\n}\n\nfunction passwordMinLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Valid password must be at least %(limit_value)s character long.\", \"Valid password must be at least %(limit_value)s characters long.\", limitValue);\n  };\n  return this.minLength(settings.password_length_min, message);\n}\n\n},{}]},{},[2,3,4,5,16,17,18,19,20,21,22,30,31,32,33,6,7,8,9,10,11,12,13,14,15,23,24,25,26,27,28,29]);\n"],"sourceRoot":"/source/"}
+{"version":3,"sources":["misago.js"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length",1,"module","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","timeout","setTimeout","len","run","clearTimeout","Item","fun","array","this","noop","process","nextTick","args","Array","arguments","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","name","cwd","chdir","dir","umask",2,"global","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","value","Misago","undefined","_orderedList","_orderedList2","_initializers","_context","initializer","item","after","before","context","_this","initOrder","orderedValues","forEach","fallback","has","misago","self","window","../../../misago/frontend/src/utils/ordered-list",3,"_ajax2","init","_index2","get","_index","_ajax","addInitializer","../../../../misago/frontend/src/index","../../../../misago/frontend/src/services/ajax",4,"_auth2","_store2","_localStorage2","_modal2","_auth","_modal","_store","_localStorage","../../../../misago/frontend/src/services/auth","../../../../misago/frontend/src/services/local-storage","../../../../misago/frontend/src/services/modal","../../../../misago/frontend/src/services/store",5,"_captcha2","_include2","_snackbar2","_captcha","_include","_snackbar","../../../../misago/frontend/src/services/captcha","../../../../misago/frontend/src/services/include","../../../../misago/frontend/src/services/snackbar",6,"_mountComponent2","_reactRedux","connect","_authMessage","select","_authMessage2","_mountComponent","../../../../../misago/frontend/src/components/auth-message","../../../../../misago/frontend/src/index","../../../../../misago/frontend/src/utils/mount-component","react-redux",7,"_bannedPage2","_bannedPage","../../../../../misago/frontend/src/utils/banned-page",8,"_root","_root2","../../../../../misago/frontend/src/components/categories/root",9,"_routedComponent2","root","component","paths","_routedComponent","../../../../../misago/frontend/src/components/options/root","../../../../../misago/frontend/src/utils/routed-component",10,"absolute_url","../../../../../misago/frontend/src/components/profile/root",11,"document","getElementById","_requestActivationLink2","_requestActivationLink","../../../../../misago/frontend/src/components/request-activation-link",12,"_requestPasswordReset2","_requestPasswordReset","../../../../../misago/frontend/src/components/request-password-reset",13,"_resetPasswordForm2","_resetPasswordForm","../../../../../misago/frontend/src/components/reset-password-form",14,"Snackbar","../../../../../misago/frontend/src/components/snackbar",15,"UserMenu","CompactUserMenu","../../../../../misago/frontend/src/components/user-menu/root",16,"../../../../../misago/frontend/src/components/users/root",17,18,19,"element","_mobileNavbarDropdown2","_mobileNavbarDropdown","../../../../misago/frontend/src/services/mobile-navbar-dropdown",20,21,"_moment2","locale","$","attr","_moment","moment",22,"_pageTitle2","forum_name","_pageTitle","../../../../misago/frontend/src/services/page-title",23,"_polls2","_polls","../../../../misago/frontend/src/services/polls",24,"addReducer","assign","isAuthenticated","isAnonymous","user","initialState","../../../../../misago/frontend/src/reducers/auth","../../../../../misago/frontend/src/services/store",25,"dispatch","_profile","dehydrate","../../../../../misago/frontend/src/reducers/profile",26,"_profile2",27,"../../../../../misago/frontend/src/reducers/snackbar",28,"_tick2","_tick","../../../../../misago/frontend/src/reducers/tick",29,"_usernameHistory2","_usernameHistory","../../../../../misago/frontend/src/reducers/username-history",30,"_users2","_users","../../../../../misago/frontend/src/reducers/users",31,32,33,"setInterval","doTick","TICK_PERIOD","../../../../misago/frontend/src/reducers/tick",34,"_zxcvbn2","_zxcvbn","../../../../misago/frontend/src/services/zxcvbn",35,"isUndefinedOrNull","isBuffer","x","copy","slice","objEquiv","b","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","sort","actual","expected","Date","getTime","strict","./lib/is_arguments.js","./lib/keys.js",36,"supported","object","toString","unsupported","hasOwnProperty","propertyIsEnumerable","supportsArgumentsClass",37,"shim","keys",38,"PUSH","REPLACE","POP",39,"loopAsync","turns","work","callback","done","isDone","next","currentTurn",40,"createKey","KeyPrefix","saveState","state","sessionStorage","setItem","JSON","stringify","error","SecurityError","NODE_ENV","_warning2","QuotaExceededError","readState","json","getItem","parse","_warning","_process","warning",41,"addEventListener","node","event","listener","attachEvent","removeEventListener","detachEvent","getHashPath","location","href","split","replaceHashPath","path","replace","pathname","search","getWindowPath","hash","go","history","getUserConfirmation","message","confirm","supportsHistory","ua","navigator","userAgent","indexOf","supportsGoWithoutReloadUsingHash",42,"canUseDOM","createElement",43,"createBrowserHistory","getCurrentLocation","historyState","_DOMUtils","_historyState","_DOMStateStorage","isSupported","replaceState","_extends","_parsePath2","createLocation","startPopStateListener","_ref","popStateListener","transitionTo","finishTransition","basename","action","_Actions","useRefresh","pushState","listenBefore","listenerCount","stopPopStateListener","unlisten","listen","registerTransitionHook","hook","unregisterTransitionHook","options","_ExecutionEnvironment","_invariant2","forceRefresh","_createDOMHistory2","source","_invariant","_createDOMHistory","_parsePath","./Actions","./DOMStateStorage","./DOMUtils","./ExecutionEnvironment","./createDOMHistory","./parsePath","invariant",44,"createDOMHistory","_createHistory2","_createHistory","./createHistory",45,"createRandomKey","Math","random","substr","locationsAreEqual","_deepEqual2","createHistory","transitionHooks","filter","getCurrent","pendingLocation","allKeys","updateLocation","newLocation","current","changeListeners","_location","confirmTransitionTo","_AsyncUtils","index","_runTransitionHook2","result","ok","nextLocation","prevPath","createPath","nextPath","prevIndex","nextIndex","goBack","goForward","keyLength","createHref","_createLocation3","setState","updateLocationState","DefaultKeyLength","_deprecate2","_deepEqual","_createLocation2","_runTransitionHook","_deprecate","./AsyncUtils","./createLocation","./deprecate","./runTransitionHook","deep-equal",46,"_fourthArg",47,"deprecate","fn",48,"extractPath","string","match","substring",49,"parsePath","_extractPath2","hashIndex","searchIndex","_extractPath","./extractPath",50,"runTransitionHook",51,"condition","format","c","d","argIndex","framesToPop",52,53,"_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","create","constructor","setPrototypeOf","__proto__","auth","signedIn","signedOut","_react","_react2","_class","_React$Component","getPrototypeOf","reload","interpolate","gettext","username","className","getClassName","getMessage","type","onClick","refresh","Component","react",54,"BASE_URL","size","url","id","avatar_hash","src","getSrc",55,"html","dangerouslySetInnerHTML","__html","plain","expires","isAfter","expires_on","fromNow","getReasonMessage","getExpirationMessage",56,"_loader","_loader2","Button","disabled","loading","children","defaultProps","./loader",57,"_lastActivity","_lastActivity2","_readIcon","_readIcon2","_stats","_stats2","category","css_class","subcategories","description","_this2","map","getSubcategorySubcategoryClass","_this3","getSubcategoryClass","getSubcategoryDescription","getSubcategorySubcategories","getHeadingClassName","getCategoryDescription","getSubcategories","./last-activity","./read-icon","./stats",58,59,"last_poster_url","last_poster_name","last_thread_url","last_thread_title","getLastPoster","last_post_on","acl","can_browse","can_see_all_threads","getThreadDetails","getLastActivity",60,"is_read","is_closed","getTitle","getIcon",61,"store","tick","_category","_category2","_emptyMessage","_emptyMessage2","update","data","categories","startPolling","api","start","poll","frequency","getHeading","getCategoriesList","../../index","../../services/polls","./category","./empty-message",62,"ngettext","threads","posts","getThreadsCount","getPostsCount",63,"_avatar","_button","_button2","cropAvatar","isLoading","avatarType","upload","cropit","post","api_url","avatar","crop","offset","zoom","then","onComplete","success","detail","rejection","status","showError","crop_tmp","crop_org","secret","getAvatarSecret","getAvatarHash","join","width","getAvatarSize","height","imageState","getImagePath","onImageLoaded","zoomLevel","imageSize","displayedWidth","offsetX","y","displayedHeight","offsetY","showIndex","../../services/ajax","../../services/snackbar","../avatar","../button",64,"Gallery","GalleryItem","_batch","_batch2","_Object$getPrototypeO","_temp","_ret","_len","_key","image","selection","_React$Component2","images","row","_React$Component3","_this4","save","response","_this5","galleries","../../utils/batch",65,"_avatar2","setGravatar","callApi","setGenerated","gravatar","showCrop","showUpload","showGallery","userPeview","getAvatarPreview","getGravatarButton","getCropButton","getUploadButton","getGalleryButton","../loader",66,"ChangeAvatarError","_crop","_crop2","_upload","_upload2","_gallery","_gallery2","_modalLoader","_modalLoader2","reason","getErrorReason","completeFlow","avatarHash","updateAvatar","role","data-dismiss","aria-label","aria-hidden","getBody","../../reducers/users","../../services/store","../modal-loader","./crop","./gallery","./index","./upload",67,"_fileSize","_fileSize2","pickFile","click","uploadFile","files","validationError","validateFile","preview","URL","createObjectURL","progress","FormData","append","uploaded","info","limit","filesize","invalidTypeMsg","allowed_mime_types","extensionFound","loweredFilename","toLowerCase","allowed_extensions","extension","extensions","getUploadRequirements","aria-valuenow","aria-valuemin","aria-valuemax","style","getUploadProgressLabel","onChange","getUploadProgress","renderCrop","renderUpload","../../utils/file-size",68,"validation","isValidated","helpText","labelClass","htmlFor","label","controlClass","getFeedbackIcon","getFeedbackDescription","getFeedback","getHelpText","extra",69,"_defineProperty","_validators","validateRequired","required","bindInput","newState","formErrors","errors","validateField","handleSubmit","preventDefault","clean","promise","send","handleSuccess","handleError","validators","optional","validatedFields","fieldErrors","validate","field","requiredError","apiError","../services/snackbar","../utils/validators",70,"isActive","activeClassName",71,72,73,"_panelMessage","_panelMessage2","_PanelMessage","icon","./panel-message",74,"_panelLoader","_panelLoader2","../../panel-loader",75,"next_on","next_change","../../panel-message",76,"_interopRequireWildcard","newObj","_form","_form2","_formGroup","_formGroup2","_Form","usernameContent","usernameMinLength","username_length_min","length_min","usernameMaxLength","username_length_max","length_max","phrases","changes_left","name_changes_expire","trim","complete","slug","onSubmit","for","../../../services/ajax","../../../services/snackbar","../../../utils/validators","../../button","../../form","../../form-group",77,"_formLoading","_formLoading2","_formLocked","_formLocked2","_usernameHistory3","addNameChange","updateUsername","isLoaded","set","parent","Promise","all","results","getChangeForm","changes","../../../index","../../../reducers/username-history","../../../reducers/users","../../../services/page-title","../../../services/store","../../username-history","./form","./form-loading","./form-locked",78,"_select","_select2","_yesNoSwitch","_yesNoSwitch2","is_hiding_presence","limits_private_thread_invites_to","subscribe_to_started_threads","subscribe_to_replied_threads","privateThreadInvitesChoices","subscribeToChoices","patchUser","iconOn","iconOff","labelOn","labelOff","choices","../../reducers/auth","../../services/page-title","../form","../form-group","../select","../yes-no-switch",79,"CompactNav","SideNav","_reactRouter","_li","_li2","option","Link","to","baseUrl","hideNav","../li","react-router",80,"username-history","_forumOptions2","_root4","_navs","_forumOptions","_root3","toggleNav","dropdown","aria-haspopup","aria-expanded","getCompactNavClassName","./change-username/root","./forum-options","./navs","./sign-in-credentials/root",81,"new_email","password","email","lengths","change_email","display",82,"new_password","repeat_password","passwordMinLength","change_password",83,"_changeEmail","_changeEmail2","_changePassword","_changePassword2","./change-email","./change-password",84,85,86,"LABELS","STYLES","_score","_password","_inputs","inputs","cacheStale","scorePassword","score","getScore","../services/zxcvbn",87,"_followButton","_followButton2","_nav","_nav2","_userStatus","_userStatus2","profile","StatusIcon","StatusLabel","rank","is_tab","joined_on","age","can_follow","can_moderate","data-toggle","getFollowButton","getModerationButton","getUserStatus","getUserRank","getUserTitle","getJoinedOn","getEmail","../user-status","./follow-button","./moderation/nav",88,"ban","initWithPreloadedData","pop","initWithoutPreloadedData","stop","user_message","staff_message","_title","getUserMessage","getStaffMessage","getPanelBody","../panel-loader","../panel-message",89,"is_followed","patchProfile","followers","follow","getLabel","../../reducers/profile",90,"_search","_search2","loadMore","isBusy","loadUsers","page","ev","count","more","pages","setSpecialProps","PRELOADED_DATA_KEY","TITLE","API_FILTER","_ajax$get","users","getEmptyMessage","showRank","cols","getMoreButton","placeholder","getListBody","../search","../users-list/root",91,"_followers","_followers2","_Followers","./followers",92,"_modalMessage","_modalMessage2","is_avatar_locked","avatar_lock_user_message","avatar_lock_staff_message","moderate_avatar","isValid","apiResponse","rows","getFormBody","getModalBody","../../modal-loader","../../modal-message","../../yes-no-switch",93,"moderate_username",94,"countdown","isDeleted","with_content","getButtonLabel","getDeletedBody","getForm","../../../services/polls",95,"_avatarControls","_avatarControls2","_changeUsername","_changeUsername2","_deleteAccount","_deleteAccount2","showAvatarDialog","show","showRenameDialog","showDeleteDialog","can_moderate_avatar","can_rename","can_delete","getAvatarButton","getRenameButton","getDeleteButton","../../../services/modal","./avatar-controls","./change-username","./delete-account",96,"meta","getMeta","_SideNav","toggleModeration","showSpecialOptions","getSpecialOptions",97,"COMPONENTS","_banDetails","_banDetails2","_follows","_follows2","_Header","_Header2","baseClass","getNavDropdown","Placeholder","route","follows","ban-details","./Header","./ban-details","./follows","./username-history",98,"loadChanges","emptyMessage","../../reducers/username-history","../username-history",99,"_register","_register2","showRegisterModal","account_activation","load","../services/captcha","../services/modal","./register.js",100,"RegisterComplete","RegisterForm","_passwordStrength","_passwordStrength2","captcha","validator","hide","aria-describedby","form","getLegalFootNote","activation","getLead","getSubscript","completeRegistration","signIn","../index","../services/ajax","../services/auth","../utils/banned-page","./button","./form-group","./password-strength",101,"LinkSent","RequestLinkForm","reset",102,"AccountInactivePage","RequestResetForm","_reactDom","_reactDom2","showInactivePage","getActivateButton","render","react-dom",103,"PasswordChangedPage","ResetPasswordForm","_signIn","_signIn2","showSignIn","softSignOut","remove","./sign-in.js",104,105,"change","choice","getChoice",106,"showActivation","find","val","getCsrfToken","submit","getActivationButton",107,"snackbar","TYPES_CLASSES","snackbarClass","isVisible","getSnackbarClass",108,"CompactGuestNav","GuestNav","GuestMenu","_registerButton","_registerButton2","showSignInModal","_GuestMenu","showGuestMenu","../../services/mobile-navbar-dropdown","../../services/modal","../register-button","../sign-in.js",109,"_guestNav","_userNav","UserNav","CompactUserNav","./guest-nav","./user-nav",110,"selectUserMenu","decision","changeAvatar","logout","showConnected","showUserMenu","../change-avatar/root",111,"is_banned","is_hidden","is_online_hidden","is_offline_hidden","is_online","is_offline","getClass","banned_until","ban_expires","last_click","getHelp",112,"_random","changed_by","changed_by_username","renderUserAvatar","renderUsername","old_username","new_username","changed_on","range","renderHistory","renderEmptyHistory","renderHistoryPreview","../utils/random","./avatar",113,"_userCard","_userCard2","_userPreview","_userPreview2","Pager","getColClassName","showStatus","./user-card","./user-preview",114,"getRankName","getUserJoinedOn",115,"../../utils/random",116,"days","trackedPeriod",117,"rankUrl","counter","../../avatar","../../user-status",118,"../../../utils/random",119,"_listItem","_listItem2","posters","getLeadMessage","./list-item",120,"_listEmpty","_listEmpty2","_listLoading","_listLoading2","_list","_list2","tracked_period","list","./list","./list-empty","./list-loading",121,"TabsNav","listUrl","navLinks","lists",122,"../../users-list/root",123,"_pager","_pager2","getPager","./pager",124,"_resetScroll","_resetScroll2","previous","first","page_range","getPreviousPage","getNextPage","getProgessBar","../../../utils/reset-scroll",125,"params","nextProps","getRankDescription","getComponent",126,"./active-posters/root","./rank/root",127,"toggle",128,"./utils/ordered-list",129,"patch","PATCH_USER","SIGN_IN","signOut","soft","SIGN_OUT","UPDATE_AVATAR","userId","_newState","UPDATE_USERNAME","_newState2","./users",130,"DEHYDRATE_PROFILE","PATCH_PROFILE","dehydrateStatus",131,"showSnackbar","SHOW_SNACKBAR","messageType","hideSnackbar","HIDE_SNACKBAR",132,"TICK",133,"changedBy","ADD_NAME_CHANGE","items","APPEND_HISTORY","DEHYDRATE_HISTORY","unshift","floor","now",134,"APPEND_USERS","DEHYDRATE_USERS",135,"_typeof","Symbol","iterator","Ajax","_cookieName","_csrfToken","_locks","cookieName","cookie","cookieRegex","RegExp","method","resolve","reject","xhr","headers","X-CSRFToken","contentType","dataType","jqXHR","responseJSON","statusText","ajax","lock","param","request","waiter","v","wait","processData","XMLHttpRequest","evt","lengthComputable","round","loaded","total",136,"Auth","local","modal","_local","syncSession","watchState","getState","watch","../reducers/auth",137,"Captcha","ReCaptcha","ReCaptchaComponent","QACaptcha","NoCaptcha","BaseCaptcha","include","_BaseCaptcha","_BaseCaptcha2","question","help_text","kwargs","grecaptcha","sitekey","siteKey","_BaseCaptcha3","recaptcha_site_key","captcha_type","../components/form-group",138,"Include","staticUrl","_staticUrl","_included","script","remote","cache",139,"storage","localStorage","LocalStorage","prefix","_prefix","_watchers","newValueJson","newValue","watcher","oldValue","itemString",140,"MobileNavbarDropdown","_element","_component","addClass","removeClass","../utils/mount-component",141,"Modal","unmountComponentAtNode",142,"PageTitle","forumName","_forumName","finalTitle","pageLabel",143,"Polls","poolServer","_stopped","pollId",144,"HIDE_ANIMATION_LENGTH","MESSAGE_SHOW_LENGTH","_timeout","alert","../reducers/snackbar",145,"StoreWrapper","_redux","_reducers","_initialState","reducer","createStore","combineReducers","redux",146,"Zxcvbn","zxcvbn","_loadingPromise","_loadedPromise",147,"changeState","Provider","getStore","RedrawedBannedPage","../components/banned-page","../services/store",148,"rowWidth","padding",149,"bytes",150,"rootElementId","connected","rootElement","finalComponent",151,"OrderedList","isOrdered","_items","order","values","values_only","_order","unordered","insertItem","insertAt","ordering","ordered","splice","iterations",152,"int","min","max",153,"scrollTo",154,"routes","childRoutes","onEnter","nextState","Router","_createBrowserHistory","_createBrowserHistory2","history/lib/createBrowserHistory",155,"EMAIL","test","minLength","limitValue","returnMessage","limit_value","show_value","maxLength","settings","USERNAME","password_length_min"],"mappings":"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","file":"misago.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = setTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        setTimeout(drainQueue, 0);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],2:[function(require,module,exports){\n(function (global){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Misago = undefined;\n\nvar _orderedList = require('../../../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[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    key: 'pop',\n    value: function pop(key) {\n      if (this.has(key)) {\n        var value = this._context[key];\n        this._context[key] = null;\n        return value;\n      } else {\n        return 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},{\"../../../misago/frontend/src/utils/ordered-list\":151}],3:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/ajax\":135}],4:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../../../../misago/frontend/src/services/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _modal = require('../../../../misago/frontend/src/services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _store = require('../../../../misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _localStorage = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/auth\":136,\"../../../../misago/frontend/src/services/local-storage\":139,\"../../../../misago/frontend/src/services/modal\":141,\"../../../../misago/frontend/src/services/store\":145}],5:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../misago/frontend/src/services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _captcha = require('../../../../misago/frontend/src/services/captcha');\n\nvar _captcha2 = _interopRequireDefault(_captcha);\n\nvar _include = require('../../../../misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _snackbar = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/ajax\":135,\"../../../../misago/frontend/src/services/captcha\":137,\"../../../../misago/frontend/src/services/include\":138,\"../../../../misago/frontend/src/services/snackbar\":144}],6:[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('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _authMessage = require('../../../../../misago/frontend/src/components/auth-message');\n\nvar _authMessage2 = _interopRequireDefault(_authMessage);\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/auth-message\":53,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/mount-component\":150,\"react-redux\":\"react-redux\"}],7:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bannedPage = require('../../../../../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.has('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},{\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/banned-page\":147}],8:[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 _root = require('../../../../../misago/frontend/src/components/categories/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mountComponent = require('../../../../../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(context) {\n  if (context.has('CATEGORIES')) {\n    (0, _mountComponent2.default)((0, _reactRedux.connect)(_root.select)(_root2.default), 'page-mount');\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:reset-password-form',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/components/categories/root\":61,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/mount-component\":150,\"react-redux\":\"react-redux\"}],9:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _root = require('../../../../../misago/frontend/src/components/options/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');\n\nvar _routedComponent2 = _interopRequireDefault(_routedComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.has('USER_OPTIONS')) {\n    (0, _routedComponent2.default)({\n      root: _index2.default.get('USERCP_URL'),\n      component: _root2.default,\n      paths: (0, _root.paths)()\n    });\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:options',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/components/options/root\":80,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/routed-component\":154}],10:[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 _root = require('../../../../../misago/frontend/src/components/profile/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');\n\nvar _routedComponent2 = _interopRequireDefault(_routedComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.has('PROFILE') && context.has('PROFILE_PAGES')) {\n    (0, _routedComponent2.default)({\n      root: _index2.default.get('PROFILE').absolute_url,\n      component: (0, _reactRedux.connect)(_root.select)(_root2.default),\n      paths: (0, _root.paths)()\n    });\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:profile',\n  initializer: initializer,\n  after: 'reducer:profile-dehydrate'\n});\n\n},{\"../../../../../misago/frontend/src/components/profile/root\":97,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/routed-component\":154,\"react-redux\":\"react-redux\"}],11:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestActivationLink = require('../../../../../misago/frontend/src/components/request-activation-link');\n\nvar _requestActivationLink2 = _interopRequireDefault(_requestActivationLink);\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/request-activation-link\":101,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/mount-component\":150}],12:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _requestPasswordReset = require('../../../../../misago/frontend/src/components/request-password-reset');\n\nvar _requestPasswordReset2 = _interopRequireDefault(_requestPasswordReset);\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/request-password-reset\":102,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/mount-component\":150}],13:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _resetPasswordForm = require('../../../../../misago/frontend/src/components/reset-password-form');\n\nvar _resetPasswordForm2 = _interopRequireDefault(_resetPasswordForm);\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/reset-password-form\":103,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/mount-component\":150}],14:[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('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../misago/frontend/src/components/snackbar');\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/snackbar\":107,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/mount-component\":150,\"react-redux\":\"react-redux\"}],15:[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('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _root = require('../../../../../misago/frontend/src/components/user-menu/root');\n\nvar _mountComponent = require('../../../../../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},{\"../../../../../misago/frontend/src/components/user-menu/root\":109,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/mount-component\":150,\"react-redux\":\"react-redux\"}],16:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _root = require('../../../../../misago/frontend/src/components/users/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _routedComponent = require('../../../../../misago/frontend/src/utils/routed-component');\n\nvar _routedComponent2 = _interopRequireDefault(_routedComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  if (context.has('USERS_LISTS')) {\n    (0, _routedComponent2.default)({\n      root: _index2.default.get('USERS_LIST_URL'),\n      component: _root2.default,\n      paths: (0, _root.paths)()\n    });\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'component:users',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/components/users/root\":126,\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/utils/routed-component\":154}],17:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/include\":138}],18:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _localStorage = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/local-storage\":139}],19:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/mobile-navbar-dropdown\":140}],20:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _modal = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/modal\":141}],21:[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('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"moment\":\"moment\"}],22:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _pageTitle = require('../../../../misago/frontend/src/services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer(context) {\n  _pageTitle2.default.init(context.get('SETTINGS').forum_name);\n}\n\n_index2.default.addInitializer({\n  name: 'page-title',\n  initializer: initializer\n});\n\n},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/page-title\":142}],23:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../../misago/frontend/src/services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../../../misago/frontend/src/services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _polls = require('../../../../misago/frontend/src/services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _polls2.default.init(_ajax2.default, _snackbar2.default);\n}\n\n_index2.default.addInitializer({\n  name: 'polls',\n  initializer: initializer\n});\n\n},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/ajax\":135,\"../../../../misago/frontend/src/services/polls\":143,\"../../../../misago/frontend/src/services/snackbar\":144}],24:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _auth = require('../../../../../misago/frontend/src/reducers/auth');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _store = require('../../../../../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},{\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/reducers/auth\":129,\"../../../../../misago/frontend/src/services/store\":145}],25:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _profile = require('../../../../../misago/frontend/src/reducers/profile');\n\nvar _store = require('../../../../../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  if (_index2.default.has('PROFILE')) {\n    _store2.default.dispatch((0, _profile.dehydrate)(_index2.default.get('PROFILE')));\n  }\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:profile-dehydrate',\n  initializer: initializer,\n  after: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/reducers/profile\":130,\"../../../../../misago/frontend/src/services/store\":145}],26:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _profile = require('../../../../../misago/frontend/src/reducers/profile');\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nvar _store = require('../../../../../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('profile', _profile2.default, {});\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:profile',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/reducers/profile\":130,\"../../../../../misago/frontend/src/services/store\":145}],27:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../../misago/frontend/src/reducers/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../../../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},{\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/reducers/snackbar\":131,\"../../../../../misago/frontend/src/services/store\":145}],28:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../../../../../misago/frontend/src/reducers/tick');\n\nvar _tick2 = _interopRequireDefault(_tick);\n\nvar _store = require('../../../../../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},{\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/reducers/tick\":132,\"../../../../../misago/frontend/src/services/store\":145}],29:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory = require('../../../../../misago/frontend/src/reducers/username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _store = require('../../../../../misago/frontend/src/services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction initializer() {\n  _store2.default.addReducer('username-history', _usernameHistory2.default, []);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:username-history',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/reducers/username-history\":133,\"../../../../../misago/frontend/src/services/store\":145}],30:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _users = require('../../../../../misago/frontend/src/reducers/users');\n\nvar _users2 = _interopRequireDefault(_users);\n\nvar _store = require('../../../../../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('users', _users2.default, []);\n}\n\n_index2.default.addInitializer({\n  name: 'reducer:users',\n  initializer: initializer,\n  before: 'store'\n});\n\n},{\"../../../../../misago/frontend/src/index\":128,\"../../../../../misago/frontend/src/reducers/users\":134,\"../../../../../misago/frontend/src/services/store\":145}],31:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _snackbar = require('../../../../misago/frontend/src/services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/snackbar\":144,\"../../../../misago/frontend/src/services/store\":145}],32:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _store = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/store\":145}],33:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _tick = require('../../../../misago/frontend/src/reducers/tick');\n\nvar _store = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/reducers/tick\":132,\"../../../../misago/frontend/src/services/store\":145}],34:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = initializer;\n\nvar _index = require('../../../../misago/frontend/src/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _include = require('../../../../misago/frontend/src/services/include');\n\nvar _include2 = _interopRequireDefault(_include);\n\nvar _zxcvbn = require('../../../../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},{\"../../../../misago/frontend/src/index\":128,\"../../../../misago/frontend/src/services/include\":138,\"../../../../misago/frontend/src/services/zxcvbn\":146}],35:[function(require,module,exports){\nvar pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n\n},{\"./lib/is_arguments.js\":36,\"./lib/keys.js\":37}],36:[function(require,module,exports){\nvar supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n\n},{}],37:[function(require,module,exports){\nexports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n\n},{}],38:[function(require,module,exports){\n/**\n * Indicates that navigation was caused by a call to history.push.\n */\n'use strict';\n\nexports.__esModule = true;\nvar PUSH = 'PUSH';\n\nexports.PUSH = PUSH;\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = 'REPLACE';\n\nexports.REPLACE = REPLACE;\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = 'POP';\n\nexports.POP = POP;\nexports['default'] = {\n  PUSH: PUSH,\n  REPLACE: REPLACE,\n  POP: POP\n};\n},{}],39:[function(require,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nexports.loopAsync = loopAsync;\n\nfunction loopAsync(turns, work, callback) {\n  var currentTurn = 0;\n  var isDone = false;\n\n  function done() {\n    isDone = true;\n    callback.apply(this, arguments);\n  }\n\n  function next() {\n    if (isDone) return;\n\n    if (currentTurn < turns) {\n      work.call(this, currentTurn++, next, done);\n    } else {\n      done.apply(this, arguments);\n    }\n  }\n\n  next();\n}\n},{}],40:[function(require,module,exports){\n(function (process){\n/*eslint-disable no-empty */\n'use strict';\n\nexports.__esModule = true;\nexports.saveState = saveState;\nexports.readState = readState;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar KeyPrefix = '@@History/';\nvar QuotaExceededError = 'QuotaExceededError';\nvar SecurityError = 'SecurityError';\n\nfunction createKey(key) {\n  return KeyPrefix + key;\n}\n\nfunction saveState(key, state) {\n  try {\n    window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined;\n\n      return;\n    }\n\n    if (error.name === QuotaExceededError && window.sessionStorage.length === 0) {\n      // Safari \"private mode\" throws QuotaExceededError.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined;\n\n      return;\n    }\n\n    throw error;\n  }\n}\n\nfunction readState(key) {\n  var json = undefined;\n  try {\n    json = window.sessionStorage.getItem(createKey(key));\n  } catch (error) {\n    if (error.name === SecurityError) {\n      // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n      // attempt to access window.sessionStorage.\n      process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined;\n\n      return null;\n    }\n  }\n\n  if (json) {\n    try {\n      return JSON.parse(json);\n    } catch (error) {\n      // Ignore invalid JSON.\n    }\n  }\n\n  return null;\n}\n}).call(this,require('_process'))\n},{\"_process\":1,\"warning\":52}],41:[function(require,module,exports){\n'use strict';\n\nexports.__esModule = true;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.getHashPath = getHashPath;\nexports.replaceHashPath = replaceHashPath;\nexports.getWindowPath = getWindowPath;\nexports.go = go;\nexports.getUserConfirmation = getUserConfirmation;\nexports.supportsHistory = supportsHistory;\nexports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash;\n\nfunction addEventListener(node, event, listener) {\n  if (node.addEventListener) {\n    node.addEventListener(event, listener, false);\n  } else {\n    node.attachEvent('on' + event, listener);\n  }\n}\n\nfunction removeEventListener(node, event, listener) {\n  if (node.removeEventListener) {\n    node.removeEventListener(event, listener, false);\n  } else {\n    node.detachEvent('on' + event, listener);\n  }\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  return window.location.href.split('#')[1] || '';\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(window.location.pathname + window.location.search + '#' + path);\n}\n\nfunction getWindowPath() {\n  return window.location.pathname + window.location.search + window.location.hash;\n}\n\nfunction go(n) {\n  if (n) window.history.go(n);\n}\n\nfunction getUserConfirmation(message, callback) {\n  callback(window.confirm(message));\n}\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) {\n    return false;\n  }\n  // FIXME: Work around our browser history not working correctly on Chrome\n  // iOS: https://github.com/rackt/react-router/issues/2565\n  if (ua.indexOf('CriOS') !== -1) {\n    return false;\n  }\n  return window.history && 'pushState' in window.history;\n}\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  var ua = navigator.userAgent;\n  return ua.indexOf('Firefox') === -1;\n}\n},{}],42:[function(require,module,exports){\n'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexports.canUseDOM = canUseDOM;\n},{}],43:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Actions = require('./Actions');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _createDOMHistory = require('./createDOMHistory');\n\nvar _createDOMHistory2 = _interopRequireDefault(_createDOMHistory);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve URLs.\n */\nfunction createBrowserHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n  !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Browser history needs a DOM') : _invariant2['default'](false) : undefined;\n\n  var forceRefresh = options.forceRefresh;\n\n  var isSupported = _DOMUtils.supportsHistory();\n  var useRefresh = !isSupported || forceRefresh;\n\n  function getCurrentLocation(historyState) {\n    historyState = historyState || window.history.state || {};\n\n    var path = _DOMUtils.getWindowPath();\n    var _historyState = historyState;\n    var key = _historyState.key;\n\n    var state = undefined;\n    if (key) {\n      state = _DOMStateStorage.readState(key);\n    } else {\n      state = null;\n      key = history.createKey();\n\n      if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null, path);\n    }\n\n    var location = _parsePath2['default'](path);\n\n    return history.createLocation(_extends({}, location, { state: state }), undefined, key);\n  }\n\n  function startPopStateListener(_ref) {\n    var transitionTo = _ref.transitionTo;\n\n    function popStateListener(event) {\n      if (event.state === undefined) return; // Ignore extraneous popstate events in WebKit.\n\n      transitionTo(getCurrentLocation(event.state));\n    }\n\n    _DOMUtils.addEventListener(window, 'popstate', popStateListener);\n\n    return function () {\n      _DOMUtils.removeEventListener(window, 'popstate', popStateListener);\n    };\n  }\n\n  function finishTransition(location) {\n    var basename = location.basename;\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n    var state = location.state;\n    var action = location.action;\n    var key = location.key;\n\n    if (action === _Actions.POP) return; // Nothing to do.\n\n    _DOMStateStorage.saveState(key, state);\n\n    var path = (basename || '') + pathname + search + hash;\n    var historyState = {\n      key: key\n    };\n\n    if (action === _Actions.PUSH) {\n      if (useRefresh) {\n        window.location.href = path;\n        return false; // Prevent location update.\n      } else {\n          window.history.pushState(historyState, null, path);\n        }\n    } else {\n      // REPLACE\n      if (useRefresh) {\n        window.location.replace(path);\n        return false; // Prevent location update.\n      } else {\n          window.history.replaceState(historyState, null, path);\n        }\n    }\n  }\n\n  var history = _createDOMHistory2['default'](_extends({}, options, {\n    getCurrentLocation: getCurrentLocation,\n    finishTransition: finishTransition,\n    saveState: _DOMStateStorage.saveState\n  }));\n\n  var listenerCount = 0,\n      stopPopStateListener = undefined;\n\n  function listenBefore(listener) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    var unlisten = history.listenBefore(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopPopStateListener();\n    };\n  }\n\n  function listen(listener) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    var unlisten = history.listen(listener);\n\n    return function () {\n      unlisten();\n\n      if (--listenerCount === 0) stopPopStateListener();\n    };\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (++listenerCount === 1) stopPopStateListener = startPopStateListener(history);\n\n    history.registerTransitionHook(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    history.unregisterTransitionHook(hook);\n\n    if (--listenerCount === 0) stopPopStateListener();\n  }\n\n  return _extends({}, history, {\n    listenBefore: listenBefore,\n    listen: listen,\n    registerTransitionHook: registerTransitionHook,\n    unregisterTransitionHook: unregisterTransitionHook\n  });\n}\n\nexports['default'] = createBrowserHistory;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./Actions\":38,\"./DOMStateStorage\":40,\"./DOMUtils\":41,\"./ExecutionEnvironment\":42,\"./createDOMHistory\":44,\"./parsePath\":49,\"_process\":1,\"invariant\":51}],44:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction createDOMHistory(options) {\n  var history = _createHistory2['default'](_extends({\n    getUserConfirmation: _DOMUtils.getUserConfirmation\n  }, options, {\n    go: _DOMUtils.go\n  }));\n\n  function listen(listener) {\n    !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined;\n\n    return history.listen(listener);\n  }\n\n  return _extends({}, history, {\n    listen: listen\n  });\n}\n\nexports['default'] = createDOMHistory;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./DOMUtils\":41,\"./ExecutionEnvironment\":42,\"./createHistory\":45,\"_process\":1,\"invariant\":51}],45:[function(require,module,exports){\n//import warning from 'warning'\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _deepEqual = require('deep-equal');\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _Actions = require('./Actions');\n\nvar _createLocation2 = require('./createLocation');\n\nvar _createLocation3 = _interopRequireDefault(_createLocation2);\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nvar _deprecate = require('./deprecate');\n\nvar _deprecate2 = _interopRequireDefault(_deprecate);\n\nfunction createRandomKey(length) {\n  return Math.random().toString(36).substr(2, length);\n}\n\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search &&\n  //a.action === b.action && // Different action !== location change.\n  a.key === b.key && _deepEqual2['default'](a.state, b.state);\n}\n\nvar DefaultKeyLength = 6;\n\nfunction createHistory() {\n  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n  var getCurrentLocation = options.getCurrentLocation;\n  var finishTransition = options.finishTransition;\n  var saveState = options.saveState;\n  var go = options.go;\n  var keyLength = options.keyLength;\n  var getUserConfirmation = options.getUserConfirmation;\n\n  if (typeof keyLength !== 'number') keyLength = DefaultKeyLength;\n\n  var transitionHooks = [];\n\n  function listenBefore(hook) {\n    transitionHooks.push(hook);\n\n    return function () {\n      transitionHooks = transitionHooks.filter(function (item) {\n        return item !== hook;\n      });\n    };\n  }\n\n  var allKeys = [];\n  var changeListeners = [];\n  var location = undefined;\n\n  function getCurrent() {\n    if (pendingLocation && pendingLocation.action === _Actions.POP) {\n      return allKeys.indexOf(pendingLocation.key);\n    } else if (location) {\n      return allKeys.indexOf(location.key);\n    } else {\n      return -1;\n    }\n  }\n\n  function updateLocation(newLocation) {\n    var current = getCurrent();\n\n    location = newLocation;\n\n    if (location.action === _Actions.PUSH) {\n      allKeys = [].concat(allKeys.slice(0, current + 1), [location.key]);\n    } else if (location.action === _Actions.REPLACE) {\n      allKeys[current] = location.key;\n    }\n\n    changeListeners.forEach(function (listener) {\n      listener(location);\n    });\n  }\n\n  function listen(listener) {\n    changeListeners.push(listener);\n\n    if (location) {\n      listener(location);\n    } else {\n      var _location = getCurrentLocation();\n      allKeys = [_location.key];\n      updateLocation(_location);\n    }\n\n    return function () {\n      changeListeners = changeListeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function confirmTransitionTo(location, callback) {\n    _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) {\n      _runTransitionHook2['default'](transitionHooks[index], location, function (result) {\n        if (result != null) {\n          done(result);\n        } else {\n          next();\n        }\n      });\n    }, function (message) {\n      if (getUserConfirmation && typeof message === 'string') {\n        getUserConfirmation(message, function (ok) {\n          callback(ok !== false);\n        });\n      } else {\n        callback(message !== false);\n      }\n    });\n  }\n\n  var pendingLocation = undefined;\n\n  function transitionTo(nextLocation) {\n    if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do.\n\n    pendingLocation = nextLocation;\n\n    confirmTransitionTo(nextLocation, function (ok) {\n      if (pendingLocation !== nextLocation) return; // Transition was interrupted.\n\n      if (ok) {\n        // treat PUSH to current path like REPLACE to be consistent with browsers\n        if (nextLocation.action === _Actions.PUSH) {\n          var prevPath = createPath(location);\n          var nextPath = createPath(nextLocation);\n\n          if (nextPath === prevPath) nextLocation.action = _Actions.REPLACE;\n        }\n\n        if (finishTransition(nextLocation) !== false) updateLocation(nextLocation);\n      } else if (location && nextLocation.action === _Actions.POP) {\n        var prevIndex = allKeys.indexOf(location.key);\n        var nextIndex = allKeys.indexOf(nextLocation.key);\n\n        if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL.\n      }\n    });\n  }\n\n  function push(location) {\n    transitionTo(createLocation(location, _Actions.PUSH, createKey()));\n  }\n\n  function replace(location) {\n    transitionTo(createLocation(location, _Actions.REPLACE, createKey()));\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function createKey() {\n    return createRandomKey(keyLength);\n  }\n\n  function createPath(location) {\n    if (location == null || typeof location === 'string') return location;\n\n    var pathname = location.pathname;\n    var search = location.search;\n    var hash = location.hash;\n\n    var result = pathname;\n\n    if (search) result += search;\n\n    if (hash) result += hash;\n\n    return result;\n  }\n\n  function createHref(location) {\n    return createPath(location);\n  }\n\n  function createLocation(location, action) {\n    var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n\n    if (typeof action === 'object') {\n      //warning(\n      //  false,\n      //  'The state (2nd) argument to history.createLocation is deprecated; use a ' +\n      //  'location descriptor instead'\n      //)\n\n      if (typeof location === 'string') location = _parsePath2['default'](location);\n\n      location = _extends({}, location, { state: action });\n\n      action = key;\n      key = arguments[3] || createKey();\n    }\n\n    return _createLocation3['default'](location, action, key);\n  }\n\n  // deprecated\n  function setState(state) {\n    if (location) {\n      updateLocationState(location, state);\n      updateLocation(location);\n    } else {\n      updateLocationState(getCurrentLocation(), state);\n    }\n  }\n\n  function updateLocationState(location, state) {\n    location.state = _extends({}, location.state, state);\n    saveState(location.key, location.state);\n  }\n\n  // deprecated\n  function registerTransitionHook(hook) {\n    if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook);\n  }\n\n  // deprecated\n  function unregisterTransitionHook(hook) {\n    transitionHooks = transitionHooks.filter(function (item) {\n      return item !== hook;\n    });\n  }\n\n  // deprecated\n  function pushState(state, path) {\n    if (typeof path === 'string') path = _parsePath2['default'](path);\n\n    push(_extends({ state: state }, path));\n  }\n\n  // deprecated\n  function replaceState(state, path) {\n    if (typeof path === 'string') path = _parsePath2['default'](path);\n\n    replace(_extends({ state: state }, path));\n  }\n\n  return {\n    listenBefore: listenBefore,\n    listen: listen,\n    transitionTo: transitionTo,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    createKey: createKey,\n    createPath: createPath,\n    createHref: createHref,\n    createLocation: createLocation,\n\n    setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'),\n    registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'),\n    unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'),\n    pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'),\n    replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead')\n  };\n}\n\nexports['default'] = createHistory;\nmodule.exports = exports['default'];\n},{\"./Actions\":38,\"./AsyncUtils\":39,\"./createLocation\":46,\"./deprecate\":47,\"./parsePath\":49,\"./runTransitionHook\":50,\"deep-equal\":35}],46:[function(require,module,exports){\n//import warning from 'warning'\n'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _Actions = require('./Actions');\n\nvar _parsePath = require('./parsePath');\n\nvar _parsePath2 = _interopRequireDefault(_parsePath);\n\nfunction createLocation() {\n  var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n  var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n  var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];\n\n  if (typeof location === 'string') location = _parsePath2['default'](location);\n\n  if (typeof action === 'object') {\n    //warning(\n    //  false,\n    //  'The state (2nd) argument to createLocation is deprecated; use a ' +\n    //  'location descriptor instead'\n    //)\n\n    location = _extends({}, location, { state: action });\n\n    action = key || _Actions.POP;\n    key = _fourthArg;\n  }\n\n  var pathname = location.pathname || '/';\n  var search = location.search || '';\n  var hash = location.hash || '';\n  var state = location.state || null;\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash,\n    state: state,\n    action: action,\n    key: key\n  };\n}\n\nexports['default'] = createLocation;\nmodule.exports = exports['default'];\n},{\"./Actions\":38,\"./parsePath\":49}],47:[function(require,module,exports){\n//import warning from 'warning'\n\n\"use strict\";\n\nexports.__esModule = true;\nfunction deprecate(fn) {\n  return fn;\n  //return function () {\n  //  warning(false, '[history] ' + message)\n  //  return fn.apply(this, arguments)\n  //}\n}\n\nexports[\"default\"] = deprecate;\nmodule.exports = exports[\"default\"];\n},{}],48:[function(require,module,exports){\n\"use strict\";\n\nexports.__esModule = true;\nfunction extractPath(string) {\n  var match = string.match(/^https?:\\/\\/[^\\/]*/);\n\n  if (match == null) return string;\n\n  return string.substring(match[0].length);\n}\n\nexports[\"default\"] = extractPath;\nmodule.exports = exports[\"default\"];\n},{}],49:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _extractPath = require('./extractPath');\n\nvar _extractPath2 = _interopRequireDefault(_extractPath);\n\nfunction parsePath(path) {\n  var pathname = _extractPath2['default'](path);\n  var search = '';\n  var hash = '';\n\n  process.env.NODE_ENV !== 'production' ? _warning2['default'](path === pathname, 'A path must be pathname + search + hash only, not a fully qualified URL like \"%s\"', path) : undefined;\n\n  var hashIndex = pathname.indexOf('#');\n  if (hashIndex !== -1) {\n    hash = pathname.substring(hashIndex);\n    pathname = pathname.substring(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n  if (searchIndex !== -1) {\n    search = pathname.substring(searchIndex);\n    pathname = pathname.substring(0, searchIndex);\n  }\n\n  if (pathname === '') pathname = '/';\n\n  return {\n    pathname: pathname,\n    search: search,\n    hash: hash\n  };\n}\n\nexports['default'] = parsePath;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"./extractPath\":48,\"_process\":1,\"warning\":52}],50:[function(require,module,exports){\n(function (process){\n'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction runTransitionHook(hook, location, callback) {\n  var result = hook(location, callback);\n\n  if (hook.length < 2) {\n    // Assume the hook runs synchronously and automatically\n    // call the callback with the return value.\n    callback(result);\n  } else {\n    process.env.NODE_ENV !== 'production' ? _warning2['default'](result === undefined, 'You should not \"return\" in a transition hook with a callback argument; call the callback instead') : undefined;\n  }\n}\n\nexports['default'] = runTransitionHook;\nmodule.exports = exports['default'];\n}).call(this,require('_process'))\n},{\"_process\":1,\"warning\":52}],51:[function(require,module,exports){\n/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (\"production\" !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n\n},{}],52:[function(require,module,exports){\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (\"production\" !== 'production') {\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n        '`warning(condition, format, ...args)` requires a warning ' +\n        'message argument'\n      );\n    }\n\n    if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n      throw new Error(\n        'The warning format should be able to uniquely identify this ' +\n        'warning. Please, use a more descriptive format than: ' + format\n      );\n    }\n\n    if (!condition) {\n      var argIndex = 0;\n      var message = 'Warning: ' +\n        format.replace(/%s/g, function() {\n          return args[argIndex++];\n        });\n      if (typeof console !== 'undefined') {\n        console.error(message);\n      }\n      try {\n        // This error was thrown as a convenience so that you can use this stack\n        // to find the callsite that caused this warning to fire.\n        throw new Error(message);\n      } catch(x) {}\n    }\n  };\n}\n\nmodule.exports = warning;\n\n},{}],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});\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\"}],54:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\"}],55:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _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', dangerouslySetInnerHTML: {\n            __html: this.props.message.html\n          } });\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          /* jshint ignore:start */\n          var title = interpolate(gettext(\"This ban expires on %(expires_on)s.\"), {\n            'expires_on': this.props.expires.format('LL, LT')\n          }, true);\n\n          var message = interpolate(gettext(\"This ban expires %(expires_on)s.\"), {\n            'expires_on': this.props.expires.fromNow()\n          }, true);\n\n          return _react2.default.createElement(\n            'abbr',\n            { title: title },\n            message\n          );\n          /* jshint ignore:end */\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\"}],56:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\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\":71,\"react\":\"react\"}],57:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _lastActivity = require('./last-activity');\n\nvar _lastActivity2 = _interopRequireDefault(_lastActivity);\n\nvar _readIcon = require('./read-icon');\n\nvar _readIcon2 = _interopRequireDefault(_readIcon);\n\nvar _stats = require('./stats');\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar _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: 'getClassName',\n    value: function getClassName() {\n      if (this.props.category.css_class) {\n        return 'panel panel-default panel-category panel-category-' + this.props.category.css_class;\n      } else {\n        return 'panel panel-default panel-category';\n      }\n    }\n  }, {\n    key: 'getHeadingClassName',\n    value: function getHeadingClassName() {\n      if (this.props.category.subcategories.length) {\n        return 'panel-heading';\n      } else {\n        return 'panel-heading heading-alone';\n      }\n    }\n  }, {\n    key: 'getCategoryDescription',\n    value: function getCategoryDescription() {\n      if (this.props.category.description) {\n        /* jshint ignore:start */\n        return _react2.default.createElement('div', { className: 'panel-body category-description',\n          dangerouslySetInnerHTML: {\n            __html: this.props.category.description.html\n          } });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getSubcategoryClass',\n    value: function getSubcategoryClass(category) {\n      if (category.css_class) {\n        return 'list-group-item category-subcategory subcategory-' + category.css_class;\n      } else {\n        return 'list-group-item category-subcategory';\n      }\n    }\n  }, {\n    key: 'getSubcategoryDescription',\n    value: function getSubcategoryDescription(category) {\n      if (category.description) {\n        /* jshint ignore:start */\n        return _react2.default.createElement('div', { className: 'subcategory-description',\n          dangerouslySetInnerHTML: {\n            __html: category.description.html\n          } });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getSubcategorySubcategoryClass',\n    value: function getSubcategorySubcategoryClass(category) {\n      if (category.css_class) {\n        return 'subcategory subcategory-' + category.css_class;\n      } else {\n        return 'subcategory';\n      }\n    }\n  }, {\n    key: 'getSubcategorySubcategories',\n    value: function getSubcategorySubcategories(category) {\n      var _this2 = this;\n\n      if (category.subcategories.length) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'ul',\n          { className: 'list-inline subcategory-subcategories' },\n          category.subcategories.map(function (category) {\n            return _react2.default.createElement(\n              'li',\n              { key: category.id },\n              _react2.default.createElement(\n                'a',\n                { href: category.absolute_url,\n                  className: _this2.getSubcategorySubcategoryClass(category) },\n                category.name\n              )\n            );\n          })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getSubcategories',\n    value: function getSubcategories() {\n      var _this3 = this;\n\n      if (this.props.category.subcategories.length) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'ul',\n          { className: 'list-group category-subcategories' },\n          this.props.category.subcategories.map(function (category) {\n            return _react2.default.createElement(\n              'li',\n              { className: _this3.getSubcategoryClass(category),\n                key: category.id },\n              _react2.default.createElement(\n                'div',\n                { className: 'title-row' },\n                _react2.default.createElement(\n                  'h4',\n                  null,\n                  _react2.default.createElement(_readIcon2.default, { category: category }),\n                  _react2.default.createElement(\n                    'a',\n                    { href: category.absolute_url, className: 'item-title' },\n                    category.name\n                  )\n                ),\n                _react2.default.createElement(_stats2.default, { category: category })\n              ),\n              _react2.default.createElement(_lastActivity2.default, { category: category }),\n              _this3.getSubcategoryDescription(category),\n              _this3.getSubcategorySubcategories(category)\n            );\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        { id: 'panel-category-' + this.props.category.id,\n          className: this.getClassName() },\n        _react2.default.createElement(\n          'div',\n          { className: this.getHeadingClassName() },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading-inblock' },\n            _react2.default.createElement(\n              'div',\n              { className: 'panel-heading-top-row' },\n              _react2.default.createElement(\n                'h3',\n                { className: 'panel-title' },\n                _react2.default.createElement(_readIcon2.default, { category: this.props.category }),\n                _react2.default.createElement(\n                  'a',\n                  { href: this.props.category.absolute_url, className: 'item-title' },\n                  this.props.category.name\n                )\n              ),\n              _react2.default.createElement(_stats2.default, { category: this.props.category })\n            ),\n            _react2.default.createElement(_lastActivity2.default, { category: this.props.category })\n          )\n        ),\n        this.getCategoryDescription(),\n        this.getSubcategories()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"./last-activity\":59,\"./read-icon\":60,\"./stats\":62,\"react\":\"react\"}],58:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\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: \"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(\"No categories are available.\")\n          ),\n          _react2.default.createElement(\n            \"p\",\n            null,\n            gettext(\"No categories are currently defined or you don't have permission to see them.\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],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\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: \"getLastPoster\",\n    value: function getLastPoster() {\n      if (this.props.category.last_poster_url) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          \"a\",\n          { href: this.props.category.last_poster_url,\n            className: \"item-title\" },\n          this.props.category.last_poster_name\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            \"span\",\n            { className: \"item-title\" },\n            this.props.category.last_poster_name\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: \"getThreadDetails\",\n    value: function getThreadDetails() {\n      /* jshint ignore:start */\n      return [_react2.default.createElement(\n        \"li\",\n        { className: \"thread-title\", key: \"title\" },\n        _react2.default.createElement(\n          \"a\",\n          { href: this.props.category.last_thread_url, className: \"item-title\" },\n          this.props.category.last_thread_title\n        )\n      ), _react2.default.createElement(\n        \"li\",\n        { className: \"poster-name\", key: \"poster\" },\n        this.getLastPoster()\n      ), _react2.default.createElement(\n        \"li\",\n        { className: \"thread-date\", key: \"date\" },\n        _react2.default.createElement(\n          \"abbr\",\n          { title: this.props.category.last_post_on.format('LL, LT') },\n          this.props.category.last_post_on.fromNow()\n        )\n      )];\n      /* jshint ignore:end */\n    }\n  }, {\n    key: \"getLastActivity\",\n    value: function getLastActivity() {\n      if (this.props.category.acl.can_browse) {\n        if (!this.props.category.acl.can_see_all_threads) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            \"li\",\n            { className: \"thread-message\" },\n            _react2.default.createElement(\n              \"span\",\n              { className: \"material-icon\" },\n              \"info_outline\"\n            ),\n            gettext(\"This category is private. You can see only your own threads within it.\")\n          );\n          /* jshint ignore:end */\n        } else if (this.props.category.last_thread_title) {\n            return this.getThreadDetails();\n          } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              \"li\",\n              { className: \"thread-message\" },\n              _react2.default.createElement(\n                \"span\",\n                { className: \"material-icon\" },\n                \"error_outline\"\n              ),\n              gettext(\"This category is empty.\")\n            );\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            \"li\",\n            { className: \"thread-message\" },\n            _react2.default.createElement(\n              \"span\",\n              { className: \"material-icon\" },\n              \"highlight_off\"\n            ),\n            gettext(\"This category is protected. You can't browse it's contents.\")\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        \"ul\",\n        { className: \"list-inline category-last-activity\" },\n        this.getLastActivity()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],60:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\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: 'getClassName',\n    value: function getClassName() {\n      if (this.props.category.is_read) {\n        return 'material-icon read-status item-read';\n      } else {\n        return 'material-icon read-status item-new';\n      }\n    }\n  }, {\n    key: 'getTitle',\n    value: function getTitle() {\n      if (this.props.category.is_closed) {\n        if (this.props.category.is_read) {\n          return gettext(\"This category has no new posts. (closed)\");\n        } else {\n          return gettext(\"This category has new posts. (closed)\");\n        }\n      } else {\n        if (this.props.category.is_read) {\n          return gettext(\"This category has no new posts.\");\n        } else {\n          return gettext(\"This category has new posts.\");\n        }\n      }\n    }\n  }, {\n    key: 'getIcon',\n    value: function getIcon() {\n      if (this.props.category.is_closed) {\n        if (this.props.category.is_read) {\n          return 'lock_outline';\n        } else {\n          return 'lock';\n        }\n      } else {\n        if (this.props.category.is_read) {\n          return 'chat_bubble_outline';\n        } else {\n          return 'chat_bubble';\n        }\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'span',\n        { className: this.getClassName(), title: this.getTitle() },\n        this.getIcon()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],61:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.select = select;\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _category = require('./category');\n\nvar _category2 = _interopRequireDefault(_category);\n\nvar _emptyMessage = require('./empty-message');\n\nvar _emptyMessage2 = _interopRequireDefault(_emptyMessage);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _polls = require('../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\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 dehydrate = function dehydrate(category) {\n  return Object.assign({}, category, {\n    last_post_on: category.last_post_on ? (0, _moment2.default)(category.last_post_on) : null,\n    subcategories: category.subcategories.map(dehydrate)\n  });\n};\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.update = function (data) {\n      _this.setState({\n        categories: data.map(dehydrate)\n      });\n    };\n\n    _this.state = {\n      categories: _index2.default.get('CATEGORIES').map(dehydrate)\n    };\n\n    _this.startPolling(_index2.default.get('CATEGORIES_API'));\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'startPolling',\n    value: function startPolling(api) {\n      _polls2.default.start({\n        poll: 'categories',\n        url: api,\n        frequency: 180 * 1000,\n        update: this.update\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getClassName',\n\n    /* jshint ignore:end */\n\n    value: function getClassName() {\n      if (this.state.categories.length) {\n        return 'page page-categories';\n      } else {\n        return 'page page-categories page-message';\n      }\n    }\n  }, {\n    key: 'getHeading',\n    value: function getHeading() {\n      if (_index2.default.get('CATEGORIES_ON_INDEX')) {\n        return _index2.default.get('SETTINGS').forum_name;\n      } else {\n        return gettext(\"Categories\");\n      }\n    }\n  }, {\n    key: 'getCategoriesList',\n    value: function getCategoriesList() {\n      if (this.state.categories.length) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'categories-list' },\n          this.state.categories.map(function (category) {\n            return _react2.default.createElement(_category2.default, { category: category, key: category.id });\n          })\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_emptyMessage2.default, null);\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: this.getClassName() },\n        _react2.default.createElement(\n          'div',\n          { className: 'page-header' },\n          _react2.default.createElement(\n            'div',\n            { className: 'container' },\n            _react2.default.createElement(\n              'h1',\n              null,\n              this.getHeading()\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          this.getCategoriesList()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(store) {\n  return {\n    'tick': store.tick.tick\n  };\n}\n\n},{\"../../index\":128,\"../../services/polls\":143,\"./category\":57,\"./empty-message\":58,\"moment\":\"moment\",\"react\":\"react\"}],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\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: \"getThreadsCount\",\n    value: function getThreadsCount() {\n      var string = ngettext(\"%(threads)s thread\", \"%(threads)s threads\", this.props.category.threads);\n\n      return interpolate(string, {\n        'threads': this.props.category.threads\n      }, true);\n    }\n  }, {\n    key: \"getPostsCount\",\n    value: function getPostsCount() {\n      var string = ngettext(\"%(posts)s post\", \"%(posts)s posts\", this.props.category.posts);\n\n      return interpolate(string, {\n        'posts': this.props.category.posts\n      }, true);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"ul\",\n        { className: \"list-inline category-stats\" },\n        _react2.default.createElement(\n          \"li\",\n          { className: \"category-threads\" },\n          this.getThreadsCount()\n        ),\n        _react2.default.createElement(\n          \"li\",\n          { className: \"category-posts\" },\n          this.getPostsCount()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],63:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar BASE_URL = $('base').attr('href') + 'user-avatar';\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.cropAvatar = function () {\n      if (_this.state.isLoading) {\n        return false;\n      }\n\n      _this.setState({\n        'isLoading': true\n      });\n\n      var avatarType = _this.props.upload ? 'crop_tmp' : 'crop_org';\n      var cropit = $('.crop-form');\n\n      _ajax2.default.post(_this.props.user.api_url.avatar, {\n        'avatar': avatarType,\n        'crop': {\n          'offset': cropit.cropit('offset'),\n          'zoom': cropit.cropit('zoom')\n        }\n      }).then(function (data) {\n        _this.props.onComplete(data.avatar_hash, data.options);\n        _snackbar2.default.success(data.detail);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this.setState({\n            'isLoading': false\n          });\n        } else {\n          _this.props.showError(rejection);\n        }\n      });\n    };\n\n    _this.state = {\n      'isLoading': false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getAvatarSize',\n    value: function getAvatarSize() {\n      if (this.props.upload) {\n        return this.props.options.crop_tmp.size;\n      } else {\n        return this.props.options.crop_org.size;\n      }\n    }\n  }, {\n    key: 'getAvatarSecret',\n    value: function getAvatarSecret() {\n      if (this.props.upload) {\n        return this.props.options.crop_tmp.secret;\n      } else {\n        return this.props.options.crop_org.secret;\n      }\n    }\n  }, {\n    key: 'getAvatarHash',\n    value: function getAvatarHash() {\n      return this.props.upload || this.props.user.avatar_hash;\n    }\n  }, {\n    key: 'getImagePath',\n    value: function getImagePath() {\n      return [BASE_URL, this.getAvatarSecret() + ':' + this.getAvatarHash(), this.props.user.id + '.png'].join('/');\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      var cropit = $('.crop-form');\n      cropit.width(this.getAvatarSize());\n\n      cropit.cropit({\n        'width': this.getAvatarSize(),\n        'height': this.getAvatarSize(),\n        'imageState': {\n          'src': this.getImagePath()\n        },\n        onImageLoaded: function onImageLoaded() {\n          if (_this2.props.upload) {\n            // center uploaded image\n            var zoomLevel = cropit.cropit('zoom');\n            var imageSize = cropit.cropit('imageSize');\n\n            // is it wider than taller?\n            if (imageSize.width > imageSize.height) {\n              var displayedWidth = imageSize.width * zoomLevel;\n              var offsetX = (displayedWidth - _this2.getAvatarSize()) / -2;\n\n              cropit.cropit('offset', {\n                'x': offsetX,\n                'y': 0\n              });\n            } else if (imageSize.width < imageSize.height) {\n              var displayedHeight = imageSize.height * zoomLevel;\n              var offsetY = (displayedHeight - _this2.getAvatarSize()) / -2;\n\n              cropit.cropit('offset', {\n                'x': 0,\n                'y': offsetY\n              });\n            }\n          } else {\n            // use preserved crop\n            var crop = _this2.props.options.crop_org.crop;\n            if (crop) {\n              cropit.cropit('zoom', crop.zoom);\n              cropit.cropit('offset', {\n                'x': crop.x,\n                'y': crop.y\n              });\n            }\n          }\n        }\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      $('.crop-form').cropit('disable');\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body modal-avatar-crop' },\n          _react2.default.createElement(\n            'div',\n            { className: 'crop-form' },\n            _react2.default.createElement('div', { className: 'cropit-image-preview' }),\n            _react2.default.createElement('input', { type: 'range', className: 'cropit-image-zoom-input' })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-6 col-md-offset-3' },\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.cropAvatar,\n                loading: this.state.isLoading,\n                className: 'btn-primary btn-block' },\n              this.props.upload ? gettext(\"Set avatar\") : gettext(\"Crop image\")\n            ),\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.props.showIndex,\n                disabled: this.state.isLoading,\n                className: 'btn-default btn-block' },\n              gettext(\"Cancel\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":135,\"../../services/snackbar\":144,\"../avatar\":54,\"../button\":56,\"react\":\"react\"}],64:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Gallery = exports.GalleryItem = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _batch = require('../../utils/batch');\n\nvar _batch2 = _interopRequireDefault(_batch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar GalleryItem = exports.GalleryItem = function (_React$Component) {\n  _inherits(GalleryItem, _React$Component);\n\n  function GalleryItem() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, GalleryItem);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(GalleryItem)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.select = function () {\n      _this.props.select(_this.props.image);\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n  /* jshint ignore:start */\n\n  _createClass(GalleryItem, [{\n    key: 'getClassName',\n\n    /* jshint ignore:end */\n\n    value: function getClassName() {\n      if (this.props.selection === this.props.image) {\n        if (this.props.disabled) {\n          return 'btn btn-avatar btn-disabled avatar-selected';\n        } else {\n          return 'btn btn-avatar avatar-selected';\n        }\n      } else if (this.props.disabled) {\n        return 'btn btn-avatar btn-disabled';\n      } else {\n        return 'btn btn-avatar';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'button',\n        { type: 'button',\n          className: this.getClassName(),\n          disabled: this.props.disabled,\n          onClick: this.select },\n        _react2.default.createElement('img', { src: _index2.default.get('MEDIA_URL') + this.props.image })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return GalleryItem;\n}(_react2.default.Component);\n\nvar Gallery = exports.Gallery = function (_React$Component2) {\n  _inherits(Gallery, _React$Component2);\n\n  function Gallery() {\n    _classCallCheck(this, Gallery);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Gallery).apply(this, arguments));\n  }\n\n  _createClass(Gallery, [{\n    key: 'render',\n    value: function render() {\n      var _this3 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'avatars-gallery' },\n        _react2.default.createElement(\n          'h3',\n          null,\n          this.props.name\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'avatars-gallery-images' },\n          (0, _batch2.default)(this.props.images, 4, null).map(function (row, i) {\n            return _react2.default.createElement(\n              'div',\n              { className: 'row', key: i },\n              row.map(function (item, i) {\n                return _react2.default.createElement(\n                  'div',\n                  { className: 'col-xs-3', key: i },\n                  item ? _react2.default.createElement(GalleryItem, { image: item,\n                    disabled: _this3.props.disabled,\n                    select: _this3.props.select,\n                    selection: _this3.props.selection }) : _react2.default.createElement('div', { className: 'blank-avatar' })\n                );\n              })\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return Gallery;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component3) {\n  _inherits(_class, _React$Component3);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this4 = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this4.select = function (image) {\n      _this4.setState({\n        selection: image\n      });\n    };\n\n    _this4.save = function () {\n      if (_this4.state.isLoading) {\n        return false;\n      }\n\n      _this4.setState({\n        'isLoading': true\n      });\n\n      _ajax2.default.post(_this4.props.user.api_url.avatar, {\n        avatar: 'galleries',\n        image: _this4.state.selection\n      }).then(function (response) {\n        _this4.setState({\n          'isLoading': false\n        });\n\n        _snackbar2.default.success(response.detail);\n        _this4.props.onComplete(response.avatar_hash, response.options);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this4.setState({\n            'isLoading': false\n          });\n        } else {\n          _this4.props.showError(rejection);\n        }\n      });\n    };\n\n    _this4.state = {\n      'selection': null,\n      'isLoading': false\n    };\n    return _this4;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      var _this5 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body modal-avatar-gallery' },\n          this.props.options.galleries.map(function (item, i) {\n            return _react2.default.createElement(Gallery, { name: item.name,\n              images: item.images,\n              selection: _this5.state.selection,\n              disabled: _this5.state.isLoading,\n              select: _this5.select,\n              key: i });\n          })\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-6 col-md-offset-3' },\n              _react2.default.createElement(\n                _button2.default,\n                { onClick: this.save,\n                  loading: this.state.isLoading,\n                  disabled: !this.state.selection,\n                  className: 'btn-primary btn-block' },\n                this.state.selection ? gettext(\"Save choice\") : gettext(\"Select avatar\")\n              ),\n              _react2.default.createElement(\n                _button2.default,\n                { onClick: this.props.showIndex,\n                  disabled: this.state.isLoading,\n                  className: 'btn-default btn-block' },\n                gettext(\"Cancel\")\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":128,\"../../services/ajax\":135,\"../../services/snackbar\":144,\"../../utils/batch\":148,\"../button\":56,\"react\":\"react\"}],65:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _loader = require('../loader');\n\nvar _loader2 = _interopRequireDefault(_loader);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.setGravatar = function () {\n      _this.callApi('gravatar');\n    };\n\n    _this.setGenerated = function () {\n      _this.callApi('generated');\n    };\n\n    _this.state = {\n      'isLoading': false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'callApi',\n    value: function callApi(avatarType) {\n      var _this2 = this;\n\n      if (this.state.isLoading) {\n        return false;\n      }\n\n      this.setState({\n        'isLoading': true\n      });\n\n      _ajax2.default.post(this.props.user.api_url.avatar, {\n        avatar: avatarType\n      }).then(function (response) {\n        _this2.setState({\n          'isLoading': false\n        });\n\n        _snackbar2.default.success(response.detail);\n        _this2.props.onComplete(response.avatar_hash, response.options);\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this2.setState({\n            'isLoading': false\n          });\n        } else {\n          _this2.props.showError(rejection);\n        }\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getGravatarButton',\n\n    /* jshint ignore:end */\n\n    value: function getGravatarButton() {\n      if (this.props.options.gravatar) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.setGravatar,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-gravatar' },\n          gettext(\"Download my Gravatar\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getCropButton',\n    value: function getCropButton() {\n      if (this.props.options.crop_org) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showCrop,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-crop' },\n          gettext(\"Re-crop uploaded image\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getUploadButton',\n    value: function getUploadButton() {\n      if (this.props.options.upload) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showUpload,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-upload' },\n          gettext(\"Upload new image\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getGalleryButton',\n    value: function getGalleryButton() {\n      if (this.props.options.galleries) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _button2.default,\n          { onClick: this.props.showGallery,\n            disabled: this.state.isLoading,\n            className: 'btn-default btn-block btn-avatar-gallery' },\n          gettext(\"Pick avatar from gallery\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getAvatarPreview',\n    value: function getAvatarPreview() {\n      /* jshint ignore:start */\n      var userPeview = {\n        id: this.props.user.id,\n        avatar_hash: this.props.options.avatar_hash\n      };\n      /* jshint ignore:end */\n\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: userPeview, 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: userPeview, size: '200' })\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-index' },\n        _react2.default.createElement(\n          'div',\n          { className: 'row' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-5' },\n            this.getAvatarPreview()\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-7' },\n            this.getGravatarButton(),\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.setGenerated,\n                disabled: this.state.isLoading,\n                className: 'btn-default btn-block btn-avatar-generate' },\n              gettext(\"Generate my individual avatar\")\n            ),\n            this.getCropButton(),\n            this.getUploadButton(),\n            this.getGalleryButton()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":135,\"../../services/snackbar\":144,\"../avatar\":54,\"../button\":56,\"../loader\":71,\"react\":\"react\"}],66:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.ChangeAvatarError = undefined;\nexports.select = select;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _crop = require('./crop');\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _upload = require('./upload');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _gallery = require('./gallery');\n\nvar _gallery2 = _interopRequireDefault(_gallery);\n\nvar _modalLoader = require('../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _users = require('../../reducers/users');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\n// jshint ignore:line\n\nvar ChangeAvatarError = exports.ChangeAvatarError = function (_React$Component) {\n  _inherits(ChangeAvatarError, _React$Component);\n\n  function ChangeAvatarError() {\n    _classCallCheck(this, ChangeAvatarError);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(ChangeAvatarError).apply(this, arguments));\n  }\n\n  _createClass(ChangeAvatarError, [{\n    key: 'getErrorReason',\n    value: function getErrorReason() {\n      if (this.props.reason) {\n        /* jshint ignore:start */\n        return _react2.default.createElement('p', { dangerouslySetInnerHTML: { __html: this.props.reason } });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body' },\n        _react2.default.createElement(\n          'div',\n          { className: 'message-icon' },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            'remove_circle_outline'\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'message-body' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.props.message\n          ),\n          this.getErrorReason()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return ChangeAvatarError;\n}(_react2.default.Component);\n\nvar _class = function (_React$Component2) {\n  _inherits(_class, _React$Component2);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this2, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this2), _this2.showError = function (error) {\n      _this2.setState({\n        error: error\n      });\n    }, _this2.showIndex = function () {\n      _this2.setState({\n        'component': _index2.default\n      });\n    }, _this2.showUpload = function () {\n      _this2.setState({\n        'component': _upload2.default\n      });\n    }, _this2.showCrop = function () {\n      _this2.setState({\n        'component': _crop2.default\n      });\n    }, _this2.showGallery = function () {\n      _this2.setState({\n        'component': _gallery2.default\n      });\n    }, _this2.completeFlow = function (avatarHash, options) {\n      _store2.default.dispatch((0, _users.updateAvatar)(_this2.props.user, avatarHash));\n\n      _this2.setState({\n        'component': _index2.default,\n        options: options\n      });\n    }, _temp), _possibleConstructorReturn(_this2, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this3 = this;\n\n      _ajax2.default.get(this.props.user.api_url.avatar).then(function (options) {\n        _this3.setState({\n          'component': _index2.default,\n          'options': options,\n          'error': null\n        });\n      }, function (rejection) {\n        _this3.showError(rejection);\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getBody',\n\n    /* jshint ignore:end */\n\n    value: function getBody() {\n      if (this.state) {\n        if (this.state.error) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(ChangeAvatarError, { message: this.state.error.detail,\n            reason: this.state.error.reason });\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(this.state.component, { options: this.state.options,\n              user: this.props.user,\n              onComplete: this.completeFlow,\n              showError: this.showError,\n              showIndex: this.showIndex,\n              showCrop: this.showCrop,\n              showUpload: this.showUpload,\n              showGallery: this.showGallery });\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_modalLoader2.default, null);\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.state && this.state.error) {\n        return \"modal-dialog modal-message modal-change-avatar\";\n      } else {\n        return \"modal-dialog modal-change-avatar\";\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getClassName(),\n          role: 'document' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-content' },\n          _react2.default.createElement(\n            'div',\n            { className: 'modal-header' },\n            _react2.default.createElement(\n              'button',\n              { type: 'button', className: 'close', 'data-dismiss': 'modal',\n                'aria-label': gettext(\"Close\") },\n              _react2.default.createElement(\n                'span',\n                { 'aria-hidden': 'true' },\n                '×'\n              )\n            ),\n            _react2.default.createElement(\n              'h4',\n              { className: 'modal-title' },\n              gettext(\"Change your avatar\")\n            )\n          ),\n          this.getBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(state) {\n  return {\n    'user': state.auth.user\n  };\n}\n\n},{\"../../reducers/users\":134,\"../../services/ajax\":135,\"../../services/store\":145,\"../modal-loader\":72,\"./crop\":63,\"./gallery\":64,\"./index\":65,\"./upload\":67,\"react\":\"react\"}],67:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _crop = require('./crop');\n\nvar _crop2 = _interopRequireDefault(_crop);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _fileSize = require('../../utils/file-size');\n\nvar _fileSize2 = _interopRequireDefault(_fileSize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.pickFile = function () {\n      document.getElementById('avatar-hidden-upload').click();\n    };\n\n    _this.uploadFile = function () {\n      var image = document.getElementById('avatar-hidden-upload').files[0];\n\n      var validationError = _this.validateFile(image);\n      if (validationError) {\n        _snackbar2.default.error(validationError);\n        return;\n      }\n\n      _this.setState({\n        image: image,\n        'preview': URL.createObjectURL(image),\n        'progress': 0\n      });\n\n      var data = new FormData();\n      data.append('avatar', 'upload');\n      data.append('image', image);\n\n      _ajax2.default.upload(_this.props.user.api_url.avatar, data, function (progress) {\n        _this.setState({\n          progress: progress\n        });\n      }).then(function (data) {\n        _this.setState({\n          'options': data.options,\n          'uploaded': data.detail\n        });\n        _snackbar2.default.info(gettext(\"Your image has been uploaded and you may now crop it.\"));\n      }, function (rejection) {\n        if (rejection.status === 400) {\n          _snackbar2.default.error(rejection.detail);\n          _this.setState({\n            'isLoading': false,\n            'image': null,\n            'progress': 0\n          });\n        } else {\n          _this.props.showError(rejection);\n        }\n      });\n    };\n\n    _this.state = {\n      'image': null,\n      'preview': null,\n      'progress': 0,\n      'uploaded': null\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'validateFile',\n    value: function validateFile(image) {\n      if (image.size > this.props.options.upload.limit) {\n        return interpolate(gettext(\"Selected file is too big. (%(filesize)s)\"), {\n          'filesize': (0, _fileSize2.default)(image.size)\n        }, true);\n      }\n\n      var invalidTypeMsg = gettext(\"Selected file type is not supported.\");\n      if (this.props.options.upload.allowed_mime_types.indexOf(image.type) === -1) {\n        return invalidTypeMsg;\n      }\n\n      var extensionFound = false;\n      var loweredFilename = image.name.toLowerCase();\n      this.props.options.upload.allowed_extensions.map(function (extension) {\n        if (loweredFilename.substr(extension.length * -1) === extension) {\n          extensionFound = true;\n        }\n      });\n\n      if (!extensionFound) {\n        return invalidTypeMsg;\n      }\n\n      return false;\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getUploadRequirements',\n\n    /* jshint ignore:end */\n\n    value: function getUploadRequirements(options) {\n      var extensions = options.allowed_extensions.map(function (extension) {\n        return extension.substr(1);\n      });\n\n      return interpolate(gettext(\"%(files)s files smaller than %(limit)s\"), {\n        'files': extensions.join(', '),\n        'limit': (0, _fileSize2.default)(options.limit)\n      }, true);\n    }\n  }, {\n    key: 'getUploadButton',\n    value: function getUploadButton() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-upload' },\n        _react2.default.createElement(\n          _button2.default,\n          { className: 'btn-pick-file',\n            onClick: this.pickFile },\n          _react2.default.createElement(\n            'div',\n            { className: 'material-icon' },\n            'input'\n          ),\n          gettext(\"Select file\")\n        ),\n        _react2.default.createElement(\n          'p',\n          { className: 'text-muted' },\n          this.getUploadRequirements(this.props.options.upload)\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getUploadProgressLabel',\n    value: function getUploadProgressLabel() {\n      return interpolate(gettext(\"%(progress)s % complete\"), {\n        'progress': this.state.progress\n      }, true);\n    }\n  }, {\n    key: 'getUploadProgress',\n    value: function getUploadProgress() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'modal-body modal-avatar-upload' },\n        _react2.default.createElement(\n          'div',\n          { className: 'upload-progress' },\n          _react2.default.createElement('img', { src: this.state.preview }),\n          _react2.default.createElement(\n            'div',\n            { className: 'progress' },\n            _react2.default.createElement(\n              'div',\n              { className: 'progress-bar', role: 'progressbar',\n                'aria-valuenow': '{this.state.progress}',\n                'aria-valuemin': '0', 'aria-valuemax': '100',\n                style: { width: this.state.progress + '%' } },\n              _react2.default.createElement(\n                'span',\n                { className: 'sr-only' },\n                this.getUploadProgressLabel()\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderUpload',\n    value: function renderUpload() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement('input', { type: 'file',\n          id: 'avatar-hidden-upload',\n          className: 'hidden-file-upload',\n          onChange: this.uploadFile }),\n        this.state.image ? this.getUploadProgress() : this.getUploadButton(),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'div',\n            { className: 'col-md-6 col-md-offset-3' },\n            _react2.default.createElement(\n              _button2.default,\n              { onClick: this.props.showIndex,\n                disabled: !!this.state.image,\n                className: 'btn-default btn-block' },\n              gettext(\"Cancel\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderCrop',\n    value: function renderCrop() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(_crop2.default, { options: this.state.options,\n        user: this.props.user,\n        upload: this.state.uploaded,\n        onComplete: this.props.onComplete,\n        showError: this.props.showError,\n        showIndex: this.props.showIndex });\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return this.state.uploaded ? this.renderCrop() : this.renderUpload();\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../services/ajax\":135,\"../../services/snackbar\":144,\"../../utils/file-size\":149,\"../button\":56,\"./crop\":63,\"react\":\"react\"}],68:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'isValidated',\n    value: function isValidated() {\n      return typeof this.props.validation !== \"undefined\";\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      var className = 'form-group';\n      if (this.isValidated()) {\n        className += ' has-feedback';\n        if (this.props.validation === null) {\n          className += ' has-success';\n        } else {\n          className += ' has-error';\n        }\n      }\n      return className;\n    }\n  }, {\n    key: 'getFeedback',\n    value: function getFeedback() {\n      var _this2 = this;\n\n      if (this.props.validation) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'help-block errors' },\n          this.props.validation.map(function (error, i) {\n            return _react2.default.createElement(\n              'p',\n              { key: _this2.props.for + 'FeedbackItem' + i },\n              error\n            );\n          })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFeedbackIcon',\n    value: function getFeedbackIcon() {\n      if (this.isValidated()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'material-icon form-control-feedback',\n            'aria-hidden': 'true', key: this.props.for + 'FeedbackIcon' },\n          this.props.validation ? 'clear' : 'check'\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFeedbackDescription',\n    value: function getFeedbackDescription() {\n      if (this.isValidated()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { id: this.props.for + '_status', className: 'sr-only' },\n          this.props.validation ? gettext('(error)') : gettext('(success)')\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getHelpText',\n    value: function getHelpText() {\n      if (this.props.helpText) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'p',\n          { className: 'help-block' },\n          this.props.helpText\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: this.getClassName() },\n        _react2.default.createElement(\n          'label',\n          { className: 'control-label ' + (this.props.labelClass || ''),\n            htmlFor: this.props.for || '' },\n          this.props.label + ':'\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.props.controlClass || '' },\n          this.props.children,\n          this.getFeedbackIcon(),\n          this.getFeedbackDescription(),\n          this.getFeedback(),\n          this.getHelpText(),\n          this.props.extra || null\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],69:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _validators = require('../utils/validators');\n\nvar _snackbar = require('../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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 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 = _defineProperty({}, name, event.target.value);\n\n        var formErrors = _this.state.errors || {};\n        formErrors[name] = _this.validateField(name, newState[name]);\n        newState.errors = formErrors;\n\n        _this.setState(newState);\n      };\n    }, _this.handleSubmit = function (event) {\n      // we don't reload page on submissions\n      event.preventDefault();\n      if (_this.state.isLoading) {\n        return;\n      }\n\n      if (_this.clean()) {\n        _this.setState({ isLoading: true });\n        var promise = _this.send();\n\n        if (promise) {\n          promise.then(function (success) {\n            _this.setState({ isLoading: false });\n            _this.handleSuccess(success);\n          }, function (rejection) {\n            _this.setState({ isLoading: false });\n            _this.handleError(rejection);\n          });\n        } else {\n          _this.setState({ isLoading: false });\n        }\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: 'validate',\n    value: function validate() {\n      var errors = {};\n      if (!this.state.validators) {\n        return errors;\n      }\n\n      var validators = {\n        required: this.state.validators.required || this.state.validators,\n        optional: this.state.validators.optional || {}\n      };\n\n      var validatedFields = [];\n\n      // add required fields to validation\n      for (var name in validators.required) {\n        if (validators.required.hasOwnProperty(name) && validators.required[name]) {\n          validatedFields.push(name);\n        }\n      }\n\n      // add optional fields to validation\n      for (var name in validators.optional) {\n        if (validators.optional.hasOwnProperty(name) && validators.optional[name]) {\n          validatedFields.push(name);\n        }\n      }\n\n      // validate fields values\n      for (var i in validatedFields) {\n        var name = validatedFields[i];\n        var fieldErrors = this.validateField(name, this.state[name]);\n\n        if (fieldErrors === null) {\n          errors[name] = null;\n        } else if (fieldErrors) {\n          errors[name] = fieldErrors;\n        }\n      }\n\n      return errors;\n    }\n  }, {\n    key: 'isValid',\n    value: function isValid() {\n      var errors = this.validate();\n      for (var field in errors) {\n        if (errors.hasOwnProperty(field)) {\n          if (errors[field] !== null) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    }\n  }, {\n    key: 'validateField',\n    value: function validateField(name, value) {\n      var errors = [];\n      if (!this.state.validators) {\n        return errors;\n      }\n\n      var validators = {\n        required: (this.state.validators.required || this.state.validators)[name],\n        optional: (this.state.validators.optional || {})[name]\n      };\n\n      var requiredError = validateRequired(value) || false;\n\n      if (validators.required) {\n        if (requiredError) {\n          errors = [requiredError];\n        } else {\n          for (var i in validators.required) {\n            var validationError = validators.required[i](value);\n            if (validationError) {\n              errors.push(validationError);\n            }\n          }\n        }\n\n        return errors.length ? errors : null;\n      } else if (requiredError === false && validators.optional) {\n        for (var i in validators.optional) {\n          var validationError = validators.optional[i](value);\n          if (validationError) {\n            errors.push(validationError);\n          }\n        }\n\n        return errors.length ? errors : null;\n      }\n\n      return false; // false === field wasn't validated\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'clean',\n    value: function clean() {\n      return true;\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return null;\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(success) {\n      return;\n    }\n  }, {\n    key: 'handleError',\n\n    /* jshint ignore:end */\n    value: function handleError(rejection) {\n      _snackbar2.default.apiError(rejection);\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../services/snackbar\":144,\"../utils/validators\":155,\"react\":\"react\"}],70:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'isActive',\n    value: function isActive() {\n      if (this.props.path) {\n        return document.location.pathname.indexOf(this.props.path) === 0;\n      } else {\n        return false;\n      }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.isActive()) {\n        return (this.props.className || '') + ' ' + (this.props.activeClassName || 'active');\n      } else {\n        return this.props.className || '';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'li',\n        { className: this.getClassName() },\n        this.props.children\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],71:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\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: this.props.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\"}],72:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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\":71,\"react\":\"react\"}],73:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _panelMessage = require('./panel-message');\n\nvar _panelMessage2 = _interopRequireDefault(_panelMessage);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\nvar _class = function (_PanelMessage) {\n  _inherits(_class, _PanelMessage);\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: '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: 'modal-body' },\n        _react2.default.createElement(\n          'div',\n          { className: 'message-icon' },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            this.props.icon || 'info_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.getHelpText()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_panelMessage2.default);\n\nexports.default = _class;\n\n},{\"./panel-message\":85,\"react\":\"react\"}],74:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _panelLoader = require('../../panel-loader');\n\nvar _panelLoader2 = _interopRequireDefault(_panelLoader);\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: 'panel panel-default panel-form' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel-heading' },\n          _react2.default.createElement(\n            'h3',\n            { className: 'panel-title' },\n            gettext(\"Change username\")\n          )\n        ),\n        _react2.default.createElement(_panelLoader2.default, null)\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../panel-loader\":84,\"react\":\"react\"}],75:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _panelMessage = require('../../panel-message');\n\nvar _panelMessage2 = _interopRequireDefault(_panelMessage);\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: 'getHelpText',\n    value: function getHelpText() {\n      if (this.props.options.next_on) {\n        return interpolate(gettext(\"You will be able to change your username %(next_change)s.\"), { 'next_change': this.props.options.next_on.fromNow() }, true);\n      } else {\n        return gettext(\"You have used up available name changes.\");\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'panel panel-default panel-form' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel-heading' },\n          _react2.default.createElement(\n            'h3',\n            { className: 'panel-title' },\n            gettext(\"Change username\")\n          )\n        ),\n        _react2.default.createElement(_panelMessage2.default, { message: gettext(\"You can't change your username at the moment.\"),\n          helpText: this.getHelpText() })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../panel-message\":85,\"react\":\"react\"}],76:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\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 _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\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 _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      username: '',\n\n      validators: {\n        username: [validators.usernameContent(), validators.usernameMinLength({\n          username_length_min: props.options.length_min\n        }), validators.usernameMaxLength({\n          username_length_max: props.options.length_max\n        })]\n      },\n\n      isLoading: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getHelpText',\n    value: function getHelpText() {\n      var phrases = [];\n\n      if (this.props.options.changes_left > 0) {\n        var message = ngettext(\"You can change your username %(changes_left)s more time.\", \"You can change your username %(changes_left)s more times.\", this.props.options.changes_left);\n\n        phrases.push(interpolate(message, {\n          'changes_left': this.props.options.changes_left\n        }, true));\n      }\n\n      if (this.props.user.acl.name_changes_expire > 0) {\n        var message = ngettext(\"Used changes redeem after %(name_changes_expire)s day.\", \"Used changes redeem after %(name_changes_expire)s days.\", this.props.user.acl.name_changes_expire);\n\n        phrases.push(interpolate(message, {\n          'name_changes_expire': this.props.user.acl.name_changes_expire\n        }, true));\n      }\n\n      return phrases.length ? phrases.join(' ') : null;\n    }\n  }, {\n    key: 'clean',\n    value: function clean() {\n      var errors = this.validate();\n      if (errors.username) {\n        _snackbar2.default.error(errors.username[0]);\n        return false;\n      }if (this.state.username.trim() === this.props.user.username) {\n        _snackbar2.default.info(gettext(\"Your new username is same as current one.\"));\n        return false;\n      } else {\n        return true;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.username, {\n        'username': this.state.username\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(success) {\n      this.setState({\n        'username': ''\n      });\n\n      this.props.complete(success.username, success.slug, success.options);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      _snackbar2.default.apiError(rejection);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change username\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"New username\"), 'for': 'id_username',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n                helpText: this.getHelpText() },\n              _react2.default.createElement('input', { type: 'text', id: 'id_username', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('username'),\n                value: this.state.username })\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Change username\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../services/ajax\":135,\"../../../services/snackbar\":144,\"../../../utils/validators\":155,\"../../button\":56,\"../../form\":69,\"../../form-group\":68,\"react\":\"react\"}],77:[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\nvar _formLoading = require('./form-loading');\n\nvar _formLoading2 = _interopRequireDefault(_formLoading);\n\nvar _formLocked = require('./form-locked');\n\nvar _formLocked2 = _interopRequireDefault(_formLocked);\n\nvar _form = require('./form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _usernameHistory = require('../../username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory3 = require('../../../reducers/username-history');\n\nvar _users = require('../../../reducers/users');\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _pageTitle = require('../../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nvar _snackbar = require('../../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// 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.onComplete = function (username, slug, options) {\n      _this.setState({\n        options: options\n      });\n\n      _store2.default.dispatch((0, _usernameHistory3.addNameChange)({ username: username, slug: slug }, _this.props.user, _this.props.user));\n      _store2.default.dispatch((0, _users.updateUsername)(_this.props.user, username, slug));\n\n      _snackbar2.default.success(gettext(\"Your username has been changed successfully.\"));\n    };\n\n    _this.state = {\n      isLoaded: false,\n      options: null\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      _pageTitle2.default.set({\n        title: gettext(\"Change username\"),\n        parent: gettext(\"Change your options\")\n      });\n\n      Promise.all([_ajax2.default.get(this.props.user.api_url.username), _ajax2.default.get(_index2.default.get('USERNAME_CHANGES_API'), { user: this.props.user.id })]).then(function (data) {\n        _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data[1].results));\n\n        _this2.setState({\n          isLoaded: true,\n          options: {\n            changes_left: data[0].changes_left,\n            length_min: data[0].length_min,\n            length_max: data[0].length_max,\n            next_on: data[0].next_on ? (0, _moment2.default)(data[0].next_on) : null\n          }\n        });\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getChangeForm',\n\n    /* jshint ignore:end */\n\n    value: function getChangeForm() {\n      if (this.state.isLoaded) {\n        if (this.state.options.changes_left > 0) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_form2.default, { user: this.props.user,\n            options: this.state.options,\n            complete: this.onComplete });\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(_formLocked2.default, { options: this.state.options });\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_formLoading2.default, null);\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        null,\n        this.getChangeForm(),\n        _react2.default.createElement(_usernameHistory2.default, { isLoaded: this.state.isLoaded,\n          changes: this.props['username-history'] })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":128,\"../../../reducers/username-history\":133,\"../../../reducers/users\":134,\"../../../services/ajax\":135,\"../../../services/page-title\":142,\"../../../services/snackbar\":144,\"../../../services/store\":145,\"../../username-history\":112,\"./form\":76,\"./form-loading\":74,\"./form-locked\":75,\"moment\":\"moment\",\"react\":\"react\"}],78:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('../form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('../form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _select = require('../select');\n\nvar _select2 = _interopRequireDefault(_select);\n\nvar _yesNoSwitch = require('../yes-no-switch');\n\nvar _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);\n\nvar _auth = require('../../reducers/auth');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _pageTitle = require('../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_Form) {\n  _inherits(_class, _Form);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.state = {\n      'isLoading': false,\n\n      'is_hiding_presence': props.user.is_hiding_presence,\n      'limits_private_thread_invites_to': props.user.limits_private_thread_invites_to,\n      'subscribe_to_started_threads': props.user.subscribe_to_started_threads,\n      'subscribe_to_replied_threads': props.user.subscribe_to_replied_threads,\n\n      'errors': {}\n    };\n\n    _this.privateThreadInvitesChoices = [{\n      'value': 0,\n      'icon': 'help_outline',\n      'label': gettext('Everybody')\n    }, {\n      'value': 1,\n      'icon': 'done_all',\n      'label': gettext('Users I follow')\n    }, {\n      'value': 2,\n      'icon': 'highlight_off',\n      'label': gettext('Nobody')\n    }];\n\n    _this.subscribeToChoices = [{\n      'value': 0,\n      'icon': 'bookmark_border',\n      'label': gettext('No')\n    }, {\n      'value': 1,\n      'icon': 'bookmark',\n      'label': gettext('Bookmark')\n    }, {\n      'value': 2,\n      'icon': 'mail',\n      'label': gettext('Bookmark with e-mail notification')\n    }];\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.options, {\n        is_hiding_presence: this.state.is_hiding_presence,\n        limits_private_thread_invites_to: this.state.limits_private_thread_invites_to,\n        subscribe_to_started_threads: this.state.subscribe_to_started_threads,\n        subscribe_to_replied_threads: this.state.subscribe_to_replied_threads\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess() {\n      _store2.default.dispatch((0, _auth.patchUser)({\n        is_hiding_presence: this.state.is_hiding_presence,\n        limits_private_thread_invites_to: this.state.limits_private_thread_invites_to,\n        subscribe_to_started_threads: this.state.subscribe_to_started_threads,\n        subscribe_to_replied_threads: this.state.subscribe_to_replied_threads\n      }));\n      _snackbar2.default.success(gettext(\"Your forum options have been changed.\"));\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        _snackbar2.default.error(gettext(\"Please reload page and try again.\"));\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: gettext(\"Forum options\"),\n        parent: gettext(\"Change your options\")\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change forum options\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              'fieldset',\n              null,\n              _react2.default.createElement(\n                'legend',\n                null,\n                gettext(\"Privacy settings\")\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Hide my presence\"),\n                  helpText: gettext(\"If you hide your presence, only members with permission to see hidden users will see when you are online.\"),\n                  'for': 'id_is_hiding_presence',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_is_hiding_presence',\n                  disabled: this.state.isLoading,\n                  iconOn: 'visibility_off',\n                  iconOff: 'visibility',\n                  labelOn: gettext(\"Hide my presence from other users\"),\n                  labelOff: gettext(\"Show my presence to other users\"),\n                  onChange: this.bindInput('is_hiding_presence'),\n                  value: this.state.is_hiding_presence })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Private thread invitations\"),\n                  'for': 'id_limits_private_thread_invites_to',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_limits_private_thread_invites_to',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('limits_private_thread_invites_to'),\n                  value: this.state.limits_private_thread_invites_to,\n                  choices: this.privateThreadInvitesChoices })\n              )\n            ),\n            _react2.default.createElement(\n              'fieldset',\n              null,\n              _react2.default.createElement(\n                'legend',\n                null,\n                gettext(\"Automatic subscriptions\")\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Threads I start\"),\n                  'for': 'id_subscribe_to_started_threads',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_subscribe_to_started_threads',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('subscribe_to_started_threads'),\n                  value: this.state.subscribe_to_started_threads,\n                  choices: this.subscribeToChoices })\n              ),\n              _react2.default.createElement(\n                _formGroup2.default,\n                { label: gettext(\"Threads I reply to\"),\n                  'for': 'id_subscribe_to_replied_threads',\n                  labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n                _react2.default.createElement(_select2.default, { id: 'id_subscribe_to_replied_threads',\n                  disabled: this.state.isLoading,\n                  onChange: this.bindInput('subscribe_to_replied_threads'),\n                  value: this.state.subscribe_to_replied_threads,\n                  choices: this.subscribeToChoices })\n              )\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Save changes\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../reducers/auth\":129,\"../../services/ajax\":135,\"../../services/page-title\":142,\"../../services/snackbar\":144,\"../../services/store\":145,\"../button\":56,\"../form\":69,\"../form-group\":68,\"../select\":105,\"../yes-no-switch\":127,\"react\":\"react\"}],79:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactNav = exports.SideNav = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouter = require('react-router');\n\nvar _li = require('../li');\n\nvar _li2 = _interopRequireDefault(_li);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n//jshint ignore:line\n\n//jshint ignore:line\n\nvar SideNav = exports.SideNav = function (_React$Component) {\n  _inherits(SideNav, _React$Component);\n\n  function SideNav() {\n    _classCallCheck(this, SideNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(SideNav).apply(this, arguments));\n  }\n\n  _createClass(SideNav, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'div',\n        { className: 'list-group nav-side' },\n        this.props.options.map(function (option) {\n          return _react2.default.createElement(\n            _reactRouter.Link,\n            { to: _this2.props.baseUrl + option.component + '/',\n              className: 'list-group-item',\n              activeClassName: 'active',\n              key: option.component },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              option.icon\n            ),\n            option.name\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return SideNav;\n}(_react2.default.Component);\n\nvar CompactNav = exports.CompactNav = function (_React$Component2) {\n  _inherits(CompactNav, _React$Component2);\n\n  function CompactNav() {\n    _classCallCheck(this, CompactNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));\n  }\n\n  _createClass(CompactNav, [{\n    key: 'render',\n    value: function render() {\n      var _this4 = this;\n\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu', role: 'menu' },\n        this.props.options.map(function (option) {\n          return _react2.default.createElement(\n            _li2.default,\n            { path: _this4.props.baseUrl + option.component + '/',\n              key: option.component },\n            _react2.default.createElement(\n              _reactRouter.Link,\n              { to: _this4.props.baseUrl + option.component + '/',\n                onClick: _this4.props.hideNav },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                option.icon\n              ),\n              option.name\n            )\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return CompactNav;\n}(_react2.default.Component);\n\n},{\"../../index\":128,\"../li\":70,\"react\":\"react\",\"react-router\":\"react-router\"}],80:[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;\nexports.paths = paths;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _navs = require('./navs');\n\nvar _forumOptions = require('./forum-options');\n\nvar _forumOptions2 = _interopRequireDefault(_forumOptions);\n\nvar _root = require('./change-username/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _root3 = require('./sign-in-credentials/root');\n\nvar _root4 = _interopRequireDefault(_root3);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\nvar _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.toggleNav = function () {\n      if (_this.state.dropdown) {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: true\n        });\n      }\n    };\n\n    _this.hideNav = function () {\n      _this.setState({\n        dropdown: false\n      });\n    };\n\n    _this.state = {\n      dropdown: false\n    };\n    return _this;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'getToggleNavClassName',\n\n    /* jshint ignore:end */\n\n    value: function getToggleNavClassName() {\n      if (this.state.dropdown) {\n        return 'btn btn-default btn-icon open';\n      } else {\n        return 'btn btn-default btn-icon';\n      }\n    }\n  }, {\n    key: 'getCompactNavClassName',\n    value: function getCompactNavClassName() {\n      if (this.state.dropdown) {\n        return 'compact-nav open';\n      } else {\n        return 'compact-nav';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-options' },\n        _react2.default.createElement(\n          'div',\n          { className: 'page-header' },\n          _react2.default.createElement(\n            'div',\n            { className: 'container' },\n            _react2.default.createElement(\n              'h1',\n              { className: 'pull-left' },\n              gettext(\"Change your options\")\n            ),\n            _react2.default.createElement(\n              'button',\n              { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',\n                type: 'button',\n                onClick: this.toggleNav,\n                'aria-haspopup': 'true',\n                'aria-expanded': this.state.dropdown ? 'true' : 'false' },\n              _react2.default.createElement(\n                'i',\n                { className: 'material-icon' },\n                'menu'\n              )\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.getCompactNavClassName() },\n          _react2.default.createElement(_navs.CompactNav, { options: _index2.default.get('USER_OPTIONS'),\n            baseUrl: _index2.default.get('USERCP_URL'),\n            hideNav: this.hideNav })\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-3 hidden-xs hidden-sm' },\n              _react2.default.createElement(_navs.SideNav, { options: _index2.default.get('USER_OPTIONS'),\n                baseUrl: _index2.default.get('USERCP_URL') })\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-9' },\n              this.props.children\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(store) {\n  return {\n    'tick': store.tick.tick,\n    'user': store.auth.user,\n    'username-history': store['username-history']\n  };\n}\n\nfunction paths() {\n  return [{\n    path: _index2.default.get('USERCP_URL') + 'forum-options/',\n    component: (0, _reactRedux.connect)(select)(_forumOptions2.default)\n  }, {\n    path: _index2.default.get('USERCP_URL') + 'change-username/',\n    component: (0, _reactRedux.connect)(select)(_root2.default)\n  }, {\n    path: _index2.default.get('USERCP_URL') + 'sign-in-credentials/',\n    component: (0, _reactRedux.connect)(select)(_root4.default)\n  }];\n}\n\n},{\"../../index\":128,\"./change-username/root\":77,\"./forum-options\":78,\"./navs\":79,\"./sign-in-credentials/root\":83,\"react\":\"react\",\"react-redux\":\"react-redux\"}],81:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('../../form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('../../form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _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\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 _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      new_email: '',\n      password: '',\n\n      validators: {\n        new_email: [validators.email()],\n        password: []\n      },\n\n      isLoading: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'clean',\n    value: function clean() {\n      var errors = this.validate();\n      var lengths = [this.state.new_email.trim().length, this.state.password.trim().length];\n\n      if (lengths.indexOf(0) !== -1) {\n        _snackbar2.default.error(gettext(\"Fill out all fields.\"));\n        return false;\n      }\n\n      if (errors.new_email) {\n        _snackbar2.default.error(errors.new_email[0]);\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.change_email, {\n        new_email: this.state.new_email,\n        password: this.state.password\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(response) {\n      this.setState({\n        new_email: '',\n        password: ''\n      });\n\n      _snackbar2.default.success(response.detail);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        if (rejection.new_email) {\n          _snackbar2.default.error(rejection.new_email);\n        } else {\n          _snackbar2.default.error(rejection.password);\n        }\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement('input', { type: 'type', style: { display: 'none' } }),\n        _react2.default.createElement('input', { type: 'password', style: { display: 'none' } }),\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change e-mail address\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"New e-mail\"), 'for': 'id_new_email',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'text', id: 'id_new_email', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('new_email'),\n                value: this.state.new_email })\n            ),\n            _react2.default.createElement('hr', null),\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"Your current password\"), 'for': 'id_password',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'password', id: 'id_password', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('password'),\n                value: this.state.password })\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Change e-mail\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../services/ajax\":135,\"../../../services/snackbar\":144,\"../../../utils/validators\":155,\"../../button\":56,\"../../form\":69,\"../../form-group\":68,\"react\":\"react\"}],82:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('../../form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('../../form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _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\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      new_password: '',\n      repeat_password: '',\n      password: '',\n\n      validators: {\n        new_password: [validators.passwordMinLength(_index2.default.get('SETTINGS'))],\n        repeat_password: [],\n        password: []\n      },\n\n      isLoading: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'clean',\n    value: function clean() {\n      var errors = this.validate();\n      var lengths = [this.state.new_password.trim().length, this.state.repeat_password.trim().length, this.state.password.trim().length];\n\n      if (lengths.indexOf(0) !== -1) {\n        _snackbar2.default.error(gettext(\"Fill out all fields.\"));\n        return false;\n      }\n\n      if (errors.new_password) {\n        _snackbar2.default.error(errors.new_password[0]);\n        return false;\n      }\n\n      if (this.state.new_password.trim() !== this.state.repeat_password.trim()) {\n        _snackbar2.default.error(gettext(\"New passwords are different.\"));\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.user.api_url.change_password, {\n        new_password: this.state.new_password,\n        password: this.state.password\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(response) {\n      this.setState({\n        new_password: '',\n        repeat_password: '',\n        password: ''\n      });\n\n      _snackbar2.default.success(response.detail);\n    }\n  }, {\n    key: 'handleError',\n    value: function handleError(rejection) {\n      if (rejection.status === 400) {\n        if (rejection.new_password) {\n          _snackbar2.default.error(rejection.new_password);\n        } else {\n          _snackbar2.default.error(rejection.password);\n        }\n      } else {\n        _snackbar2.default.apiError(rejection);\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement('input', { type: 'type', style: { display: 'none' } }),\n        _react2.default.createElement('input', { type: 'password', style: { display: 'none' } }),\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default panel-form' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Change password\")\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-body' },\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"New password\"), 'for': 'id_new_password',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'password', id: 'id_new_password', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('new_password'),\n                value: this.state.new_password })\n            ),\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"Repeat password\"), 'for': 'id_repeat_password',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'password', id: 'id_repeat_password', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('repeat_password'),\n                value: this.state.repeat_password })\n            ),\n            _react2.default.createElement('hr', null),\n            _react2.default.createElement(\n              _formGroup2.default,\n              { label: gettext(\"Your current password\"), 'for': 'id_password',\n                labelClass: 'col-sm-4', controlClass: 'col-sm-8' },\n              _react2.default.createElement('input', { type: 'password', id: 'id_password', className: 'form-control',\n                disabled: this.state.isLoading,\n                onChange: this.bindInput('password'),\n                value: this.state.password })\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-footer' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-sm-8 col-sm-offset-4' },\n                _react2.default.createElement(\n                  _button2.default,\n                  { className: 'btn-primary', loading: this.state.isLoading },\n                  gettext(\"Change password\")\n                )\n              )\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../index\":128,\"../../../services/ajax\":135,\"../../../services/snackbar\":144,\"../../../utils/validators\":155,\"../../button\":56,\"../../form\":69,\"../../form-group\":68,\"react\":\"react\"}],83:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _changeEmail = require('./change-email');\n\nvar _changeEmail2 = _interopRequireDefault(_changeEmail);\n\nvar _changePassword = require('./change-password');\n\nvar _changePassword2 = _interopRequireDefault(_changePassword);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _pageTitle = require('../../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\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() {\n    _classCallCheck(this, _class);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments));\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: gettext(\"Change email or password\"),\n        parent: gettext(\"Change your options\")\n      });\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        null,\n        _react2.default.createElement(_changeEmail2.default, { user: this.props.user }),\n        _react2.default.createElement(_changePassword2.default, { user: this.props.user }),\n        _react2.default.createElement(\n          'p',\n          { className: 'message-line' },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            'warning'\n          ),\n          _react2.default.createElement(\n            'a',\n            { href: _index2.default.get('FORGOTTEN_PASSWORD_URL') },\n            gettext(\"Change forgotten password\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":128,\"../../../services/page-title\":142,\"./change-email\":81,\"./change-password\":82,\"react\":\"react\"}],84:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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: 'panel-body panel-body-loading' },\n        _react2.default.createElement(_loader2.default, { className: 'loader loader-spaced' })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"./loader\":71,\"react\":\"react\"}],85:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\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: \"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: \"panel-body panel-message-body\" },\n        _react2.default.createElement(\n          \"div\",\n          { className: \"message-icon\" },\n          _react2.default.createElement(\n            \"span\",\n            { className: \"material-icon\" },\n            this.props.icon || 'info_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.getHelpText()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],86:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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\":146,\"react\":\"react\"}],87:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _followButton = require('./follow-button');\n\nvar _followButton2 = _interopRequireDefault(_followButton);\n\nvar _nav = require('./moderation/nav');\n\nvar _nav2 = _interopRequireDefault(_nav);\n\nvar _userStatus = require('../user-status');\n\nvar _userStatus2 = _interopRequireDefault(_userStatus);\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 _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: 'getUserStatus',\n    value: function getUserStatus() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'li',\n        { className: 'user-status-display' },\n        _react2.default.createElement(\n          _userStatus2.default,\n          { user: this.props.profile, status: this.props.profile.status },\n          _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.profile,\n            status: this.props.profile.status }),\n          _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.profile,\n            status: this.props.profile.status,\n            className: 'status-label' })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getUserRank',\n    value: function getUserRank() {\n      if (this.props.profile.rank.is_tab) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          { className: 'user-rank' },\n          _react2.default.createElement(\n            'a',\n            { href: this.props.profile.rank.absolute_url, className: 'item-title' },\n            this.props.profile.rank.name\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'li',\n            { className: 'user-rank' },\n            _react2.default.createElement(\n              'span',\n              { className: 'item-title' },\n              this.props.profile.rank.name\n            )\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getUserTitle',\n    value: function getUserTitle() {\n      if (this.props.profile.title) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          { className: 'user-title' },\n          this.props.profile.title\n        );\n        /* jshint ignore:end */\n      } else if (this.props.profile.rank.title) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'li',\n            { className: 'user-title' },\n            this.props.profile.rank.title\n          );\n          /* jshint ignore:end */\n        } else {\n            return null;\n          }\n    }\n  }, {\n    key: 'getJoinedOn',\n    value: function getJoinedOn() {\n      /* jshint ignore:start */\n      var title = interpolate(gettext(\"Joined on %(joined_on)s\"), {\n        'joined_on': this.props.profile.joined_on.format('LL, LT')\n      }, true);\n\n      var age = interpolate(gettext(\"Joined %(joined_on)s\"), {\n        'joined_on': this.props.profile.joined_on.fromNow()\n      }, true);\n\n      return _react2.default.createElement(\n        'li',\n        { className: 'user-joined-on' },\n        _react2.default.createElement(\n          'abbr',\n          { title: title },\n          age\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getEmail',\n    value: function getEmail() {\n      if (this.props.profile.email) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          { className: 'user-email' },\n          _react2.default.createElement(\n            'a',\n            { href: 'mailto:' + this.props.profile.email, className: 'item-title' },\n            this.props.profile.email\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getFollowButton',\n    value: function getFollowButton() {\n      if (this.props.profile.acl.can_follow) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_followButton2.default, { className: 'btn btn-aligned hidden-xs hidden-sm',\n          profile: this.props.profile });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getModerationButton',\n    value: function getModerationButton() {\n      if (this.props.profile.acl.can_moderate) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'btn-group btn-aligned hidden-xs hidden-sm' },\n          _react2.default.createElement(\n            'button',\n            { className: 'btn btn-default btn-moderate dropdown-toggle',\n              type: 'button',\n              'data-toggle': 'dropdown',\n              'aria-haspopup': 'true',\n              'aria-expanded': 'false' },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'tonality'\n            ),\n            gettext(\"Moderation\")\n          ),\n          _react2.default.createElement(_nav2.default, { profile: this.props.profile })\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-header' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-9 col-md-offset-3' },\n              _react2.default.createElement(\n                'h1',\n                { className: 'pull-left' },\n                _react2.default.createElement(_avatar2.default, { user: this.props.profile, size: '100' }),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'user-name' },\n                  this.props.profile.username\n                )\n              ),\n              this.getFollowButton(),\n              this.getModerationButton(),\n              _react2.default.createElement(\n                'button',\n                { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',\n                  type: 'button',\n                  onClick: this.props.toggleNav,\n                  'aria-haspopup': 'true',\n                  'aria-expanded': this.props.dropdown ? 'true' : 'false' },\n                _react2.default.createElement(\n                  'i',\n                  { className: 'material-icon' },\n                  'menu'\n                )\n              )\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'header-stats' },\n          _react2.default.createElement(\n            'div',\n            { className: 'container' },\n            _react2.default.createElement(\n              'div',\n              { className: 'row' },\n              _react2.default.createElement(\n                'div',\n                { className: 'col-md-9 col-md-offset-3' },\n                _react2.default.createElement(\n                  'ul',\n                  { className: 'list-inline' },\n                  this.getUserStatus(),\n                  this.getUserRank(),\n                  this.getUserTitle(),\n                  this.getJoinedOn(),\n                  this.getEmail()\n                )\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},{\"../avatar\":54,\"../user-status\":111,\"./follow-button\":89,\"./moderation/nav\":95,\"react\":\"react\"}],88:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _panelLoader = require('../panel-loader');\n\nvar _panelLoader2 = _interopRequireDefault(_panelLoader);\n\nvar _panelMessage = require('../panel-message');\n\nvar _panelMessage2 = _interopRequireDefault(_panelMessage);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _polls = require('../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nvar _pageTitle = require('../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\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 (_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.update = function (ban) {\n      if (ban.expires_on) {\n        ban.expires_on = (0, _moment2.default)(ban.expires_on);\n      }\n\n      _this.setState({\n        isLoaded: true,\n        error: null,\n\n        ban: ban\n      });\n    };\n\n    _this.error = function (error) {\n      _this.setState({\n        isLoaded: true,\n        error: error.detail,\n        ban: null\n      });\n    };\n\n    if (_index2.default.has('PROFILE_BAN')) {\n      _this.initWithPreloadedData(_index2.default.pop('PROFILE_BAN'));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n\n    _this.startPolling(props.profile.api_url.ban);\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(ban) {\n      if (ban.expires_on) {\n        ban.expires_on = (0, _moment2.default)(ban.expires_on);\n      }\n\n      this.state = {\n        isLoaded: true,\n        ban: ban\n      };\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false\n      };\n    }\n  }, {\n    key: 'startPolling',\n    value: function startPolling(api) {\n      _polls2.default.start({\n        poll: 'ban-details',\n        url: api,\n        frequency: 90 * 1000,\n        update: this.update,\n        error: this.error\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'componentDidMount',\n\n    /* jshint ignore:end */\n\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: gettext(\"Ban details\"),\n        parent: this.props.profile.username\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      _polls2.default.stop('ban-details');\n    }\n  }, {\n    key: 'getUserMessage',\n    value: function getUserMessage() {\n      if (this.state.ban.user_message) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'panel-body ban-message ban-user-message' },\n          _react2.default.createElement(\n            'h4',\n            null,\n            gettext(\"User-shown ban message\")\n          ),\n          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {\n              __html: this.state.ban.user_message.html\n            } })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getStaffMessage',\n    value: function getStaffMessage() {\n      if (this.state.ban.staff_message) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'panel-body ban-message ban-staff-message' },\n          _react2.default.createElement(\n            'h4',\n            null,\n            gettext(\"Team-shown ban message\")\n          ),\n          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {\n              __html: this.state.ban.staff_message.html\n            } })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getExpirationMessage',\n    value: function getExpirationMessage() {\n      if (this.state.ban.expires_on) {\n        if (this.state.ban.expires_on.isAfter((0, _moment2.default)())) {\n          /* jshint ignore:start */\n          var _title = interpolate(gettext(\"This ban expires on %(expires_on)s.\"), {\n            'expires_on': this.state.ban.expires_on.format('LL, LT')\n          }, true);\n\n          var message = interpolate(gettext(\"This ban expires %(expires_on)s.\"), {\n            'expires_on': this.state.ban.expires_on.fromNow()\n          }, true);\n\n          return _react2.default.createElement(\n            'abbr',\n            { title: _title },\n            message\n          );\n          /* jshint ignore:end */\n        } else {\n            return gettext(\"This ban has expired.\");\n          }\n      } else {\n        return interpolate(gettext(\"%(username)s's ban is permanent.\"), {\n          'username': this.props.profile.username\n        }, true);\n      }\n    }\n  }, {\n    key: 'getPanelBody',\n    value: function getPanelBody() {\n      if (this.state.ban) {\n        if (Object.keys(this.state.ban).length) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'div',\n            null,\n            this.getUserMessage(),\n            this.getStaffMessage(),\n            _react2.default.createElement(\n              'div',\n              { className: 'panel-body ban-expires' },\n              _react2.default.createElement(\n                'h4',\n                null,\n                gettext(\"Ban expiration\")\n              ),\n              _react2.default.createElement(\n                'p',\n                { className: 'lead' },\n                this.getExpirationMessage()\n              )\n            )\n          );\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'div',\n              null,\n              _react2.default.createElement(_panelMessage2.default, { message: gettext(\"No ban is active at the moment.\") })\n            );\n            /* jshint ignore:end */\n          }\n      } else if (this.state.error) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'div',\n            null,\n            _react2.default.createElement(_panelMessage2.default, { icon: 'error_outline',\n              message: this.state.error })\n          );\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'div',\n              null,\n              _react2.default.createElement(_panelLoader2.default, null)\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: 'profile-ban-details' },\n        _react2.default.createElement(\n          'div',\n          { className: 'panel panel-default' },\n          _react2.default.createElement(\n            'div',\n            { className: 'panel-heading' },\n            _react2.default.createElement(\n              'h3',\n              { className: 'panel-title' },\n              gettext(\"Ban details\")\n            )\n          ),\n          this.getPanelBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":128,\"../../services/page-title\":142,\"../../services/polls\":143,\"../panel-loader\":84,\"../panel-message\":85,\"moment\":\"moment\",\"react\":\"react\"}],89:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _profile = require('../../reducers/profile');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\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.action = function () {\n      _this.setState({\n        isLoading: true\n      });\n\n      if (_this.props.profile.is_followed) {\n        _store2.default.dispatch((0, _profile.patchProfile)({\n          is_followed: false,\n          followers: _this.props.profile.followers - 1\n        }));\n      } else {\n        _store2.default.dispatch((0, _profile.patchProfile)({\n          is_followed: true,\n          followers: _this.props.profile.followers + 1\n        }));\n      }\n\n      _ajax2.default.post(_this.props.profile.api_url.follow).then(function (data) {\n        _this.setState({\n          isLoading: false\n        });\n\n        _store2.default.dispatch((0, _profile.patchProfile)(data));\n      }, function (rejection) {\n        _this.setState({\n          isLoading: false\n        });\n        _snackbar2.default.apiError(rejection);\n      });\n    };\n\n    _this.state = {\n      isLoading: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.props.profile.is_followed) {\n        return this.props.className + ' btn-default btn-following';\n      } else {\n        return this.props.className + ' btn-default btn-follow';\n      }\n    }\n  }, {\n    key: 'getIcon',\n    value: function getIcon() {\n      if (this.props.profile.is_followed) {\n        return 'favorite';\n      } else {\n        return 'favorite_border';\n      }\n    }\n  }, {\n    key: 'getLabel',\n    value: function getLabel() {\n      if (this.props.profile.is_followed) {\n        return gettext(\"Following\");\n      } else {\n        return gettext(\"Follow\");\n      }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'render',\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        _button2.default,\n        { className: this.getClassName(),\n          disabled: this.state.isLoading,\n          onClick: this.action },\n        _react2.default.createElement(\n          'span',\n          { className: 'material-icon' },\n          this.getIcon()\n        ),\n        this.getLabel()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../reducers/profile\":130,\"../../services/ajax\":135,\"../../services/snackbar\":144,\"../../services/store\":145,\"../button\":56,\"react\":\"react\"}],90:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _search = require('../search');\n\nvar _search2 = _interopRequireDefault(_search);\n\nvar _root = require('../users-list/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _users = require('../../reducers/users');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _pageTitle = require('../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.loadMore = function () {\n      _this.setState({\n        isBusy: true\n      });\n\n      _this.loadUsers(_this.state.page + 1, _this.state.search);\n    };\n\n    _this.search = function (ev) {\n      _this.setState({\n        isLoaded: false,\n        isBusy: true,\n\n        search: ev.target.value,\n\n        count: 0,\n        more: 0,\n\n        page: 1,\n        pages: 1\n      });\n\n      _this.loadUsers(1, ev.target.value);\n    };\n\n    _this.setSpecialProps();\n\n    if (_index2.default.has(_this.PRELOADED_DATA_KEY)) {\n      _this.initWithPreloadedData(_index2.default.pop(_this.PRELOADED_DATA_KEY));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'setSpecialProps',\n    value: function setSpecialProps() {\n      this.PRELOADED_DATA_KEY = 'PROFILE_FOLLOWERS';\n      this.TITLE = gettext('Followers');\n      this.API_FILTER = 'followers';\n    }\n  }, {\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(data) {\n      this.state = {\n        isLoaded: true,\n        isBusy: false,\n\n        search: '',\n\n        count: data.count,\n        more: data.more,\n\n        page: data.page,\n        pages: data.pages\n      };\n\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false,\n        isBusy: false,\n\n        search: '',\n\n        count: 0,\n        more: 0,\n\n        page: 1,\n        pages: 1\n      };\n\n      this.loadUsers();\n    }\n  }, {\n    key: 'loadUsers',\n    value: function loadUsers() {\n      var _ajax$get,\n          _this2 = this;\n\n      var page = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0];\n      var search = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n      _ajax2.default.get(_index2.default.get('USERS_API'), (_ajax$get = {}, _defineProperty(_ajax$get, this.API_FILTER, this.props.profile.id), _defineProperty(_ajax$get, 'name', search), _defineProperty(_ajax$get, 'page', page || 1), _ajax$get), 'user-' + this.API_FILTER).then(function (data) {\n        if (page === 1) {\n          _store2.default.dispatch((0, _users.dehydrate)(data.results));\n        } else {\n          _store2.default.dispatch((0, _users.append)(data.results));\n        }\n\n        _this2.setState({\n          isLoaded: true,\n          isBusy: false,\n\n          count: data.count,\n          more: data.more,\n\n          page: data.page,\n          pages: data.pages\n        });\n      }, function (rejection) {\n        _snackbar2.default.apiError(rejection);\n      });\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: this.TITLE,\n        parent: this.props.profile.username\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getLabel',\n\n    /* jshint ignore:end */\n\n    value: function getLabel() {\n      if (!this.state.isLoaded) {\n        return gettext('Loading...');\n      } else if (this.state.search) {\n        var message = ngettext(\"Found %(users)s user.\", \"Found %(users)s users.\", this.state.count);\n\n        return interpolate(message, {\n          'users': this.state.count\n        }, true);\n      } else if (this.props.profile.id === this.props.user.id) {\n        var message = ngettext(\"You have %(users)s follower.\", \"You have %(users)s followers.\", this.state.count);\n\n        return interpolate(message, {\n          'users': this.state.count\n        }, true);\n      } else {\n        var message = ngettext(\"%(username)s has %(users)s follower.\", \"%(username)s has %(users)s followers.\", this.state.count);\n\n        return interpolate(message, {\n          'username': this.props.profile.username,\n          'users': this.state.count\n        }, true);\n      }\n    }\n  }, {\n    key: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      if (this.state.search) {\n        return gettext(\"Search returned no users matching specified criteria.\");\n      } else if (this.props.user.id === this.props.profile.id) {\n        return gettext(\"You have no followers.\");\n      } else {\n        return interpolate(gettext(\"%(username)s has no followers.\"), {\n          'username': this.props.profile.username\n        }, true);\n      }\n    }\n  }, {\n    key: 'getMoreButton',\n    value: function getMoreButton() {\n      if (this.state.more) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'pager-more' },\n          _react2.default.createElement(\n            _button2.default,\n            { loading: this.state.isBusy,\n              onClick: this.loadMore },\n            interpolate(gettext(\"Show more (%(more)s)\"), {\n              'more': this.state.more\n            }, true)\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getListBody',\n    value: function getListBody() {\n      if (this.state.isLoaded && this.state.count === 0) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'p',\n          { className: 'lead' },\n          this.getEmptyMessage()\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'div',\n            null,\n            _react2.default.createElement(_root2.default, { isLoaded: this.state.isLoaded,\n              users: this.props.users,\n              showRank: true,\n              cols: 2 }),\n            this.getMoreButton()\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      return 'profile-' + this.API_FILTER;\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          'nav',\n          { className: 'toolbar' },\n          _react2.default.createElement(\n            'h3',\n            { className: 'toolbar-left' },\n            this.getLabel()\n          ),\n          _react2.default.createElement(_search2.default, { className: 'toolbar-right',\n            value: this.state.search,\n            onChange: this.search,\n            placeholder: gettext(\"Search history...\") })\n        ),\n        this.getListBody()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":128,\"../../reducers/users\":134,\"../../services/ajax\":135,\"../../services/page-title\":142,\"../../services/snackbar\":144,\"../../services/store\":145,\"../button\":56,\"../search\":104,\"../users-list/root\":113,\"react\":\"react\"}],91:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _followers = require('./followers');\n\nvar _followers2 = _interopRequireDefault(_followers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\nvar _class = function (_Followers) {\n  _inherits(_class, _Followers);\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: 'setSpecialProps',\n    value: function setSpecialProps() {\n      this.PRELOADED_DATA_KEY = 'PROFILE_FOLLOWS';\n      this.TITLE = gettext('Follows');\n      this.API_FILTER = 'follows';\n    }\n  }, {\n    key: 'getLabel',\n    value: function getLabel() {\n      if (!this.state.isLoaded) {\n        return gettext('Loading...');\n      } else if (this.state.search) {\n        var message = ngettext(\"Found %(users)s user.\", \"Found %(users)s users.\", this.state.count);\n\n        return interpolate(message, {\n          'users': this.state.count\n        }, true);\n      } else if (this.props.profile.id === this.props.user.id) {\n        var message = ngettext(\"You are following %(users)s user.\", \"You are following %(users)s users.\", this.state.count);\n\n        return interpolate(message, {\n          'users': this.state.count\n        }, true);\n      } else {\n        var message = ngettext(\"%(username)s is following %(users)s user.\", \"%(username)s is following %(users)s users.\", this.state.count);\n\n        return interpolate(message, {\n          'username': this.props.profile.username,\n          'users': this.state.count\n        }, true);\n      }\n    }\n  }, {\n    key: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      if (this.state.search) {\n        return gettext(\"Search returned no users matching specified criteria.\");\n      } else if (this.props.user.id === this.props.profile.id) {\n        return gettext(\"You are not following any users.\");\n      } else {\n        return interpolate(gettext(\"%(username)s is not following any users.\"), {\n          'username': this.props.profile.username\n        }, true);\n      }\n    }\n  }]);\n\n  return _class;\n}(_followers2.default);\n\nexports.default = _class;\n\n},{\"./followers\":90,\"react\":\"react\"}],92:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\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 _modalLoader = require('../../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _yesNoSwitch = require('../../yes-no-switch');\n\nvar _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);\n\nvar _modalMessage = require('../../modal-message');\n\nvar _modalMessage2 = _interopRequireDefault(_modalMessage);\n\nvar _users = require('../../../reducers/users');\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// 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      isLoaded: false,\n      isLoading: false,\n      error: null,\n\n      is_avatar_locked: '',\n      avatar_lock_user_message: '',\n      avatar_lock_staff_message: ''\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      _ajax2.default.get(this.props.profile.api_url.moderate_avatar).then(function (options) {\n        _this2.setState({\n          isLoaded: true,\n\n          is_avatar_locked: options.is_avatar_locked,\n          avatar_lock_user_message: options.avatar_lock_user_message,\n          avatar_lock_staff_message: options.avatar_lock_staff_message\n        });\n      }, function (rejection) {\n        _this2.setState({\n          isLoaded: true,\n          error: rejection.detail\n        });\n      });\n    }\n  }, {\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(this.validate().username[0]);\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.profile.api_url.moderate_avatar, {\n        is_avatar_locked: this.state.is_avatar_locked,\n        avatar_lock_user_message: this.state.avatar_lock_user_message,\n        avatar_lock_staff_message: this.state.avatar_lock_staff_message\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      _store2.default.dispatch((0, _users.updateAvatar)(this.props.profile, apiResponse.avatar_hash));\n      _snackbar2.default.success(gettext(\"Avatar controls have been changed.\"));\n    }\n  }, {\n    key: 'getFormBody',\n    value: function getFormBody() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body' },\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"Lock avatar\"),\n              helpText: gettext(\"Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one.\"),\n              'for': 'id_is_avatar_locked' },\n            _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_is_avatar_locked',\n              disabled: this.state.isLoading,\n              iconOn: 'lock_outline',\n              iconOff: 'lock_open',\n              labelOn: gettext(\"Disallow user from changing avatar\"),\n              labelOff: gettext(\"Allow user to change avatar\"),\n              onChange: this.bindInput('is_avatar_locked'),\n              value: this.state.is_avatar_locked })\n          ),\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"User message\"),\n              helpText: gettext(\"Optional message for user explaining why he/she is prohibited form changing avatar.\"),\n              'for': 'id_avatar_lock_user_message' },\n            _react2.default.createElement('textarea', { id: 'id_avatar_lock_user_message',\n              className: 'form-control',\n              rows: '4',\n              disabled: this.state.isLoading,\n              onChange: this.bindInput('avatar_lock_user_message'),\n              value: this.state.avatar_lock_user_message })\n          ),\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"Staff message\"),\n              helpText: gettext(\"Optional message for forum team members explaining why user is prohibited form changing avatar.\"),\n              'for': 'id_avatar_lock_staff_message' },\n            _react2.default.createElement('textarea', { id: 'id_avatar_lock_staff_message',\n              className: 'form-control',\n              rows: '4',\n              disabled: this.state.isLoading,\n              onChange: this.bindInput('avatar_lock_staff_message'),\n              value: this.state.avatar_lock_staff_message })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-default', 'data-dismiss': 'modal' },\n            gettext(\"Close\")\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary', loading: this.state.isLoading },\n            gettext(\"Save changes\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getModalBody',\n    value: function getModalBody() {\n      if (this.state.error) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',\n          message: this.state.error });\n        /* jshint ignore:end */\n      } else if (this.state.isLoaded) {\n          return this.getFormBody();\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.error) {\n        return \"modal-dialog modal-message modal-avatar-controls\";\n      } else {\n        return \"modal-dialog modal-avatar-controls\";\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(\"Avatar controls\")\n            )\n          ),\n          this.getModalBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../reducers/users\":134,\"../../../services/ajax\":135,\"../../../services/snackbar\":144,\"../../../services/store\":145,\"../../button\":56,\"../../form\":69,\"../../form-group\":68,\"../../modal-loader\":72,\"../../modal-message\":73,\"../../yes-no-switch\":127,\"react\":\"react\"}],93:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('../../form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('../../form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _modalLoader = require('../../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _modalMessage = require('../../modal-message');\n\nvar _modalMessage2 = _interopRequireDefault(_modalMessage);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory = require('../../../reducers/username-history');\n\nvar _users = require('../../../reducers/users');\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\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// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_Form) {\n  _inherits(_class, _Form);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.state = {\n      isLoaded: false,\n      isLoading: false,\n      error: null,\n\n      username: '',\n      validators: {\n        username: [validators.usernameContent(), validators.usernameMinLength(_index2.default.get('SETTINGS')), validators.usernameMaxLength(_index2.default.get('SETTINGS'))]\n      }\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      _ajax2.default.get(this.props.profile.api_url.moderate_username).then(function () {\n        _this2.setState({\n          isLoaded: true\n        });\n      }, function (rejection) {\n        _this2.setState({\n          isLoaded: true,\n          error: rejection.detail\n        });\n      });\n    }\n  }, {\n    key: 'clean',\n    value: function clean() {\n      if (this.isValid()) {\n        return true;\n      } else {\n        _snackbar2.default.error(this.validate().username[0]);\n        return false;\n      }\n    }\n  }, {\n    key: 'send',\n    value: function send() {\n      return _ajax2.default.post(this.props.profile.api_url.moderate_username, {\n        username: this.state.username\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess(apiResponse) {\n      this.setState({\n        username: ''\n      });\n\n      _store2.default.dispatch((0, _usernameHistory.addNameChange)(apiResponse, this.props.profile, this.props.user));\n      _store2.default.dispatch((0, _users.updateUsername)(this.props.profile, apiResponse.username, apiResponse.slug));\n\n      _snackbar2.default.success(gettext(\"Username has been changed.\"));\n    }\n  }, {\n    key: 'getFormBody',\n    value: function getFormBody() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body' },\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"New username\"), 'for': 'id_username' },\n            _react2.default.createElement('input', { type: 'text', id: 'id_username', className: 'form-control',\n              disabled: this.state.isLoading,\n              onChange: this.bindInput('username'),\n              value: this.state.username })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-default', 'data-dismiss': 'modal' },\n            gettext(\"Close\")\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-primary', loading: this.state.isLoading },\n            gettext(\"Change username\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getModalBody',\n    value: function getModalBody() {\n      if (this.state.error) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',\n          message: this.state.error });\n        /* jshint ignore:end */\n      } else if (this.state.isLoaded) {\n          return this.getFormBody();\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.error) {\n        return \"modal-dialog modal-message modal-rename-user\";\n      } else {\n        return \"modal-dialog modal-rename-user\";\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 username\")\n            )\n          ),\n          this.getModalBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../index\":128,\"../../../reducers/username-history\":133,\"../../../reducers/users\":134,\"../../../services/ajax\":135,\"../../../services/snackbar\":144,\"../../../services/store\":145,\"../../../utils/validators\":155,\"../../button\":56,\"../../form\":69,\"../../form-group\":68,\"../../modal-loader\":72,\"../../modal-message\":73,\"react\":\"react\"}],94:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _form = require('../../form');\n\nvar _form2 = _interopRequireDefault(_form);\n\nvar _formGroup = require('../../form-group');\n\nvar _formGroup2 = _interopRequireDefault(_formGroup);\n\nvar _modalLoader = require('../../modal-loader');\n\nvar _modalLoader2 = _interopRequireDefault(_modalLoader);\n\nvar _modalMessage = require('../../modal-message');\n\nvar _modalMessage2 = _interopRequireDefault(_modalMessage);\n\nvar _yesNoSwitch = require('../../yes-no-switch');\n\nvar _yesNoSwitch2 = _interopRequireDefault(_yesNoSwitch);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ajax = require('../../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _polls = require('../../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// 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.countdown = function () {\n      window.setTimeout(function () {\n        if (_this.state.countdown > 1) {\n          _this.setState({\n            countdown: _this.state.countdown - 1\n          });\n          _this.countdown();\n        } else if (!_this.state.confirm) {\n          _this.setState({\n            confirm: true\n          });\n        }\n      }, 1000);\n    };\n\n    _this.state = {\n      isLoaded: false,\n      isLoading: false,\n      isDeleted: false,\n      error: null,\n\n      countdown: 5,\n      confirm: false,\n\n      with_content: false\n    };\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _this2 = this;\n\n      _ajax2.default.get(this.props.profile.api_url.delete).then(function () {\n        _this2.setState({\n          isLoaded: true\n        });\n\n        _this2.countdown();\n      }, function (rejection) {\n        _this2.setState({\n          isLoaded: true,\n          error: rejection.detail\n        });\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'send',\n\n    /* jshint ignore:end */\n\n    value: function send() {\n      return _ajax2.default.post(this.props.profile.api_url.delete, {\n        with_content: this.state.with_content\n      });\n    }\n  }, {\n    key: 'handleSuccess',\n    value: function handleSuccess() {\n      _polls2.default.stop('user-profile');\n\n      if (this.state.with_content) {\n        this.setState({\n          isDeleted: interpolate(gettext(\"%(username)s's account, threads, posts and other content has been deleted.\"), {\n            'username': this.props.profile.username\n          }, true)\n        });\n      } else {\n        this.setState({\n          isDeleted: interpolate(gettext(\"%(username)s's account has been deleted and other content has been hidden.\"), {\n            'username': this.props.profile.username\n          }, true)\n        });\n      }\n    }\n  }, {\n    key: 'getButtonLabel',\n    value: function getButtonLabel() {\n      if (this.state.confirm) {\n        return interpolate(gettext(\"Delete %(username)s\"), {\n          'username': this.props.profile.username\n        }, true);\n      } else {\n        return interpolate(gettext(\"Please wait... (%(countdown)ss)\"), {\n          'countdown': this.state.countdown\n        }, true);\n      }\n    }\n  }, {\n    key: 'getForm',\n    value: function getForm() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'form',\n        { onSubmit: this.handleSubmit, className: 'form-horizontal' },\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-body' },\n          _react2.default.createElement(\n            _formGroup2.default,\n            { label: gettext(\"User content\"),\n              labelClass: 'col-sm-4', controlClass: 'col-sm-8',\n              'for': 'id_with_content' },\n            _react2.default.createElement(_yesNoSwitch2.default, { id: 'id_with_content',\n              disabled: this.state.isLoading,\n              labelOn: gettext(\"Delete together with user's account\"),\n              labelOff: gettext(\"Hide after deleting user's account\"),\n              onChange: this.bindInput('with_content'),\n              value: this.state.with_content })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'modal-footer' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button',\n              className: 'btn btn-default',\n              'data-dismiss': 'modal' },\n            gettext(\"Cancel\")\n          ),\n          _react2.default.createElement(\n            _button2.default,\n            { className: 'btn-danger',\n              loading: this.state.isLoading,\n              disabled: !this.state.confirm },\n            this.getButtonLabel()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getDeletedBody',\n    value: function getDeletedBody() {\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            'info_outline'\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'message-body' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.state.isDeleted\n          ),\n          _react2.default.createElement(\n            'p',\n            null,\n            _react2.default.createElement(\n              'a',\n              { href: _index2.default.get('USERS_LIST_URL') },\n              gettext(\"Return to users list\")\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getModalBody',\n    value: function getModalBody() {\n      if (this.state.error) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_modalMessage2.default, { icon: 'remove_circle_outline',\n          message: this.state.error });\n        /* jshint ignore:end */\n      } else if (this.state.isLoaded) {\n          if (this.state.isDeleted) {\n            return this.getDeletedBody();\n          } else {\n            return this.getForm();\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.error || this.state.isDeleted) {\n        return \"modal-dialog modal-message modal-delete-account\";\n      } else {\n        return \"modal-dialog modal-delete-account\";\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(\"Delete user account\")\n            )\n          ),\n          this.getModalBody()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_form2.default);\n\nexports.default = _class;\n\n},{\"../../../index\":128,\"../../../services/ajax\":135,\"../../../services/polls\":143,\"../../button\":56,\"../../form\":69,\"../../form-group\":68,\"../../modal-loader\":72,\"../../modal-message\":73,\"../../yes-no-switch\":127,\"react\":\"react\"}],95:[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 _reactRedux = require('react-redux');\n\nvar _avatarControls = require('./avatar-controls');\n\nvar _avatarControls2 = _interopRequireDefault(_avatarControls);\n\nvar _changeUsername = require('./change-username');\n\nvar _changeUsername2 = _interopRequireDefault(_changeUsername);\n\nvar _deleteAccount = require('./delete-account');\n\nvar _deleteAccount2 = _interopRequireDefault(_deleteAccount);\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// jshint ignore:line\n\n// jshint ignore:line\n\n/* jshint ignore:start */\nvar select = function select(store) {\n  return {\n    tick: store.tick,\n    user: store.auth,\n    profile: store.profile\n  };\n};\n/* jshint ignore:end */\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.showAvatarDialog = function () {\n      _modal2.default.show((0, _reactRedux.connect)(select)(_avatarControls2.default));\n    }, _this.showRenameDialog = function () {\n      _modal2.default.show((0, _reactRedux.connect)(select)(_changeUsername2.default));\n    }, _this.showDeleteDialog = function () {\n      _modal2.default.show((0, _reactRedux.connect)(select)(_deleteAccount2.default));\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'getAvatarButton',\n\n    /* jshint ignore:end */\n\n    value: function getAvatarButton() {\n      if (this.props.profile.acl.can_moderate_avatar) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link',\n              onClick: this.showAvatarDialog },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'portrait'\n            ),\n            gettext(\"Avatar controls\")\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getRenameButton',\n\n    /* jshint ignore:end */\n\n    value: function getRenameButton() {\n      if (this.props.profile.acl.can_rename) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link',\n              onClick: this.showRenameDialog },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'credit_card'\n            ),\n            gettext(\"Change username\")\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getDeleteButton',\n\n    /* jshint ignore:end */\n\n    value: function getDeleteButton() {\n      if (this.props.profile.acl.can_delete) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link',\n              onClick: this.showDeleteDialog },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'clear'\n            ),\n            gettext(\"Delete 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        'ul',\n        { className: 'dropdown-menu dropdown-menu-right', role: 'menu' },\n        this.getAvatarButton(),\n        this.getRenameButton(),\n        this.getDeleteButton(),\n        _react2.default.createElement('li', { className: 'divider hidden-md hidden-lg' }),\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-buttons hidden-md hidden-lg' },\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn btn-default btn-block',\n              onClick: this.props.toggleNav },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'menu'\n            ),\n            gettext(\"Menu\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../services/modal\":141,\"./avatar-controls\":92,\"./change-username\":93,\"./delete-account\":94,\"react\":\"react\",\"react-redux\":\"react-redux\"}],96:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactNav = exports.SideNav = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouter = require('react-router');\n\nvar _li = require('../li');\n\nvar _li2 = _interopRequireDefault(_li);\n\nvar _followButton = require('./follow-button');\n\nvar _followButton2 = _interopRequireDefault(_followButton);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n//jshint ignore:line\n// jshint ignore:line\n\n//jshint ignore:line\n\nvar SideNav = exports.SideNav = function (_React$Component) {\n  _inherits(SideNav, _React$Component);\n\n  function SideNav() {\n    _classCallCheck(this, SideNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(SideNav).apply(this, arguments));\n  }\n\n  _createClass(SideNav, [{\n    key: 'getMeta',\n    value: function getMeta(meta) {\n      if (meta) {\n        // jshint ignore:start\n        return _react2.default.createElement(\n          'span',\n          { className: 'badge' },\n          this.props.profile[meta.attr]\n        );\n        // jshint ignore:end\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'div',\n        { className: 'list-group nav-side' },\n        this.props.pages.map(function (page) {\n          return _react2.default.createElement(\n            _reactRouter.Link,\n            { to: _this2.props.baseUrl + page.component + '/',\n              className: 'list-group-item',\n              activeClassName: 'active',\n              key: page.component },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              page.icon\n            ),\n            page.name,\n            _this2.getMeta(page.meta)\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return SideNav;\n}(_react2.default.Component);\n\nvar CompactNav = exports.CompactNav = function (_SideNav) {\n  _inherits(CompactNav, _SideNav);\n\n  function CompactNav() {\n    _classCallCheck(this, CompactNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));\n  }\n\n  _createClass(CompactNav, [{\n    key: 'showSpecialOptions',\n    value: function showSpecialOptions() {\n      return this.props.profile.acl.can_follow || this.props.profile.acl.can_moderate;\n    }\n  }, {\n    key: 'getFollowButton',\n    value: function getFollowButton() {\n      if (this.props.profile.acl.can_follow) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_followButton2.default, { className: 'btn btn-block',\n          profile: this.props.profile });\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getModerationButton',\n    value: function getModerationButton() {\n      if (this.props.profile.acl.can_moderate) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'button',\n          { type: 'button', className: 'btn btn-default btn-block',\n            onClick: this.props.toggleModeration },\n          _react2.default.createElement(\n            'span',\n            { className: 'material-icon' },\n            'tonality'\n          ),\n          gettext(\"Moderation\")\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getSpecialOptions',\n    value: function getSpecialOptions() {\n      if (this.showSpecialOptions()) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'li',\n          { className: 'dropdown-buttons' },\n          this.getFollowButton(),\n          this.getModerationButton()\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this4 = this;\n\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu', role: 'menu' },\n        this.getSpecialOptions(),\n        this.showSpecialOptions() ? _react2.default.createElement('li', { className: 'divider' }) : null,\n        this.props.pages.map(function (page) {\n          return _react2.default.createElement(\n            _li2.default,\n            { path: _this4.props.baseUrl + page.component + '/',\n              key: page.component },\n            _react2.default.createElement(\n              _reactRouter.Link,\n              { to: _this4.props.baseUrl + page.component + '/',\n                onClick: _this4.props.hideNav },\n              _react2.default.createElement(\n                'span',\n                { className: 'material-icon' },\n                page.icon\n              ),\n              page.name,\n              _this4.getMeta(page.meta)\n            )\n          );\n        })\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return CompactNav;\n}(SideNav);\n\n},{\"../../index\":128,\"../li\":70,\"./follow-button\":89,\"react\":\"react\",\"react-router\":\"react-router\"}],97:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.select = select;\nexports.paths = paths;\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 _banDetails = require('./ban-details');\n\nvar _banDetails2 = _interopRequireDefault(_banDetails);\n\nvar _followers = require('./followers');\n\nvar _followers2 = _interopRequireDefault(_followers);\n\nvar _follows = require('./follows');\n\nvar _follows2 = _interopRequireDefault(_follows);\n\nvar _usernameHistory = require('./username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _Header = require('./Header');\n\nvar _Header2 = _interopRequireDefault(_Header);\n\nvar _nav = require('./moderation/nav');\n\nvar _nav2 = _interopRequireDefault(_nav);\n\nvar _navs = require('./navs');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _profile = require('../../reducers/profile');\n\nvar _polls = require('../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// 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.update = function (data) {\n      _store2.default.dispatch((0, _profile.dehydrate)(data));\n    };\n\n    _this.toggleNav = function () {\n      if (_this.state.dropdown === 'pages') {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: 'pages'\n        });\n      }\n    };\n\n    _this.toggleModeration = function () {\n      if (_this.state.dropdown === 'moderation') {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: 'moderation'\n        });\n      }\n    };\n\n    _this.hideNav = function () {\n      _this.setState({\n        dropdown: false\n      });\n    };\n\n    _this.state = {\n      dropdown: false\n    };\n\n    _this.startPolling(props.profile.api_url.root);\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'startPolling',\n    value: function startPolling(api) {\n      _polls2.default.start({\n        poll: 'user-profile',\n        url: api,\n        frequency: 90 * 1000,\n        update: this.update\n      });\n    }\n\n    /* jshint ignore:start */\n\n    /* jshint ignore:end */\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getToggleNavClassName',\n\n    /* jshint ignore:end */\n\n    value: function getToggleNavClassName() {\n      if (this.state.dropdown) {\n        return 'btn btn-default btn-icon open';\n      } else {\n        return 'btn btn-default btn-icon';\n      }\n    }\n  }, {\n    key: 'getCompactNavClassName',\n    value: function getCompactNavClassName() {\n      if (this.state.dropdown) {\n        return 'compact-nav open';\n      } else {\n        return 'compact-nav';\n      }\n    }\n  }, {\n    key: 'getNavDropdown',\n    value: function getNavDropdown() {\n      if (this.state.dropdown === 'pages') {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_navs.CompactNav, { pages: _index2.default.get('PROFILE_PAGES'),\n          baseUrl: _index2.default.get('PROFILE').absolute_url,\n          profile: this.props.profile,\n          toggleModeration: this.toggleModeration,\n          hideNav: this.hideNav });\n        /* jshint ignore:end */\n      } else if (this.state.dropdown === 'moderation') {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_nav2.default, { profile: this.props.profile,\n            toggleNav: this.toggleNav,\n            hideNav: this.hideNav });\n          /* jshint ignore:end */\n        } else {\n            return null;\n          }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      var baseClass = 'page page-user-profile';\n      if (false && this.props.profile.rank.css_class) {\n        return baseClass + ' page-user-profile-' + this.props.profile.rank.css_class;\n      } else {\n        return baseClass;\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(_Header2.default, { user: this.props.user,\n          profile: this.props.profile,\n          toggleNav: this.toggleNav,\n          toggleModeration: this.toggleModeration }),\n        _react2.default.createElement(\n          'div',\n          { className: this.getCompactNavClassName() },\n          this.getNavDropdown()\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-3 hidden-xs hidden-sm' },\n              _react2.default.createElement(\n                'div',\n                { className: 'profile-side-avatar' },\n                _react2.default.createElement(_avatar2.default, { user: this.props.profile, size: '400' })\n              ),\n              _react2.default.createElement(_navs.SideNav, { pages: _index2.default.get('PROFILE_PAGES'),\n                baseUrl: _index2.default.get('PROFILE').absolute_url,\n                profile: this.props.profile })\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'col-md-9' },\n              this.props.children\n            )\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(store) {\n  return {\n    'tick': store.tick.tick,\n    'user': store.auth.user,\n    'users': store.users,\n    'profile': store.profile,\n    'username-history': store['username-history']\n  };\n}\n\nvar Placeholder = function (_React$Component2) {\n  _inherits(Placeholder, _React$Component2);\n\n  function Placeholder() {\n    _classCallCheck(this, Placeholder);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(Placeholder).apply(this, arguments));\n  }\n\n  _createClass(Placeholder, [{\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'div',\n        { className: 'container' },\n        _react2.default.createElement(\n          'p',\n          null,\n          \"Hello, I'm placeholder for \" + this.props.route.name\n        )\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return Placeholder;\n}(_react2.default.Component);\n\nvar COMPONENTS = {\n  'posts': Placeholder,\n  'threads': Placeholder,\n  'followers': _followers2.default,\n  'follows': _follows2.default,\n  'username-history': _usernameHistory2.default,\n  'ban-details': _banDetails2.default\n};\n\nfunction paths() {\n  var paths = [];\n\n  _index2.default.get('PROFILE_PAGES').forEach(function (item) {\n    paths.push(Object.assign({}, item, {\n      path: _index2.default.get('PROFILE').absolute_url + item.component + '/',\n      component: (0, _reactRedux.connect)(select)(COMPONENTS[item.component])\n    }));\n  });\n\n  return paths;\n}\n\n},{\"../../index\":128,\"../../reducers/profile\":130,\"../../services/polls\":143,\"../../services/store\":145,\"../avatar\":54,\"./Header\":87,\"./ban-details\":88,\"./followers\":90,\"./follows\":91,\"./moderation/nav\":95,\"./navs\":96,\"./username-history\":98,\"react\":\"react\",\"react-redux\":\"react-redux\"}],98:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _button = require('../button');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _search = require('../search');\n\nvar _search2 = _interopRequireDefault(_search);\n\nvar _usernameHistory = require('../username-history');\n\nvar _usernameHistory2 = _interopRequireDefault(_usernameHistory);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _usernameHistory3 = require('../../reducers/username-history');\n\nvar _ajax = require('../../services/ajax');\n\nvar _ajax2 = _interopRequireDefault(_ajax);\n\nvar _snackbar = require('../../services/snackbar');\n\nvar _snackbar2 = _interopRequireDefault(_snackbar);\n\nvar _store = require('../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _pageTitle = require('../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class(props) {\n    _classCallCheck(this, _class);\n\n    var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(_class).call(this, props));\n\n    _this.loadMore = function () {\n      _this.setState({\n        isBusy: true\n      });\n\n      _this.loadChanges(_this.state.page + 1, _this.state.search);\n    };\n\n    _this.search = function (ev) {\n      _this.setState({\n        isLoaded: false,\n        isBusy: true,\n\n        search: ev.target.value,\n\n        count: 0,\n        more: 0,\n\n        page: 1,\n        pages: 1\n      });\n\n      _this.loadChanges(1, ev.target.value);\n    };\n\n    if (_index2.default.has('PROFILE_NAME_HISTORY')) {\n      _this.initWithPreloadedData(_index2.default.pop('PROFILE_NAME_HISTORY'));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(data) {\n      this.state = {\n        isLoaded: true,\n        isBusy: false,\n\n        search: '',\n\n        count: data.count,\n        more: data.more,\n\n        page: data.page,\n        pages: data.pages\n      };\n\n      _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data.results));\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false,\n        isBusy: false,\n\n        search: '',\n\n        count: 0,\n        more: 0,\n\n        page: 1,\n        pages: 1\n      };\n\n      this.loadChanges();\n    }\n  }, {\n    key: 'loadChanges',\n    value: function loadChanges() {\n      var _this2 = this;\n\n      var page = arguments.length <= 0 || arguments[0] === undefined ? 1 : arguments[0];\n      var search = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n      _ajax2.default.get(_index2.default.get('USERNAME_CHANGES_API'), {\n        user: this.props.profile.id,\n        search: search,\n        page: page || 1\n      }, 'search-username-history').then(function (data) {\n        if (page === 1) {\n          _store2.default.dispatch((0, _usernameHistory3.dehydrate)(data.results));\n        } else {\n          _store2.default.dispatch((0, _usernameHistory3.append)(data.results));\n        }\n\n        _this2.setState({\n          isLoaded: true,\n          isBusy: false,\n\n          count: data.count,\n          more: data.more,\n\n          page: data.page,\n          pages: data.pages\n        });\n      }, function (rejection) {\n        _snackbar2.default.apiError(rejection);\n      });\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: gettext(\"Username history\"),\n        parent: this.props.profile.username\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'getLabel',\n\n    /* jshint ignore:end */\n\n    value: function getLabel() {\n      if (!this.state.isLoaded) {\n        return gettext('Loading...');\n      } else if (this.state.search) {\n        var message = ngettext(\"Found %(changes)s username change.\", \"Found %(changes)s username changes.\", this.state.count);\n\n        return interpolate(message, {\n          'changes': this.state.count\n        }, true);\n      } else if (this.props.profile.id === this.props.user.id) {\n        var message = ngettext(\"Your username was changed %(changes)s time.\", \"Your username was changed %(changes)s times.\", this.state.count);\n\n        return interpolate(message, {\n          'changes': this.state.count\n        }, true);\n      } else {\n        var message = ngettext(\"%(username)s's username was changed %(changes)s time.\", \"%(username)s's username was changed %(changes)s times.\", this.state.count);\n\n        return interpolate(message, {\n          'username': this.props.profile.username,\n          'changes': this.state.count\n        }, true);\n      }\n    }\n  }, {\n    key: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      if (this.state.search) {\n        return gettext(\"Search returned no username changes matching specified criteria.\");\n      } else if (this.props.user.id === this.props.profile.id) {\n        return gettext(\"No name changes have been recorded for your account.\");\n      } else {\n        return interpolate(gettext(\"%(username)s's username was never changed.\"), {\n          'username': this.props.profile.username\n        }, true);\n      }\n    }\n  }, {\n    key: 'getMoreButton',\n    value: function getMoreButton() {\n      if (this.state.more) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'pager-more' },\n          _react2.default.createElement(\n            _button2.default,\n            { loading: this.state.isBusy,\n              onClick: this.loadMore },\n            interpolate(gettext(\"Show older (%(more)s)\"), {\n              'more': this.state.more\n            }, true)\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: 'profile-username-history' },\n        _react2.default.createElement(\n          'nav',\n          { className: 'toolbar' },\n          _react2.default.createElement(\n            'h3',\n            { className: 'toolbar-left' },\n            this.getLabel()\n          ),\n          _react2.default.createElement(_search2.default, { className: 'toolbar-right',\n            value: this.state.search,\n            onChange: this.search,\n            placeholder: gettext(\"Search history...\") })\n        ),\n        _react2.default.createElement(_usernameHistory2.default, { isLoaded: this.state.isLoaded,\n          emptyMessage: this.getEmptyMessage(),\n          changes: this.props['username-history'] }),\n        this.getMoreButton()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../index\":128,\"../../reducers/username-history\":133,\"../../services/ajax\":135,\"../../services/page-title\":142,\"../../services/snackbar\":144,\"../../services/store\":145,\"../button\":56,\"../search\":104,\"../username-history\":112,\"react\":\"react\"}],99:[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\":137,\"../services/modal\":141,\"../services/snackbar\":144,\"../services/zxcvbn\":146,\"./loader\":71,\"./register.js\":100,\"react\":\"react\"}],100:[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\":128,\"../services/ajax\":135,\"../services/auth\":136,\"../services/captcha\":137,\"../services/modal\":141,\"../services/snackbar\":144,\"../utils/banned-page\":147,\"../utils/validators\":155,\"./button\":56,\"./form\":69,\"./form-group\":68,\"./password-strength\":86,\"react\":\"react\"}],101:[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\":128,\"../services/ajax\":135,\"../services/snackbar\":144,\"../utils/banned-page\":147,\"../utils/validators\":155,\"./button\":56,\"./form\":69,\"react\":\"react\"}],102:[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\":128,\"../services/ajax\":135,\"../services/snackbar\":144,\"../utils/banned-page\":147,\"../utils/validators\":155,\"./button\":56,\"./form\":69,\"react\":\"react\",\"react-dom\":\"react-dom\"}],103:[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\":128,\"../services/ajax\":135,\"../services/auth\":136,\"../services/modal\":141,\"../services/snackbar\":144,\"../utils/banned-page\":147,\"../utils/validators\":155,\"./button\":56,\"./form\":69,\"./sign-in.js\":106,\"react\":\"react\",\"react-dom\":\"react-dom\"}],104:[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: \"getClassName\",\n    value: function getClassName() {\n      if (this.props.className) {\n        return \"form-search \" + this.props.className;\n      } else {\n        return \"form-search\";\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(\"input\", { type: \"text\",\n          className: \"form-control\",\n          value: this.props.value,\n          onChange: this.props.onChange,\n          placeholder: this.props.placeholder || gettext(\"Search...\") }),\n        _react2.default.createElement(\n          \"span\",\n          { className: \"material-icon\" },\n          \"search\"\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],105:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.change = function (value) {\n      return function () {\n        _this.props.onChange({\n          target: {\n            value: value\n          }\n        });\n      };\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: \"getChoice\",\n    value: function getChoice() {\n      var _this2 = this;\n\n      var choice = null;\n      this.props.choices.map(function (item) {\n        if (item.value === _this2.props.value) {\n          choice = item;\n        }\n      });\n      return choice;\n    }\n  }, {\n    key: \"getIcon\",\n    value: function getIcon() {\n      return this.getChoice().icon;\n    }\n  }, {\n    key: \"getLabel\",\n    value: function getLabel() {\n      return this.getChoice().label;\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: \"render\",\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      var _this3 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"div\",\n        { className: \"btn-group btn-select-group\" },\n        _react2.default.createElement(\n          \"button\",\n          { type: \"button\",\n            className: \"btn btn-select dropdown-toggle\",\n            id: this.props.id || null,\n            \"data-toggle\": \"dropdown\",\n            \"aria-haspopup\": \"true\",\n            \"aria-expanded\": \"false\",\n            \"aria-describedby\": this.props['aria-describedby'] || null,\n            disabled: this.props.disabled || false },\n          _react2.default.createElement(\n            \"span\",\n            { className: \"material-icon\" },\n            this.getIcon()\n          ),\n          this.getLabel()\n        ),\n        _react2.default.createElement(\n          \"ul\",\n          { className: \"dropdown-menu\" },\n          this.props.choices.map(function (item, i) {\n            return _react2.default.createElement(\n              \"li\",\n              { key: i },\n              _react2.default.createElement(\n                \"button\",\n                { type: \"button\", className: \"btn-link\",\n                  onClick: _this3.change(item.value) },\n                _react2.default.createElement(\n                  \"span\",\n                  { className: \"material-icon\" },\n                  item.icon\n                ),\n                item.label\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],106:[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\":128,\"../services/ajax\":135,\"../services/modal\":141,\"../services/snackbar\":144,\"../utils/banned-page\":147,\"./button\":56,\"./form\":69,\"react\":\"react\"}],107:[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\"}],108:[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\":140,\"../../services/modal\":141,\"../avatar\":54,\"../register-button\":99,\"../sign-in.js\":106,\"react\":\"react\"}],109:[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\":108,\"./user-nav\":110,\"react\":\"react\"}],110:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactUserNav = exports.UserNav = exports.UserMenu = undefined;\nexports.selectUserMenu = selectUserMenu;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _avatar = require('../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _root = require('../change-avatar/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _mobileNavbarDropdown = require('../../services/mobile-navbar-dropdown');\n\nvar _mobileNavbarDropdown2 = _interopRequireDefault(_mobileNavbarDropdown);\n\nvar _modal = require('../../services/modal');\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\n\nvar UserMenu = exports.UserMenu = function (_React$Component) {\n  _inherits(UserMenu, _React$Component);\n\n  function UserMenu() {\n    _classCallCheck(this, UserMenu);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(UserMenu).apply(this, arguments));\n  }\n\n  _createClass(UserMenu, [{\n    key: 'logout',\n    value: function logout() {\n      var decision = confirm(gettext(\"Are you sure you want to sign out?\"));\n      if (decision) {\n        $('#hidden-logout-form').submit();\n      }\n    }\n  }, {\n    key: 'changeAvatar',\n    value: function changeAvatar() {\n      _modal2.default.show((0, _reactRedux.connect)(_root.select)(_root2.default));\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu user-dropdown dropdown-menu-right',\n          role: 'menu' },\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-header' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            this.props.user.username\n          )\n        ),\n        _react2.default.createElement('li', { className: 'divider' }),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: this.props.user.absolute_url },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'account_circle'\n            ),\n            gettext(\"See your profile\")\n          )\n        ),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'a',\n            { href: _index2.default.get('USERCP_URL') },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'done_all'\n            ),\n            gettext(\"Change options\")\n          )\n        ),\n        _react2.default.createElement(\n          'li',\n          null,\n          _react2.default.createElement(\n            'button',\n            { type: 'button', className: 'btn-link', onClick: this.changeAvatar },\n            _react2.default.createElement(\n              'span',\n              { className: 'material-icon' },\n              'portrait'\n            ),\n            gettext(\"Change avatar\")\n          )\n        ),\n        _react2.default.createElement('li', { className: 'divider' }),\n        _react2.default.createElement(\n          'li',\n          { className: 'dropdown-buttons' },\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\":128,\"../../services/mobile-navbar-dropdown\":140,\"../../services/modal\":141,\"../avatar\":54,\"../change-avatar/root\":66,\"react\":\"react\",\"react-redux\":\"react-redux\"}],111:[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.StatusLabel = exports.StatusIcon = undefined;\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: 'getClass',\n    value: function getClass() {\n      var status = '';\n      if (this.props.status.is_banned) {\n        status = 'banned';\n      } else if (this.props.status.is_hidden) {\n        status = 'offline';\n      } else if (this.props.status.is_online_hidden) {\n        status = 'online';\n      } else if (this.props.status.is_offline_hidden) {\n        status = 'offline';\n      } else if (this.props.status.is_online) {\n        status = 'online';\n      } else if (this.props.status.is_offline) {\n        status = 'offline';\n      }\n\n      return 'user-status user-' + status;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'span',\n        { className: this.getClass() },\n        this.props.children\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\nvar StatusIcon = exports.StatusIcon = function (_React$Component2) {\n  _inherits(StatusIcon, _React$Component2);\n\n  function StatusIcon() {\n    _classCallCheck(this, StatusIcon);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(StatusIcon).apply(this, arguments));\n  }\n\n  _createClass(StatusIcon, [{\n    key: 'getIcon',\n    value: function getIcon() {\n      if (this.props.status.is_banned) {\n        return 'remove_circle_outline';\n      } else if (this.props.status.is_hidden) {\n        return 'help_outline';\n      } else if (this.props.status.is_online_hidden) {\n        return 'label';\n      } else if (this.props.status.is_offline_hidden) {\n        return 'label_outline';\n      } else if (this.props.status.is_online) {\n        return 'lens';\n      } else if (this.props.status.is_offline) {\n        return 'panorama_fish_eye';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'span',\n        { className: 'material-icon status-icon' },\n        this.getIcon()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return StatusIcon;\n}(_react2.default.Component);\n\nvar StatusLabel = exports.StatusLabel = function (_React$Component3) {\n  _inherits(StatusLabel, _React$Component3);\n\n  function StatusLabel() {\n    _classCallCheck(this, StatusLabel);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(StatusLabel).apply(this, arguments));\n  }\n\n  _createClass(StatusLabel, [{\n    key: 'getHelp',\n    value: function getHelp() {\n      if (this.props.status.is_banned) {\n        if (this.props.status.banned_until) {\n          return interpolate(gettext(\"%(username)s is banned until %(ban_expires)s\"), {\n            username: this.props.user.username,\n            ban_expires: this.props.status.banned_until.format('LL, LT')\n          }, true);\n        } else {\n          return interpolate(gettext(\"%(username)s is banned\"), {\n            username: this.props.user.username\n          }, true);\n        }\n      } else if (this.props.status.is_hidden) {\n        return interpolate(gettext(\"%(username)s is hiding presence\"), {\n          username: this.props.user.username\n        }, true);\n      } else if (this.props.status.is_online_hidden) {\n        return interpolate(gettext(\"%(username)s is online (hidden)\"), {\n          username: this.props.user.username\n        }, true);\n      } else if (this.props.status.is_offline_hidden) {\n        return interpolate(gettext(\"%(username)s was last seen %(last_click)s (hidden)\"), {\n          username: this.props.user.username,\n          last_click: this.props.status.last_click.fromNow()\n        }, true);\n      } else if (this.props.status.is_online) {\n        return interpolate(gettext(\"%(username)s is online\"), {\n          username: this.props.user.username\n        }, true);\n      } else if (this.props.status.is_offline) {\n        return interpolate(gettext(\"%(username)s was last seen %(last_click)s\"), {\n          username: this.props.user.username,\n          last_click: this.props.status.last_click.fromNow()\n        }, true);\n      }\n    }\n  }, {\n    key: 'getLabel',\n    value: function getLabel() {\n      if (this.props.status.is_banned) {\n        return gettext(\"Banned\");\n      } else if (this.props.status.is_hidden) {\n        return gettext(\"Hidden\");\n      } else if (this.props.status.is_online_hidden) {\n        return gettext(\"Online (hidden)\");\n      } else if (this.props.status.is_offline_hidden) {\n        return gettext(\"Offline (hidden)\");\n      } else if (this.props.status.is_online) {\n        return gettext(\"Online\");\n      } else if (this.props.status.is_offline) {\n        return gettext(\"Offline\");\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'span',\n        { className: this.props.className || \"status-label\",\n          title: this.getHelp() },\n        this.getLabel()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return StatusLabel;\n}(_react2.default.Component);\n\n},{\"react\":\"react\"}],112:[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 _random = require('../utils/random');\n\nvar random = _interopRequireWildcard(_random);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar _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: 'renderUserAvatar',\n    value: function renderUserAvatar(item) {\n      if (item.changed_by) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: item.changed_by.absolute_url, className: 'user-avatar' },\n          _react2.default.createElement(_avatar2.default, { user: item.changed_by, size: '100' })\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'user-avatar' },\n            _react2.default.createElement(_avatar2.default, { size: '100' })\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'renderUsername',\n    value: function renderUsername(item) {\n      if (item.changed_by) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'a',\n          { href: item.changed_by.absolute_url, className: 'item-title' },\n          item.changed_by.username\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'item-title' },\n            item.changed_by_username\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'renderHistory',\n    value: function renderHistory() {\n      var _this2 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-ready' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          this.props.changes.map(function (item) {\n            return _react2.default.createElement(\n              'li',\n              { className: 'list-group-item', key: item.id },\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-avatar' },\n                _this2.renderUserAvatar(item)\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-author' },\n                _this2.renderUsername(item)\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change' },\n                item.old_username,\n                _react2.default.createElement(\n                  'span',\n                  { className: 'material-icon' },\n                  'arrow_forward'\n                ),\n                item.new_username\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-date' },\n                _react2.default.createElement(\n                  'abbr',\n                  { title: item.changed_on.format('LLL') },\n                  item.changed_on.fromNow()\n                )\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      if (this.props.emptyMessage) {\n        return this.props.emptyMessage;\n      } else {\n        return gettext(\"No name changes have been recorded for your account.\");\n      }\n    }\n  }, {\n    key: 'renderEmptyHistory',\n    value: function renderEmptyHistory() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-ready' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          _react2.default.createElement(\n            'li',\n            { className: 'list-group-item empty-message' },\n            this.getEmptyMessage()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'renderHistoryPreview',\n    value: function renderHistoryPreview() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'username-history ui-preview' },\n        _react2.default.createElement(\n          'ul',\n          { className: 'list-group' },\n          random.range(3, 5).map(function (i) {\n            return _react2.default.createElement(\n              'li',\n              { className: 'list-group-item', key: i },\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-avatar' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'user-avatar' },\n                  _react2.default.createElement(_avatar2.default, { size: '100' })\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-author' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 100) + \"px\" } },\n                  ' '\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                  ' '\n                ),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'material-icon' },\n                  'arrow_forward'\n                ),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                  ' '\n                )\n              ),\n              _react2.default.createElement(\n                'div',\n                { className: 'username-change-date' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'ui-preview-text', style: { width: random.int(50, 100) + \"px\" } },\n                  ' '\n                )\n              )\n            );\n          })\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      if (this.props.isLoaded) {\n        if (this.props.changes.length) {\n          return this.renderHistory();\n        } else {\n          return this.renderEmptyHistory();\n        }\n      } else {\n        return this.renderHistoryPreview();\n      }\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../utils/random\":152,\"./avatar\":54,\"react\":\"react\"}],113:[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 _userCard = require('./user-card');\n\nvar _userCard2 = _interopRequireDefault(_userCard);\n\nvar _userPreview = require('./user-preview');\n\nvar _userPreview2 = _interopRequireDefault(_userPreview);\n\nvar _batch = require('../../utils/batch');\n\nvar _batch2 = _interopRequireDefault(_batch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n\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: 'getPager',\n    value: function getPager() {\n      if (this.props.pages > 1) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(Pager, this.props);\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.props.className) {\n        return \"users-cards-list \" + this.props.className + \" ui-ready\";\n      } else {\n        return \"users-cards-list ui-ready\";\n      }\n    }\n  }, {\n    key: 'getColClassName',\n    value: function getColClassName() {\n      return \"col-md-\" + 12 / this.props.cols;\n    }\n  }, {\n    key: 'getBody',\n    value: function getBody() {\n      var _this2 = this;\n\n      if (this.props.isLoaded) {\n        /* jshint ignore:start */\n        return (0, _batch2.default)(this.props.users, this.props.cols).map(function (row, r) {\n          return _react2.default.createElement(\n            'div',\n            { className: 'row', key: r },\n            row.map(function (user) {\n              return _react2.default.createElement(\n                'div',\n                { className: _this2.getColClassName(), key: user.id },\n                _react2.default.createElement(_userCard2.default, { user: user,\n                  showStatus: _this2.props.showStatus,\n                  showRank: _this2.props.showRank })\n              );\n            })\n          );\n        });\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          var row = [];\n          for (var i = 0; i < this.props.cols; i++) {\n            row.push(i);\n          }\n\n          return _react2.default.createElement(\n            'div',\n            { className: 'row' },\n            row.map(function (i) {\n              return _react2.default.createElement(\n                'div',\n                { className: _this2.getColClassName(), key: i },\n                _react2.default.createElement(_userPreview2.default, { showStatus: _this2.props.showStatus })\n              );\n            })\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: 'users-cards-list ui-ready' },\n        this.getBody()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../utils/batch\":148,\"./user-card\":114,\"./user-preview\":115,\"react\":\"react\"}],114:[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 _userStatus = require('../user-status');\n\nvar _userStatus2 = _interopRequireDefault(_userStatus);\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 _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: 'getClassName',\n    value: function getClassName() {\n      if (this.props.user.rank.css_class) {\n        return 'user-card user-card-' + this.props.user.rank.css_class + ' ui-ready';\n      } else {\n        return 'user-card ui-ready';\n      }\n    }\n  }, {\n    key: 'getUserStatus',\n    value: function getUserStatus() {\n      if (this.props.showStatus) {\n        if (this.props.user.status) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            _userStatus2.default,\n            { user: this.props.user, status: this.props.user.status },\n            _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.user,\n              status: this.props.user.status }),\n            _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.user,\n              status: this.props.user.status,\n              className: 'status-label' })\n          );\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'span',\n              { className: 'user-status' },\n              _react2.default.createElement(\n                'span',\n                { className: 'status-icon ui-preview' },\n                ' '\n              ),\n              _react2.default.createElement(\n                'span',\n                { className: 'status-label ui-preview' },\n                ' '\n              )\n            );\n            /* jshint ignore:end */\n          }\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getRankName',\n    value: function getRankName() {\n      if (this.props.showRank) {\n        if (this.props.user.rank.is_tab) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'a',\n            { href: this.props.user.rank.absolute_url,\n              className: 'item-title rank-name' },\n            this.props.user.rank.name\n          );\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'span',\n              { className: 'item-title rank-name' },\n              this.props.user.rank.name\n            );\n            /* jshint ignore:end */\n          }\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getUserTitle',\n    value: function getUserTitle() {\n      if (this.props.user.title) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'user-title' },\n          this.props.user.title\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getUserJoinedOn',\n    value: function getUserJoinedOn() {\n      /* jshint ignore:start */\n      var title = interpolate(gettext(\"Joined on %(joined_on)s\"), {\n        'joined_on': this.props.user.joined_on.format('LL, LT')\n      }, true);\n\n      var age = interpolate(gettext(\"Joined %(joined_on)s\"), {\n        'joined_on': this.props.user.joined_on.fromNow()\n      }, true);\n\n      return _react2.default.createElement(\n        'span',\n        { className: 'user-joined-on', title: title },\n        age\n      );\n      /* jshint ignore:end */\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: 'user-card-bg-image' },\n          _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '400', className: 'bg-image' }),\n          _react2.default.createElement(\n            'div',\n            { className: 'user-card-bg' },\n            _react2.default.createElement(\n              'div',\n              { className: 'user-details' },\n              _react2.default.createElement(\n                'div',\n                { className: 'user-avatar' },\n                _react2.default.createElement(\n                  'a',\n                  { href: this.props.user.absolute_url },\n                  _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '400' })\n                )\n              ),\n              _react2.default.createElement(\n                'h4',\n                { className: 'user-name' },\n                _react2.default.createElement(\n                  'a',\n                  { href: this.props.user.absolute_url, className: 'item-title' },\n                  this.props.user.username\n                )\n              ),\n              _react2.default.createElement(\n                'p',\n                { className: 'user-subscript' },\n                this.getUserStatus(),\n                this.getRankName(),\n                this.getUserTitle(),\n                this.getUserJoinedOn()\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'user-card-stats' },\n              _react2.default.createElement(\n                'ul',\n                { className: 'list-unstyled' },\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-posts-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    this.props.user.posts\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"posts\")\n                  )\n                ),\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-threads-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    this.props.user.threads\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"threads\")\n                  )\n                ),\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-followers-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    this.props.user.followers\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"followers\")\n                  )\n                )\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},{\"../avatar\":54,\"../user-status\":111,\"react\":\"react\"}],115:[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 _random = require('../../utils/random');\n\nvar random = _interopRequireWildcard(_random);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar _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: 'getUserStatus',\n    value: function getUserStatus() {\n      if (this.props.showStatus) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'user-status' },\n          _react2.default.createElement(\n            'span',\n            { className: 'status-icon ui-preview' },\n            ' '\n          ),\n          _react2.default.createElement(\n            'span',\n            { className: 'status-label ui-preview' },\n            ' '\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: 'user-card ui-preview' },\n        _react2.default.createElement(\n          'div',\n          { className: 'user-card-bg-image' },\n          _react2.default.createElement(_avatar2.default, { size: '400', className: 'bg-image' }),\n          _react2.default.createElement(\n            'div',\n            { className: 'user-card-bg' },\n            _react2.default.createElement(\n              'div',\n              { className: 'user-details' },\n              _react2.default.createElement(\n                'div',\n                { className: 'user-avatar' },\n                _react2.default.createElement(_avatar2.default, { size: '400' })\n              ),\n              _react2.default.createElement(\n                'h4',\n                { className: 'user-name' },\n                _react2.default.createElement(\n                  'span',\n                  { className: 'item-title' },\n                  _react2.default.createElement(\n                    'span',\n                    { className: 'ui-preview-text', style: { width: random.int(60, 150) + \"px\" } },\n                    ' '\n                  )\n                )\n              ),\n              _react2.default.createElement(\n                'p',\n                { className: 'user-subscript' },\n                this.getUserStatus(),\n                _react2.default.createElement(\n                  'span',\n                  { className: 'user-joined-on' },\n                  _react2.default.createElement(\n                    'span',\n                    { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                    ' '\n                  )\n                )\n              )\n            ),\n            _react2.default.createElement(\n              'div',\n              { className: 'user-card-stats' },\n              _react2.default.createElement(\n                'ul',\n                { className: 'list-unstyled' },\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-posts-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'ui-preview-text' },\n                      ' '\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"posts\")\n                  )\n                ),\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-threads-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'ui-preview-text' },\n                      ' '\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"threads\")\n                  )\n                ),\n                _react2.default.createElement(\n                  'li',\n                  { className: 'user-followers-count' },\n                  _react2.default.createElement(\n                    'strong',\n                    null,\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'ui-preview-text' },\n                      ' '\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'small',\n                    null,\n                    gettext(\"followers\")\n                  )\n                )\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},{\"../../utils/random\":152,\"../avatar\":54,\"react\":\"react\"}],116:[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: 'getEmptyMessage',\n    value: function getEmptyMessage() {\n      return interpolate(gettext(\"No users have posted any new messages during last %(days)s days.\"), { 'days': this.props.trackedPeriod }, true);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'active-posters-list' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.getEmptyMessage()\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],117:[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 _reactRouter = require('react-router');\n\nvar _avatar = require('../../avatar');\n\nvar _avatar2 = _interopRequireDefault(_avatar);\n\nvar _userStatus = require('../../user-status');\n\nvar _userStatus2 = _interopRequireDefault(_userStatus);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n// jshint ignore:line\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: 'getClassName',\n    value: function getClassName() {\n      if (this.props.rank.css_class) {\n        return \"list-group-item list-group-rank-\" + this.props.rank.css_class;\n      } else {\n        return \"list-group-item\";\n      }\n    }\n  }, {\n    key: 'getUserStatus',\n    value: function getUserStatus() {\n      if (this.props.user.status) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          _userStatus2.default,\n          { user: this.props.user, status: this.props.user.status },\n          _react2.default.createElement(_userStatus.StatusIcon, { user: this.props.user,\n            status: this.props.user.status }),\n          _react2.default.createElement(_userStatus.StatusLabel, { user: this.props.user,\n            status: this.props.user.status,\n            className: 'status-label hidden-xs hidden-sm' })\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'user-status' },\n            _react2.default.createElement(\n              'span',\n              { className: 'status-icon ui-preview' },\n              ' '\n            ),\n            _react2.default.createElement(\n              'span',\n              { className: 'status-label ui-preview hidden-xs hidden-sm' },\n              ' '\n            )\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getRankName',\n    value: function getRankName() {\n      if (this.props.rank.is_tab) {\n        /* jshint ignore:start */\n        var rankUrl = _index2.default.get('USERS_LIST_URL') + this.props.rank.slug + '/';\n        return _react2.default.createElement(\n          _reactRouter.Link,\n          { to: rankUrl, className: 'item-title rank-name' },\n          this.props.rank.name\n        );\n        /* jshint ignore:end */\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(\n            'span',\n            { className: 'item-title rank-name' },\n            this.props.rank.name\n          );\n          /* jshint ignore:end */\n        }\n    }\n  }, {\n    key: 'getUserTitle',\n    value: function getUserTitle() {\n      if (this.props.user.title) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'span',\n          { className: 'user-title hidden-xs hidden-sm' },\n          this.props.user.title\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        'li',\n        { className: this.getClassName() },\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-user-avatar' },\n          _react2.default.createElement(\n            'a',\n            { href: this.props.user.absolute_url },\n            _react2.default.createElement(_avatar2.default, { user: this.props.user, size: '50' })\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-user' },\n          _react2.default.createElement(\n            'div',\n            { className: 'user-name' },\n            _react2.default.createElement(\n              'a',\n              { href: this.props.user.absolute_url, className: 'item-title' },\n              this.props.user.username\n            )\n          ),\n          this.getUserStatus(),\n          this.getRankName(),\n          this.getUserTitle()\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-position' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            '#',\n            this.props.counter\n          ),\n          _react2.default.createElement(\n            'small',\n            null,\n            gettext(\"Rank\")\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-posts-counted' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            this.props.user.meta.score\n          ),\n          _react2.default.createElement(\n            'small',\n            null,\n            gettext(\"Ranked posts\")\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: 'rank-posts-total' },\n          _react2.default.createElement(\n            'strong',\n            null,\n            this.props.user.posts\n          ),\n          _react2.default.createElement(\n            'small',\n            null,\n            gettext(\"Total posts\")\n          )\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":128,\"../../avatar\":54,\"../../user-status\":111,\"react\":\"react\",\"react-router\":\"react-router\"}],118:[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 _random = require('../../../utils/random');\n\nvar random = _interopRequireWildcard(_random);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n\n// jshint ignore:line\n\nvar _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: 'active-posters-list' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead ui-preview-paragraph' },\n            random.range(3, 4).map(function (i) {\n              return _react2.default.createElement(\n                'span',\n                { key: i, className: 'ui-preview-text', style: { width: random.int(50, 120) + \"px\" } },\n                ' '\n              );\n            })\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'active-posters ui-preview' },\n            _react2.default.createElement(\n              'ul',\n              { className: 'list-group' },\n              random.range(5, 10).map(function (i, counter) {\n                return _react2.default.createElement(\n                  'li',\n                  { key: i, className: 'list-group-item' },\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-user-avatar' },\n                    _react2.default.createElement(\n                      'span',\n                      null,\n                      _react2.default.createElement(_avatar2.default, { size: '50' })\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-user' },\n                    _react2.default.createElement(\n                      'div',\n                      { className: 'user-name' },\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'item-title' },\n                        _react2.default.createElement(\n                          'span',\n                          { className: 'ui-preview-text', style: { width: random.int(30, 80) + \"px\" } },\n                          ' '\n                        )\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'user-status' },\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'status-icon ui-preview' },\n                        ' '\n                      ),\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'status-label ui-preview hidden-xs hidden-sm' },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'rank-name' },\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'span',\n                      { className: 'user-title hidden-xs hidden-sm' },\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: random.int(30, 50) + \"px\" } },\n                        ' '\n                      )\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-position' },\n                    _react2.default.createElement(\n                      'strong',\n                      null,\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: \"30px\" } },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'small',\n                      null,\n                      gettext(\"Rank\")\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-posts-counted' },\n                    _react2.default.createElement(\n                      'strong',\n                      null,\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: \"30px\" } },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'small',\n                      null,\n                      gettext(\"Ranked posts\")\n                    )\n                  ),\n                  _react2.default.createElement(\n                    'div',\n                    { className: 'rank-posts-total' },\n                    _react2.default.createElement(\n                      'strong',\n                      null,\n                      _react2.default.createElement(\n                        'span',\n                        { className: 'ui-preview-text', style: { width: \"30px\" } },\n                        ' '\n                      )\n                    ),\n                    _react2.default.createElement(\n                      'small',\n                      null,\n                      gettext(\"Total posts\")\n                    )\n                  )\n                );\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},{\"../../../utils/random\":152,\"../../avatar\":54,\"react\":\"react\"}],119:[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 _listItem = require('./list-item');\n\nvar _listItem2 = _interopRequireDefault(_listItem);\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: 'getLeadMessage',\n    value: function getLeadMessage() {\n      var message = ngettext(\"%(posters)s most active poster from last %(days)s days.\", \"%(posters)s most active posters from last %(days)s days.\", this.props.count);\n\n      return interpolate(message, {\n        posters: this.props.count,\n        days: this.props.trackedPeriod\n      }, true);\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'active-posters-list' },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          _react2.default.createElement(\n            'p',\n            { className: 'lead' },\n            this.getLeadMessage()\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'active-posters ui-ready' },\n            _react2.default.createElement(\n              'ul',\n              { className: 'list-group' },\n              this.props.users.map(function (user, i) {\n                return _react2.default.createElement(_listItem2.default, { user: user,\n                  rank: user.rank,\n                  counter: i + 1,\n                  key: user.id });\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},{\"./list-item\":117,\"react\":\"react\"}],120:[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 _listEmpty = require('./list-empty');\n\nvar _listEmpty2 = _interopRequireDefault(_listEmpty);\n\nvar _listLoading = require('./list-loading');\n\nvar _listLoading2 = _interopRequireDefault(_listLoading);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _users = require('../../../reducers/users');\n\nvar _polls = require('../../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _pageTitle = require('../../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\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.update = function (data) {\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n\n      _this.setState({\n        isLoaded: true,\n\n        trackedPeriod: data.tracked_period,\n        count: data.count\n      });\n    };\n\n    if (_index2.default.has('USERS')) {\n      _this.initWithPreloadedData(_index2.default.pop('USERS'));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n\n    _this.startPolling();\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(data) {\n      this.state = {\n        isLoaded: true,\n\n        trackedPeriod: data.tracked_period,\n        count: data.count\n      };\n\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false\n      };\n    }\n  }, {\n    key: 'startPolling',\n    value: function startPolling() {\n      _polls2.default.start({\n        poll: 'active-posters',\n        url: _index2.default.get('USERS_API'),\n        data: {\n          list: 'active'\n        },\n        frequency: 90 * 1000,\n        update: this.update\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'componentDidMount',\n\n    /* jshint ignore:end */\n\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: this.props.route.extra.name,\n        parent: gettext(\"Users\")\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      _polls2.default.stop('active-posters');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      if (this.state.isLoaded) {\n        if (this.state.count > 0) {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_list2.default, { users: this.props.users,\n            trackedPeriod: this.state.trackedPeriod,\n            count: this.state.count });\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(_listEmpty2.default, { trackedPeriod: this.state.trackedPeriod });\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_listLoading2.default, null);\n          /* jshint ignore:end */\n        }\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":128,\"../../../reducers/users\":134,\"../../../services/page-title\":142,\"../../../services/polls\":143,\"../../../services/store\":145,\"./list\":119,\"./list-empty\":116,\"./list-loading\":118,\"react\":\"react\"}],121:[function(require,module,exports){\n'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CompactNav = exports.TabsNav = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRouter = require('react-router');\n\nvar _li = require('../li');\n\nvar _li2 = _interopRequireDefault(_li);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n//jshint ignore:line\n\n//jshint ignore:line\n\n// jshint ignore:start\nvar listUrl = function listUrl(baseUrl, list) {\n  var url = baseUrl;\n  if (list.component === 'rank') {\n    url += list.slug;\n  } else {\n    url += list.component;\n  }\n  return url + '/';\n};\n\nvar navLinks = function navLinks(baseUrl, lists, hideNav) {\n  return lists.map(function (list) {\n    var url = listUrl(baseUrl, list);\n    return _react2.default.createElement(\n      _li2.default,\n      { path: url,\n        key: url },\n      _react2.default.createElement(\n        _reactRouter.Link,\n        { to: url, onClick: hideNav },\n        list.name\n      )\n    );\n  });\n};\n// jshint ignore:end\n\nvar TabsNav = exports.TabsNav = function (_React$Component) {\n  _inherits(TabsNav, _React$Component);\n\n  function TabsNav() {\n    _classCallCheck(this, TabsNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(TabsNav).apply(this, arguments));\n  }\n\n  _createClass(TabsNav, [{\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'nav nav-pills' },\n        navLinks(this.props.baseUrl, this.props.lists)\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return TabsNav;\n}(_react2.default.Component);\n\nvar CompactNav = exports.CompactNav = function (_React$Component2) {\n  _inherits(CompactNav, _React$Component2);\n\n  function CompactNav() {\n    _classCallCheck(this, CompactNav);\n\n    return _possibleConstructorReturn(this, Object.getPrototypeOf(CompactNav).apply(this, arguments));\n  }\n\n  _createClass(CompactNav, [{\n    key: 'render',\n    value: function render() {\n      // jshint ignore:start\n      return _react2.default.createElement(\n        'ul',\n        { className: 'dropdown-menu', role: 'menu' },\n        navLinks(this.props.baseUrl, this.props.lists, this.props.hideNav)\n      );\n      // jshint ignore:end\n    }\n  }]);\n\n  return CompactNav;\n}(_react2.default.Component);\n\n},{\"../../index\":128,\"../li\":70,\"react\":\"react\",\"react-router\":\"react-router\"}],122:[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 _root = require('../../users-list/root');\n\nvar _root2 = _interopRequireDefault(_root);\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        null,\n        _react2.default.createElement(_root2.default, { isLoaded: false, cols: 3, showStatus: true })\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../users-list/root\":113,\"react\":\"react\"}],123:[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 _pager = require('./pager');\n\nvar _pager2 = _interopRequireDefault(_pager);\n\nvar _root = require('../../users-list/root');\n\nvar _root2 = _interopRequireDefault(_root);\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 _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: 'getPager',\n    value: function getPager() {\n      if (this.props.pages > 1) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(_pager2.default, this.props);\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        null,\n        _react2.default.createElement(_root2.default, { users: this.props.users,\n          showStatus: true,\n          cols: 3,\n          isLoaded: true }),\n        this.getPager()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../users-list/root\":113,\"./pager\":124,\"react\":\"react\"}],124:[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 _reactRouter = require('react-router');\n\nvar _resetScroll = require('../../../utils/reset-scroll');\n\nvar _resetScroll2 = _interopRequireDefault(_resetScroll);\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 _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: 'getPreviousPage',\n    value: function getPreviousPage() {\n      if (this.props.previous || this.props.first) {\n        /* jshint ignore:start */\n        var url = this.props.baseUrl;\n        if (this.props.previous) {\n          url += this.props.previous + '/';\n        }\n\n        return _react2.default.createElement(\n          'li',\n          { className: 'previous' },\n          _react2.default.createElement(\n            _reactRouter.Link,\n            { to: url, onClick: _resetScroll2.default },\n            _react2.default.createElement(\n              'span',\n              { 'aria-hidden': 'true', className: 'material-icon' },\n              'arrow_back'\n            )\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getNextPage',\n    value: function getNextPage() {\n      if (this.props.next) {\n        /* jshint ignore:start */\n        var url = this.props.baseUrl + this.props.next + '/';\n        return _react2.default.createElement(\n          'li',\n          { className: 'next' },\n          _react2.default.createElement(\n            _reactRouter.Link,\n            { to: url, onClick: _resetScroll2.default },\n            _react2.default.createElement(\n              'span',\n              { 'aria-hidden': 'true', className: 'material-icon' },\n              'arrow_forward'\n            )\n          )\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getProgessBar',\n    value: function getProgessBar() {\n      var _this2 = this;\n\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'ul',\n        { className: 'pager-progress-bar' },\n        this.props.page_range.map(function (page) {\n          var className = page === _this2.props.page ? 'active' : null;\n          var url = _this2.props.baseUrl;\n\n          if (page > 1) {\n            url += page + '/';\n          }\n\n          return _react2.default.createElement(\n            'li',\n            { key: page, className: className },\n            _react2.default.createElement(\n              _reactRouter.Link,\n              { to: url, onClick: _resetScroll2.default },\n              page\n            )\n          );\n        })\n      );\n      /* jshint ignore:end */\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'pager-undercontent' },\n        _react2.default.createElement(\n          'nav',\n          null,\n          _react2.default.createElement(\n            'ul',\n            { className: 'pager' },\n            this.getPreviousPage(),\n            this.getNextPage()\n          ),\n          this.getProgessBar()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../utils/reset-scroll\":153,\"react\":\"react\",\"react-router\":\"react-router\"}],125:[function(require,module,exports){\n'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _listLoading = require('./list-loading');\n\nvar _listLoading2 = _interopRequireDefault(_listLoading);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _users = require('../../../reducers/users');\n\nvar _polls = require('../../../services/polls');\n\nvar _polls2 = _interopRequireDefault(_polls);\n\nvar _store = require('../../../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _pageTitle = require('../../../services/page-title');\n\nvar _pageTitle2 = _interopRequireDefault(_pageTitle);\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 (_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.update = function (data) {\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n\n      data.isLoaded = true;\n      _this.setState(data);\n    };\n\n    if (_index2.default.has('USERS')) {\n      _this.initWithPreloadedData(_index2.default.pop('USERS'));\n    } else {\n      _this.initWithoutPreloadedData();\n    }\n\n    _this.startPolling(props.params.page || 1);\n    return _this;\n  }\n\n  _createClass(_class, [{\n    key: 'initWithPreloadedData',\n    value: function initWithPreloadedData(data) {\n      this.state = Object.assign(data, {\n        isLoaded: true\n      });\n      _store2.default.dispatch((0, _users.dehydrate)(data.results));\n    }\n  }, {\n    key: 'initWithoutPreloadedData',\n    value: function initWithoutPreloadedData() {\n      this.state = {\n        isLoaded: false\n      };\n    }\n  }, {\n    key: 'startPolling',\n    value: function startPolling(page) {\n      _polls2.default.start({\n        poll: 'rank-users',\n        url: _index2.default.get('USERS_API'),\n        data: {\n          rank: this.props.route.rank.id,\n          page: page\n        },\n        frequency: 90 * 1000,\n        update: this.update\n      });\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: 'componentDidMount',\n\n    /* jshint ignore:end */\n\n    value: function componentDidMount() {\n      _pageTitle2.default.set({\n        title: this.props.route.rank.name,\n        page: this.props.params.page || null,\n        parent: gettext(\"Users\")\n      });\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      _polls2.default.stop('rank-users');\n    }\n  }, {\n    key: 'componentWillReceiveProps',\n    value: function componentWillReceiveProps(nextProps) {\n      if (this.props.params.page !== nextProps.params.page) {\n        _pageTitle2.default.set({\n          title: this.props.route.rank.name,\n          page: nextProps.params.page || null,\n          parent: gettext(\"Users\")\n        });\n\n        this.setState({\n          isLoaded: false\n        });\n\n        _polls2.default.stop('rank-users');\n        this.startPolling(nextProps.params.page);\n      }\n    }\n  }, {\n    key: 'getClassName',\n    value: function getClassName() {\n      if (this.props.route.rank.css_class) {\n        return 'rank-users-list rank-users-' + this.props.route.rank.css_class;\n      } else {\n        return 'rank-users-list';\n      }\n    }\n  }, {\n    key: 'getRankDescription',\n    value: function getRankDescription() {\n      if (this.props.route.rank.description) {\n        /* jshint ignore:start */\n        return _react2.default.createElement(\n          'div',\n          { className: 'rank-description' },\n          _react2.default.createElement('div', { className: 'lead', dangerouslySetInnerHTML: {\n              __html: this.props.route.rank.description.html\n            } })\n        );\n        /* jshint ignore:end */\n      } else {\n          return null;\n        }\n    }\n  }, {\n    key: 'getComponent',\n    value: function getComponent() {\n      if (this.state.isLoaded) {\n        if (this.state.count > 0) {\n          /* jshint ignore:start */\n          var baseUrl = _index2.default.get('USERS_LIST_URL') + this.props.route.rank.slug + '/';\n          return _react2.default.createElement(_list2.default, _extends({ baseUrl: baseUrl,\n            users: this.props.users\n          }, this.state));\n          /* jshint ignore:end */\n        } else {\n            /* jshint ignore:start */\n            return _react2.default.createElement(\n              'p',\n              { className: 'lead' },\n              gettext(\"There are no users with this rank at the moment.\")\n            );\n            /* jshint ignore:end */\n          }\n      } else {\n          /* jshint ignore:start */\n          return _react2.default.createElement(_listLoading2.default, null);\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: this.getClassName() },\n        _react2.default.createElement(\n          'div',\n          { className: 'container' },\n          this.getRankDescription(),\n          this.getComponent()\n        )\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"../../../index\":128,\"../../../reducers/users\":134,\"../../../services/page-title\":142,\"../../../services/polls\":143,\"../../../services/store\":145,\"./list\":123,\"./list-loading\":122,\"react\":\"react\"}],126:[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;\nexports.paths = paths;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = require('react-redux');\n\nvar _navs = require('./navs');\n\nvar _root = require('./active-posters/root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _root3 = require('./rank/root');\n\nvar _root4 = _interopRequireDefault(_root3);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // jshint ignore:line\n// jshint ignore:line\n\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.toggleNav = function () {\n      if (_this.state.dropdown) {\n        _this.setState({\n          dropdown: false\n        });\n      } else {\n        _this.setState({\n          dropdown: true\n        });\n      }\n    };\n\n    _this.hideNav = function () {\n      _this.setState({\n        dropdown: false\n      });\n    };\n\n    _this.state = {\n      dropdown: false\n    };\n    return _this;\n  }\n\n  /* jshint ignore:start */\n\n  _createClass(_class, [{\n    key: 'getToggleNavClassName',\n\n    /* jshint ignore:end */\n\n    value: function getToggleNavClassName() {\n      if (this.state.dropdown) {\n        return 'btn btn-default btn-icon open';\n      } else {\n        return 'btn btn-default btn-icon';\n      }\n    }\n  }, {\n    key: 'getCompactNavClassName',\n    value: function getCompactNavClassName() {\n      if (this.state.dropdown) {\n        return 'compact-nav open';\n      } else {\n        return 'compact-nav';\n      }\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        'div',\n        { className: 'page page-users-lists' },\n        _react2.default.createElement(\n          'div',\n          { className: 'page-header tabbed' },\n          _react2.default.createElement(\n            'div',\n            { className: 'container' },\n            _react2.default.createElement(\n              'h1',\n              { className: 'pull-left' },\n              gettext(\"Users\")\n            ),\n            _react2.default.createElement(\n              'button',\n              { className: 'btn btn-default btn-aligned btn-icon btn-dropdown-toggle hidden-md hidden-lg',\n                type: 'button',\n                onClick: this.toggleNav,\n                'aria-haspopup': 'true',\n                'aria-expanded': this.state.dropdown ? 'true' : 'false' },\n              _react2.default.createElement(\n                'i',\n                { className: 'material-icon' },\n                'menu'\n              )\n            )\n          ),\n          _react2.default.createElement(\n            'div',\n            { className: 'page-tabs hidden-xs hidden-sm' },\n            _react2.default.createElement(\n              'div',\n              { className: 'container' },\n              _react2.default.createElement(_navs.TabsNav, { lists: _index2.default.get('USERS_LISTS'),\n                baseUrl: _index2.default.get('USERS_LIST_URL') })\n            )\n          )\n        ),\n        _react2.default.createElement(\n          'div',\n          { className: this.getCompactNavClassName() },\n          _react2.default.createElement(_navs.CompactNav, { lists: _index2.default.get('USERS_LISTS'),\n            baseUrl: _index2.default.get('USERS_LIST_URL'),\n            hideNav: this.hideNav })\n        ),\n        this.props.children\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\nfunction select(store) {\n  return {\n    'tick': store.tick.tick,\n    'user': store.auth.user,\n    'users': store.users\n  };\n}\n\nfunction paths() {\n  var paths = [];\n\n  _index2.default.get('USERS_LISTS').forEach(function (item) {\n    if (item.component === 'rank') {\n      paths.push({\n        path: _index2.default.get('USERS_LIST_URL') + item.slug + '/:page/',\n        component: (0, _reactRedux.connect)(select)(_root4.default),\n        rank: item\n      });\n      paths.push({\n        path: _index2.default.get('USERS_LIST_URL') + item.slug + '/',\n        component: (0, _reactRedux.connect)(select)(_root4.default),\n        rank: item\n      });\n    } else if (item.component === 'active-posters') {\n      paths.push({\n        path: _index2.default.get('USERS_LIST_URL') + item.component + '/',\n        component: (0, _reactRedux.connect)(select)(_root2.default),\n        extra: {\n          name: item.name\n        }\n      });\n    }\n  });\n\n  return paths;\n}\n\n},{\"../../index\":128,\"./active-posters/root\":120,\"./navs\":121,\"./rank/root\":125,\"react\":\"react\",\"react-redux\":\"react-redux\"}],127:[function(require,module,exports){\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _class = function (_React$Component) {\n  _inherits(_class, _React$Component);\n\n  function _class() {\n    var _Object$getPrototypeO;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, _class);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_Object$getPrototypeO = Object.getPrototypeOf(_class)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.toggle = function () {\n      _this.props.onChange({\n        target: {\n          value: !_this.props.value\n        }\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(_class, [{\n    key: \"getClassName\",\n    value: function getClassName() {\n      if (this.props.value) {\n        return \"btn btn-yes-no btn-yes-no-on\";\n      } else {\n        return \"btn btn-yes-no btn-yes-no-off\";\n      }\n    }\n  }, {\n    key: \"getIcon\",\n    value: function getIcon() {\n      if (this.props.value) {\n        return this.props.iconOn || 'check_box';\n      } else {\n        return this.props.iconOff || 'check_box_outline_blank';\n      }\n    }\n  }, {\n    key: \"getLabel\",\n    value: function getLabel() {\n      if (this.props.value) {\n        return this.props.labelOn || gettext(\"yes\");\n      } else {\n        return this.props.labelOff || gettext(\"no\");\n      }\n    }\n\n    /* jshint ignore:start */\n\n  }, {\n    key: \"render\",\n\n    /* jshint ignore:end */\n\n    value: function render() {\n      /* jshint ignore:start */\n      return _react2.default.createElement(\n        \"button\",\n        { type: \"button\",\n          onClick: this.toggle,\n          className: this.getClassName(),\n          id: this.props.id || null,\n          \"aria-describedby\": this.props['aria-describedby'] || null,\n          disabled: this.props.disabled || false },\n        _react2.default.createElement(\n          \"span\",\n          { className: \"material-icon\" },\n          this.getIcon()\n        ),\n        this.getLabel()\n      );\n      /* jshint ignore:end */\n    }\n  }]);\n\n  return _class;\n}(_react2.default.Component);\n\nexports.default = _class;\n\n},{\"react\":\"react\"}],128:[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[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    key: 'pop',\n    value: function pop(key) {\n      if (this.has(key)) {\n        var value = this._context[key];\n        this._context[key] = null;\n        return value;\n      } else {\n        return 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\":151}],129:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.SIGN_OUT = exports.SIGN_IN = exports.PATCH_USER = exports.initialState = undefined;\nexports.patchUser = patchUser;\nexports.signIn = signIn;\nexports.signOut = signOut;\nexports.default = auth;\n\nvar _users = require('./users');\n\nvar initialState = exports.initialState = {\n  signedIn: false,\n  signedOut: false\n};\n\nvar PATCH_USER = exports.PATCH_USER = 'PATCH_USER';\nvar SIGN_IN = exports.SIGN_IN = 'SIGN_IN';\nvar SIGN_OUT = exports.SIGN_OUT = 'SIGN_OUT';\n\nfunction patchUser(patch) {\n  return {\n    type: PATCH_USER,\n    patch: patch\n  };\n}\n\nfunction signIn(user) {\n  return {\n    type: SIGN_IN,\n    user: user\n  };\n}\n\nfunction signOut() {\n  var soft = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0];\n\n  return {\n    type: SIGN_OUT,\n    soft: soft\n  };\n}\n\nfunction auth() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? initialState : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case PATCH_USER:\n      var newState = Object.assign({}, state);\n      newState.user = Object.assign({}, state.user, action.patch);\n      return newState;\n\n    case SIGN_IN:\n      return Object.assign({}, state, {\n        signedIn: action.user\n      });\n\n    case SIGN_OUT:\n      return Object.assign({}, state, {\n        isAuthenticated: false,\n        isAnonymous: true,\n        signedOut: !action.soft\n      });\n\n    case _users.UPDATE_AVATAR:\n      if (state.isAuthenticated && state.user.id === action.userId) {\n        var _newState = Object.assign({}, state);\n        _newState.user = Object.assign({}, state.user, {\n          'avatar_hash': action.avatarHash\n        });\n        return _newState;\n      }\n      return state;\n\n    case _users.UPDATE_USERNAME:\n      if (state.isAuthenticated && state.user.id === action.userId) {\n        var _newState2 = Object.assign({}, state);\n        _newState2.user = Object.assign({}, state.user, {\n          username: action.username,\n          slug: action.slug\n        });\n        return _newState2;\n      }\n      return state;\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":134}],130:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PATCH_PROFILE = exports.DEHYDRATE_PROFILE = undefined;\nexports.dehydrate = dehydrate;\nexports.patchProfile = patchProfile;\nexports.default = auth;\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _users = require('./users');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEHYDRATE_PROFILE = exports.DEHYDRATE_PROFILE = 'DEHYDRATE_PROFILE';\nvar PATCH_PROFILE = exports.PATCH_PROFILE = 'PATCH_PROFILE';\n\nfunction dehydrate(profile) {\n  return {\n    type: DEHYDRATE_PROFILE,\n    profile: profile\n  };\n}\n\nfunction patchProfile(patch) {\n  return {\n    type: PATCH_PROFILE,\n    patch: patch\n  };\n}\n\nfunction auth() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case DEHYDRATE_PROFILE:\n      return Object.assign({}, action.profile, {\n        joined_on: (0, _moment2.default)(action.profile.joined_on),\n        status: (0, _users.dehydrateStatus)(action.profile.status)\n      });\n\n    case PATCH_PROFILE:\n      return Object.assign({}, state, action.patch);\n\n    case _users.UPDATE_AVATAR:\n      if (state.id === action.userId) {\n        return Object.assign({}, state, {\n          avatar_hash: action.avatarHash\n        });\n      }\n      return state;\n\n    case _users.UPDATE_USERNAME:\n      if (state.id === action.userId) {\n        return Object.assign({}, state, {\n          username: action.username,\n          slug: action.slug\n        });\n      }\n      return state;\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":134,\"moment\":\"moment\"}],131:[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},{}],132:[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},{}],133:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.DEHYDRATE_HISTORY = exports.APPEND_HISTORY = exports.ADD_NAME_CHANGE = undefined;\nexports.addNameChange = addNameChange;\nexports.append = append;\nexports.dehydrate = dehydrate;\nexports.default = username;\n\nvar _users = require('./users');\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ADD_NAME_CHANGE = exports.ADD_NAME_CHANGE = 'ADD_NAME_CHANGE';\nvar APPEND_HISTORY = exports.APPEND_HISTORY = 'APPEND_HISTORY';\nvar DEHYDRATE_HISTORY = exports.DEHYDRATE_HISTORY = 'DEHYDRATE_HISTORY';\n\nfunction addNameChange(change, user, changedBy) {\n  return {\n    type: ADD_NAME_CHANGE,\n    change: change,\n    user: user,\n    changedBy: changedBy\n  };\n}\n\nfunction append(items) {\n  return {\n    type: APPEND_HISTORY,\n    items: items\n  };\n}\n\nfunction dehydrate(items) {\n  return {\n    type: DEHYDRATE_HISTORY,\n    items: items\n  };\n}\n\nfunction username() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case ADD_NAME_CHANGE:\n      var newState = state.slice();\n      newState.unshift({\n        id: Math.floor(Date.now() / 1000), // just small hax for getting id\n        changed_by: action.changedBy,\n        changed_by_username: action.changedBy.username,\n        changed_on: (0, _moment2.default)(),\n        new_username: action.change.username,\n        old_username: action.user.username\n      });\n      return newState;\n\n    case APPEND_HISTORY:\n      return state.concat(action.items.map(function (item) {\n        return Object.assign({}, item, {\n          changed_on: (0, _moment2.default)(item.changed_on)\n        });\n      }));\n\n    case DEHYDRATE_HISTORY:\n      return action.items.map(function (item) {\n        return Object.assign({}, item, {\n          changed_on: (0, _moment2.default)(item.changed_on)\n        });\n      });\n\n    case _users.UPDATE_AVATAR:\n      return state.map(function (item) {\n        item = Object.assign({}, item);\n        if (item.changed_by && item.changed_by.id === action.userId) {\n          item.changed_by = Object.assign({}, item.changed_by, {\n            'avatar_hash': action.avatarHash\n          });\n        }\n\n        return item;\n      });\n\n    case _users.UPDATE_USERNAME:\n      return state.map(function (item) {\n        item = Object.assign({}, item);\n        if (item.changed_by && item.changed_by.id === action.userId) {\n          item.changed_by = Object.assign({}, item.changed_by, {\n            'username': action.username,\n            'slug': action.slug\n          });\n        }\n\n        return Object.assign({}, item);\n      });\n\n    default:\n      return state;\n  }\n}\n\n},{\"./users\":134,\"moment\":\"moment\"}],134:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.UPDATE_USERNAME = exports.UPDATE_AVATAR = exports.DEHYDRATE_USERS = exports.APPEND_USERS = undefined;\nexports.append = append;\nexports.dehydrate = dehydrate;\nexports.dehydrateStatus = dehydrateStatus;\nexports.updateAvatar = updateAvatar;\nexports.updateUsername = updateUsername;\nexports.default = user;\n\nvar _moment = require('moment');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar APPEND_USERS = exports.APPEND_USERS = 'APPEND_USERS';\nvar DEHYDRATE_USERS = exports.DEHYDRATE_USERS = 'DEHYDRATE_USERS';\nvar UPDATE_AVATAR = exports.UPDATE_AVATAR = 'UPDATE_AVATAR';\nvar UPDATE_USERNAME = exports.UPDATE_USERNAME = 'UPDATE_USERNAME';\n\nfunction append(items) {\n  return {\n    type: APPEND_USERS,\n    items: items\n  };\n}\n\nfunction dehydrate(items) {\n  return {\n    type: DEHYDRATE_USERS,\n    items: items\n  };\n}\n\nfunction dehydrateStatus(status) {\n  if (status) {\n    return Object.assign({}, status, {\n      last_click: status.last_click ? (0, _moment2.default)(status.last_click) : null,\n      banned_until: status.banned_until ? (0, _moment2.default)(status.banned_until) : null\n    });\n  } else {\n    return null;\n  }\n}\n\nfunction updateAvatar(user, avatarHash) {\n  return {\n    type: UPDATE_AVATAR,\n    userId: user.id,\n    avatarHash: avatarHash\n  };\n}\n\nfunction updateUsername(user, username, slug) {\n  return {\n    type: UPDATE_USERNAME,\n    userId: user.id,\n    username: username,\n    slug: slug\n  };\n}\n\nfunction user() {\n  var state = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];\n  var action = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\n\n  switch (action.type) {\n    case APPEND_USERS:\n      return state.concat(action.items.map(function (item) {\n        return Object.assign({}, item, {\n          joined_on: (0, _moment2.default)(item.joined_on),\n          status: dehydrateStatus(item.status)\n        });\n      }));\n\n    case DEHYDRATE_USERS:\n      return action.items.map(function (item) {\n        return Object.assign({}, item, {\n          joined_on: (0, _moment2.default)(item.joined_on),\n          status: dehydrateStatus(item.status)\n        });\n      });\n\n    case UPDATE_AVATAR:\n      return state.map(function (item) {\n        item = Object.assign({}, item);\n        if (item.id === action.userId) {\n          item.avatar_hash = action.avatarHash;\n        }\n\n        return item;\n      });\n\n    default:\n      return state;\n  }\n}\n\n},{\"moment\":\"moment\"}],135:[function(require,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\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    this._locks = {};\n  }\n\n  _createClass(Ajax, [{\n    key: 'init',\n    value: function init(cookieName) {\n      this._cookieName = cookieName;\n      this._csrfToken = this.getCsrfToken();\n    }\n  }, {\n    key: 'getCsrfToken',\n    value: function getCsrfToken() {\n      if (document.cookie.indexOf(this._cookieName) !== -1) {\n        var cookieRegex = new RegExp(this._cookieName + '\\=([^;]*)');\n        var cookie = document.cookie.match(cookieRegex)[0];\n        return cookie ? cookie.split('=')[1] : null;\n      } else {\n        return null;\n      }\n    }\n  }, {\n    key: 'request',\n    value: function request(method, url, data) {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        var xhr = {\n          url: url,\n          method: method,\n          headers: {\n            'X-CSRFToken': self._csrfToken\n          },\n\n          data: data ? JSON.stringify(data) : null,\n          contentType: \"application/json; charset=utf-8\",\n          dataType: 'json',\n\n          success: function success(data) {\n            resolve(data);\n          },\n\n          error: function error(jqXHR) {\n            var rejection = jqXHR.responseJSON || {};\n\n            rejection.status = jqXHR.status;\n\n            if (rejection.status === 0) {\n              rejection.detail = gettext(\"Lost connection with application.\");\n            }\n\n            if (rejection.status === 404) {\n              if (!rejection.detail || rejection.detail === 'NOT FOUND') {\n                rejection.detail = gettext(\"Action link is invalid.\");\n              }\n            }\n\n            if (rejection.status === 500 && !rejection.detail) {\n              rejection.detail = gettext(\"Unknown error has occured.\");\n            }\n\n            rejection.statusText = jqXHR.statusText;\n\n            reject(rejection);\n          }\n        };\n\n        $.ajax(xhr);\n      });\n    }\n  }, {\n    key: 'get',\n    value: function get(url, params, lock) {\n      var _this = this;\n\n      if (params) {\n        url += '?' + $.param(params);\n      }\n\n      if (lock) {\n        var _ret = function () {\n          var self = _this;\n\n          // update url in existing lock?\n          if (_this._locks[lock]) {\n            _this._locks[lock].url = url;\n          }\n\n          // immediately dereference promise handlers without doing anything\n          // we are already waiting for existing response to resolve\n          if (_this._locks[lock] && _this._locks[lock].waiter) {\n            return {\n              v: {\n                then: function then() {\n                  return;\n                }\n              }\n            };\n\n            // return promise that will begin when original one resolves\n          } else if (_this._locks[lock] && _this._locks[lock].wait) {\n              _this._locks[lock].waiter = true;\n\n              return {\n                v: new Promise(function (resolve, reject) {\n                  var wait = function wait(url) {\n                    // keep waiting on promise\n                    if (self._locks[lock].wait) {\n                      window.setTimeout(function () {\n                        wait(url);\n                      }, 300);\n\n                      // poll for new url\n                    } else if (self._locks[lock].url !== url) {\n                        wait(self._locks[lock].url);\n\n                        // ajax backend for response\n                      } else {\n                          self._locks[lock].waiter = false;\n                          self.request('GET', self._locks[lock].url).then(function (data) {\n                            if (self._locks[lock].url === url) {\n                              resolve(data);\n                            } else {\n                              self._locks[lock].waiter = true;\n                              wait(self._locks[lock].url);\n                            }\n                          }, function (rejection) {\n                            if (self._locks[lock].url === url) {\n                              reject(rejection);\n                            } else {\n                              self._locks[lock].waiter = true;\n                              wait(self._locks[lock].url);\n                            }\n                          });\n                        }\n                  };\n\n                  window.setTimeout(function () {\n                    wait(url);\n                  }, 300);\n                })\n              };\n\n              // setup new lock without waiter\n            } else {\n                _this._locks[lock] = {\n                  url: url,\n                  wait: true,\n                  waiter: false\n                };\n\n                return {\n                  v: new Promise(function (resolve, reject) {\n                    self.request('GET', url).then(function (data) {\n                      self._locks[lock].wait = false;\n                      if (self._locks[lock].url === url) {\n                        resolve(data);\n                      }\n                    }, function (rejection) {\n                      self._locks[lock].wait = false;\n                      if (self._locks[lock].url === url) {\n                        reject(rejection);\n                      }\n                    });\n                  })\n                };\n              }\n        }();\n\n        if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n      } else {\n        return this.request('GET', url);\n      }\n    }\n  }, {\n    key: 'post',\n    value: function post(url, data) {\n      return this.request('POST', url, data);\n    }\n  }, {\n    key: 'patch',\n    value: function patch(url, data) {\n      return this.request('PATCH', url, data);\n    }\n  }, {\n    key: 'put',\n    value: function put(url, data) {\n      return this.request('PUT', url, data);\n    }\n  }, {\n    key: 'delete',\n    value: function _delete(url) {\n      return this.request('DELETE', url);\n    }\n  }, {\n    key: 'upload',\n    value: function upload(url, data, progress) {\n      var self = this;\n      return new Promise(function (resolve, reject) {\n        var xhr = {\n          url: url,\n          method: 'POST',\n          headers: {\n            'X-CSRFToken': self._csrfToken\n          },\n\n          data: data,\n          contentType: false,\n          processData: false,\n\n          xhr: function xhr() {\n            var xhr = new window.XMLHttpRequest();\n            xhr.upload.addEventListener(\"progress\", function (evt) {\n              if (evt.lengthComputable) {\n                progress(Math.round(evt.loaded / evt.total * 100));\n              }\n            }, false);\n            return xhr;\n          },\n\n          success: function success(response) {\n            resolve(response);\n          },\n\n          error: function error(jqXHR) {\n            var rejection = jqXHR.responseJSON || {};\n\n            rejection.status = jqXHR.status;\n\n            if (rejection.status === 0) {\n              rejection.detail = gettext(\"Lost connection with application.\");\n            }\n\n            if (rejection.status === 404) {\n              if (!rejection.detail || rejection.detail === 'NOT FOUND') {\n                rejection.detail = gettext(\"Action link is invalid.\");\n              }\n            }\n\n            if (rejection.status === 500 && !rejection.detail) {\n              rejection.detail = gettext(\"Unknown error has occured.\");\n            }\n\n            rejection.statusText = jqXHR.statusText;\n\n            reject(rejection);\n          }\n        };\n\n        $.ajax(xhr);\n      });\n    }\n  }]);\n\n  return Ajax;\n}();\n\nexports.default = new Ajax();\n\n},{}],136:[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\":129}],137:[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\":68,\"react\":\"react\"}],138:[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},{}],139:[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},{}],140:[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\":150}],141:[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\":150,\"react-dom\":\"react-dom\"}],142:[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 PageTitle = exports.PageTitle = function () {\n  function PageTitle() {\n    _classCallCheck(this, PageTitle);\n  }\n\n  _createClass(PageTitle, [{\n    key: 'init',\n    value: function init(forumName) {\n      this._forumName = forumName;\n    }\n  }, {\n    key: 'set',\n    value: function set(title) {\n      if (typeof title === 'string') {\n        title = { title: title };\n      }\n\n      var finalTitle = title.title;\n\n      if (title.page) {\n        var pageLabel = interpolate(gettext('page: %(page)s'), {\n          page: title.page\n        }, true);\n\n        finalTitle += ' (' + pageLabel + ')';\n      }\n\n      if (title.parent) {\n        finalTitle += ' | ' + title.parent;\n      }\n\n      document.title = finalTitle + ' | ' + this._forumName;\n    }\n  }]);\n\n  return PageTitle;\n}();\n\nexports.default = new PageTitle();\n\n},{}],143:[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 Polls = exports.Polls = function () {\n  function Polls() {\n    _classCallCheck(this, Polls);\n  }\n\n  _createClass(Polls, [{\n    key: \"init\",\n    value: function init(ajax, snackbar) {\n      this._ajax = ajax;\n      this._snackbar = snackbar;\n\n      this._polls = {};\n    }\n  }, {\n    key: \"start\",\n    value: function start(kwargs) {\n      var _this = this;\n\n      var poolServer = function poolServer() {\n        _this._polls[kwargs.poll] = kwargs;\n\n        _this._ajax.get(kwargs.url, kwargs.data || null).then(function (data) {\n          if (!_this._polls[kwargs.poll]._stopped) {\n            kwargs.update(data);\n\n            _this._polls[kwargs.poll].timeout = window.setTimeout(poolServer, kwargs.frequency);\n          }\n        }, function (rejection) {\n          if (!_this._polls[kwargs.poll]._stopped) {\n            if (kwargs.error) {\n              kwargs.error(rejection);\n            } else {\n              _this._snackbar.apiError(rejection);\n            }\n          }\n        });\n      };\n\n      poolServer();\n    }\n  }, {\n    key: \"stop\",\n    value: function stop(pollId) {\n      if (this._polls[pollId]) {\n        window.clearTimeout(this._polls[pollId].timeout);\n        this._polls[pollId]._stopped = true;\n      }\n    }\n  }]);\n\n  return Polls;\n}();\n\nexports.default = new Polls();\n\n},{}],144:[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 = rejection.detail;\n\n      if (!message) {\n        if (rejection.status === 404) {\n          message = gettext(\"Action link is invalid.\");\n        } else {\n          message = gettext(\"Unknown error has occured.\");\n        }\n      }\n\n      if (rejection.status === 403 && message === \"Permission denied\") {\n        message = gettext(\"You don't have permission to perform this action.\");\n      }\n\n      this.error(message);\n    }\n  }]);\n\n  return Snackbar;\n}();\n\nexports.default = new Snackbar();\n\n},{\"../reducers/snackbar\":131}],145:[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\"}],146:[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},{}],147:[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\":55,\"../index\":128,\"../services/store\":145,\"moment\":\"moment\",\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],148:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (list, rowWidth) {\n  var padding = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];\n\n  var rows = [];\n  var row = [];\n\n  list.forEach(function (element) {\n    row.push(element);\n    if (row.length === rowWidth) {\n      rows.push(row);\n      row = [];\n    }\n  });\n\n  // pad row to required length?\n  if (padding !== false && row.length > 0 && row.length < rowWidth) {\n    for (var i = row.length; i < rowWidth; i++) {\n      row.push(padding);\n    }\n  }\n\n  if (row.length) {\n    rows.push(row);\n  }\n\n  return rows;\n};\n\n},{}],149:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (bytes) {\n  if (bytes > 1000 * 1000 * 1000) {\n    return Math.round(bytes * 100 / (1000 * 1000 * 1000)) / 100 + ' GB';\n  } else if (bytes > 1000 * 1000) {\n    return Math.round(bytes * 100 / (1000 * 1000)) / 100 + ' MB';\n  } else if (bytes > 1000) {\n    return Math.round(bytes * 100 / 1000) / 100 + ' KB';\n  } else {\n    return Math.round(bytes * 100) / 100 + ' B';\n  }\n};\n\n},{}],150:[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  /* jshint ignore:start */\n  var finalComponent = Component.props ? Component : _react2.default.createElement(Component, null);\n  /* jshint ignore:end */\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        finalComponent\n      ),\n      /* jshint ignore:end */\n      rootElement);\n    } else {\n      /* jshint ignore:start */\n      _reactDom2.default.render(finalComponent, rootElement);\n      /* jshint ignore:end */\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\":145,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\"}],151:[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},{}],152:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.int = int;\nexports.range = range;\nfunction int(min, max) {\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nfunction range(min, max) {\n  var array = new Array(int(min, max));\n  for (var i = 0; i < array.length; i++) {\n    array[i] = i;\n  }\n\n  return array;\n}\n\n},{}],153:[function(require,module,exports){\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function () {\n  window.scrollTo(0, 0);\n};\n\n},{}],154:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports.default = function (options) {\n  var routes = {\n    component: options.component,\n    childRoutes: [{\n      path: options.root,\n      onEnter: function onEnter(nextState, replaceState) {\n        replaceState(null, options.paths[0].path);\n      }\n    }].concat(options.paths.map(function (path) {\n      return path;\n    }))\n  };\n\n  _reactDom2.default.render(_react2.default.createElement(\n    _reactRedux.Provider,\n    { store: _store2.default.getStore() },\n    _react2.default.createElement(_reactRouter.Router, { routes: routes, history: history })\n  ), rootElement);\n};\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = require('react-redux');\n\nvar _reactRouter = require('react-router');\n\nvar _createBrowserHistory = require('history/lib/createBrowserHistory');\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _store = require('../services/store');\n\nvar _store2 = _interopRequireDefault(_store);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// jshint ignore:start\n\nvar rootElement = document.getElementById('page-mount');\nvar history = new _createBrowserHistory2.default();\n\n},{\"../services/store\":145,\"history/lib/createBrowserHistory\":43,\"react\":\"react\",\"react-dom\":\"react-dom\",\"react-redux\":\"react-redux\",\"react-router\":\"react-router\"}],155:[function(require,module,exports){\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.required = required;\nexports.email = email;\nexports.minLength = minLength;\nexports.maxLength = maxLength;\nexports.usernameMinLength = usernameMinLength;\nexports.usernameMaxLength = usernameMaxLength;\nexports.usernameContent = usernameContent;\nexports.passwordMinLength = passwordMinLength;\nvar EMAIL = /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\nvar USERNAME = new RegExp('^[0-9a-z]+$', 'i');\n\nfunction required() {\n  return function (value) {\n    if ($.trim(value).length === 0) {\n      return gettext(\"This field is required.\");\n    }\n  };\n}\n\nfunction email(message) {\n  return function (value) {\n    if (!EMAIL.test(value)) {\n      return message || gettext(\"Enter a valid email address.\");\n    }\n  };\n}\n\nfunction minLength(limitValue, message) {\n  return function (value) {\n    var returnMessage = '';\n    var length = $.trim(value).length;\n\n    if (length < limitValue) {\n      if (message) {\n        returnMessage = message(limitValue, length);\n      } else {\n        returnMessage = ngettext(\"Ensure this value has at least %(limit_value)s character (it has %(show_value)s).\", \"Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).\", limitValue);\n      }\n      return interpolate(returnMessage, {\n        limit_value: limitValue,\n        show_value: length\n      }, true);\n    }\n  };\n}\n\nfunction maxLength(limitValue, message) {\n  return function (value) {\n    var returnMessage = '';\n    var length = $.trim(value).length;\n\n    if (length > limitValue) {\n      if (message) {\n        returnMessage = message(limitValue, length);\n      } else {\n        returnMessage = ngettext(\"Ensure this value has at most %(limit_value)s character (it has %(show_value)s).\", \"Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).\", limitValue);\n      }\n      return interpolate(returnMessage, {\n        limit_value: limitValue,\n        show_value: length\n      }, true);\n    }\n  };\n}\n\nfunction usernameMinLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Username must be at least %(limit_value)s character long.\", \"Username must be at least %(limit_value)s characters long.\", limitValue);\n  };\n  return this.minLength(settings.username_length_min, message);\n}\n\nfunction usernameMaxLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Username cannot be longer than %(limit_value)s character.\", \"Username cannot be longer than %(limit_value)s characters.\", limitValue);\n  };\n  return this.maxLength(settings.username_length_max, message);\n}\n\nfunction usernameContent() {\n  return function (value) {\n    if (!USERNAME.test($.trim(value))) {\n      return gettext(\"Username can only contain latin alphabet letters and digits.\");\n    }\n  };\n}\n\nfunction passwordMinLength(settings) {\n  var message = function message(limitValue) {\n    return ngettext(\"Valid password must be at least %(limit_value)s character long.\", \"Valid password must be at least %(limit_value)s characters long.\", limitValue);\n  };\n  return this.minLength(settings.password_length_min, message);\n}\n\n},{}]},{},[2,3,4,5,17,18,19,20,21,22,23,31,32,33,34,6,7,8,9,10,11,12,13,14,15,16,24,25,26,27,28,29,30]);\n"],"sourceRoot":"/source/"}

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


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