{"version":3,"sources":["vendor/ember-cli/app-prefix.js","ember-blog/adapters/-json-api.js","ember-blog/adapters/application.js","ember-blog/app.js","ember-blog/components/-dynamic-element-alt.js","ember-blog/components/-dynamic-element.js","ember-blog/components/article-body.js","ember-blog/components/article-list.js","ember-blog/components/article-share-menu.js","ember-blog/components/basic-dropdown-content.js","ember-blog/components/basic-dropdown-trigger.js","ember-blog/components/basic-dropdown.js","ember-blog/components/bear-list.js","ember-blog/components/content-placeholders-heading.js","ember-blog/components/content-placeholders-img.js","ember-blog/components/content-placeholders-nav.js","ember-blog/components/content-placeholders-text.js","ember-blog/components/content-placeholders.js","ember-blog/components/email-share-button.js","ember-blog/components/ember-popover.js","ember-blog/components/ember-tooltip.js","ember-blog/components/fa-icon.js","ember-blog/components/fb-share-button.js","ember-blog/components/gplus-share-button.js","ember-blog/components/infinity-loader.js","ember-blog/components/linkedin-share-button.js","ember-blog/components/loader.js","ember-blog/components/markdown-to-html.js","ember-blog/components/nav.js","ember-blog/components/paper-autocomplete-highlight.js","ember-blog/components/paper-autocomplete.js","ember-blog/components/paper-autocomplete/ebd-content.js","ember-blog/components/paper-autocomplete/ebd-trigger.js","ember-blog/components/paper-autocomplete/eps-trigger.js","ember-blog/components/paper-autocomplete/highlight.js","ember-blog/components/paper-autocomplete/no-matches-message.js","ember-blog/components/paper-autocomplete/options.js","ember-blog/components/paper-autocomplete/reset-button.js","ember-blog/components/paper-backdrop.js","ember-blog/components/paper-button.js","ember-blog/components/paper-card-actions.js","ember-blog/components/paper-card-avatar.js","ember-blog/components/paper-card-content.js","ember-blog/components/paper-card-header-headline.js","ember-blog/components/paper-card-header-subhead.js","ember-blog/components/paper-card-header-text.js","ember-blog/components/paper-card-header-title.js","ember-blog/components/paper-card-header.js","ember-blog/components/paper-card-icon-actions.js","ember-blog/components/paper-card-image.js","ember-blog/components/paper-card-media.js","ember-blog/components/paper-card-title-media.js","ember-blog/components/paper-card-title-text.js","ember-blog/components/paper-card-title.js","ember-blog/components/paper-card.js","ember-blog/components/paper-checkbox.js","ember-blog/components/paper-chips.js","ember-blog/components/paper-contact-chips.js","ember-blog/components/paper-content.js","ember-blog/components/paper-dialog-actions.js","ember-blog/components/paper-dialog-container.js","ember-blog/components/paper-dialog-content.js","ember-blog/components/paper-dialog-inner.js","ember-blog/components/paper-dialog.js","ember-blog/components/paper-divider.js","ember-blog/components/paper-form.js","ember-blog/components/paper-grid-list.js","ember-blog/components/paper-grid-tile-footer.js","ember-blog/components/paper-grid-tile.js","ember-blog/components/paper-icon.js","ember-blog/components/paper-ink-bar.js","ember-blog/components/paper-input.js","ember-blog/components/paper-item.js","ember-blog/components/paper-list.js","ember-blog/components/paper-menu.js","ember-blog/components/paper-menu/content.js","ember-blog/components/paper-menu/item.js","ember-blog/components/paper-menu/trigger.js","ember-blog/components/paper-progress-circular.js","ember-blog/components/paper-progress-linear.js","ember-blog/components/paper-radio-group-label.js","ember-blog/components/paper-radio-group.js","ember-blog/components/paper-radio-proxiable.js","ember-blog/components/paper-radio.js","ember-blog/components/paper-reset-button.js","ember-blog/components/paper-ripple.js","ember-blog/components/paper-select.js","ember-blog/components/paper-select/ebd-content.js","ember-blog/components/paper-select/ebd-trigger.js","ember-blog/components/paper-select/eps-trigger.js","ember-blog/components/paper-select/no-matches-message.js","ember-blog/components/paper-select/option.js","ember-blog/components/paper-select/options.js","ember-blog/components/paper-select/search-message.js","ember-blog/components/paper-select/search.js","ember-blog/components/paper-sidenav-container.js","ember-blog/components/paper-sidenav-inner.js","ember-blog/components/paper-sidenav-toggle.js","ember-blog/components/paper-sidenav.js","ember-blog/components/paper-slider.js","ember-blog/components/paper-speed-dial-actions-action.js","ember-blog/components/paper-speed-dial-actions.js","ember-blog/components/paper-speed-dial-trigger.js","ember-blog/components/paper-speed-dial.js","ember-blog/components/paper-subheader.js","ember-blog/components/paper-switch.js","ember-blog/components/paper-tab.js","ember-blog/components/paper-tabs.js","ember-blog/components/paper-toast-inner.js","ember-blog/components/paper-toast-text.js","ember-blog/components/paper-toast.js","ember-blog/components/paper-toaster.js","ember-blog/components/paper-toolbar-tools.js","ember-blog/components/paper-toolbar.js","ember-blog/components/paper-tooltip-inner.js","ember-blog/components/paper-tooltip.js","ember-blog/components/power-select-multiple.js","ember-blog/components/power-select-multiple/trigger.js","ember-blog/components/power-select.js","ember-blog/components/power-select/before-options.js","ember-blog/components/power-select/no-matches-message.js","ember-blog/components/power-select/options.js","ember-blog/components/power-select/placeholder.js","ember-blog/components/power-select/power-select-group.js","ember-blog/components/power-select/search-message.js","ember-blog/components/power-select/trigger.js","ember-blog/components/reddit-share-button.js","ember-blog/components/share-panel.js","ember-blog/components/sidebar-left.js","ember-blog/components/sidebar-right.js","ember-blog/components/sidebar-wrap-left.js","ember-blog/components/transition-group.js","ember-blog/components/twitter-share-button.js","ember-blog/components/vertical-collection.js","ember-blog/components/vk-share-button.js","ember-blog/controllers/application.js","ember-blog/controllers/culture.js","ember-blog/controllers/home.js","ember-blog/controllers/home/view.js","ember-blog/controllers/post.js","ember-blog/controllers/tech.js","ember-blog/data-adapter.js","ember-blog/extensions/showdown.js","ember-blog/helpers/-clear-element.js","ember-blog/helpers/-element.js","ember-blog/helpers/-paper-underscore.js","ember-blog/helpers/and.js","ember-blog/helpers/app-version.js","ember-blog/helpers/cancel-all.js","ember-blog/helpers/ember-power-select-is-group.js","ember-blog/helpers/ember-power-select-is-selected.js","ember-blog/helpers/eq.js","ember-blog/helpers/gt.js","ember-blog/helpers/gte.js","ember-blog/helpers/href-to.js","ember-blog/helpers/is-array.js","ember-blog/helpers/is-empty.js","ember-blog/helpers/is-equal.js","ember-blog/helpers/lt.js","ember-blog/helpers/lte.js","ember-blog/helpers/not-eq.js","ember-blog/helpers/not.js","ember-blog/helpers/or.js","ember-blog/helpers/perform.js","ember-blog/helpers/pluralize.js","ember-blog/helpers/route-action.js","ember-blog/helpers/singularize.js","ember-blog/helpers/task.js","ember-blog/helpers/truncate-text.js","ember-blog/helpers/xor.js","ember-blog/initializers/app-version.js","ember-blog/initializers/container-debug-adapter.js","ember-blog/initializers/debug.js","ember-blog/initializers/ember-cli-mirage.js","ember-blog/initializers/ember-concurrency.js","ember-blog/initializers/ember-data-data-adapter.js","ember-blog/initializers/ember-data.js","ember-blog/initializers/export-application-global.js","ember-blog/initializers/viewport-config.js","ember-blog/instance-initializers/ember-cli-mirage-autostart.js","ember-blog/instance-initializers/ember-data.js","ember-blog/instance-initializers/ember-href-to.js","ember-blog/mirage/config.js","ember-blog/mirage/fixtures/categories.js","ember-blog/mirage/fixtures/posts-1.js","ember-blog/mirage/fixtures/posts.js","ember-blog/mirage/scenarios/default.js","ember-blog/mirage/serializers/application.js","ember-blog/mixins/transition-mixin.js","ember-blog/models/category.js","ember-blog/models/home.js","ember-blog/models/post.js","ember-blog/modifiers/did-insert.js","ember-blog/modifiers/did-update.js","ember-blog/modifiers/will-destroy.js","ember-blog/resolver.js","ember-blog/router.js","ember-blog/routes/application.js","ember-blog/routes/category.js","ember-blog/routes/design.js","ember-blog/routes/heated.js","ember-blog/routes/home.js","ember-blog/routes/home/view.js","ember-blog/routes/post.js","ember-blog/routes/self.js","ember-blog/routes/tech.js","ember-blog/serializers/-default.js","ember-blog/serializers/-json-api.js","ember-blog/serializers/-rest.js","ember-blog/services/constants.js","ember-blog/services/in-viewport.js","ember-blog/services/infinity.js","ember-blog/services/paper-sidenav.js","ember-blog/services/paper-theme.js","ember-blog/services/paper-toaster.js","ember-blog/services/sniffer.js","ember-blog/services/store.js","ember-blog/services/text-measurer.js","ember-blog/templates/application.js","ember-blog/templates/callback.js","ember-blog/templates/category.js","ember-blog/templates/components/article-body.js","ember-blog/templates/components/article-list.js","ember-blog/templates/components/article-share-menu.js","ember-blog/templates/components/bear-list.js","ember-blog/templates/components/content-load.js","ember-blog/templates/components/infinity-loader.js","ember-blog/templates/components/loader.js","ember-blog/templates/components/loading.js","ember-blog/templates/components/nav.js","ember-blog/templates/components/sidebar-left.js","ember-blog/templates/components/sidebar-right.js","ember-blog/templates/components/sidebar-wrap-left.js","ember-blog/templates/design.js","ember-blog/templates/heated.js","ember-blog/templates/home.js","ember-blog/templates/post.js","ember-blog/templates/self-loading.js","ember-blog/templates/self.js","ember-blog/templates/tech.js","ember-blog/tests/mirage/mirage.lint-test.js","ember-blog/transforms/boolean.js","ember-blog/transforms/date.js","ember-blog/transforms/number.js","ember-blog/transforms/string.js","ember-blog/utils/calculate-position.js","ember-blog/utils/clamp.js","vendor/ember-cli/app-suffix.js","vendor/ember-cli/app-config.js","vendor/ember-cli/app-boot.js"],"sourcesContent":["'use strict';\n\n\n","define(\"ember-blog/adapters/-json-api\", [\"exports\", \"@ember-data/adapter/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonApi.default;\n    }\n  });\n});","define(\"ember-blog/adapters/application\", [\"exports\", \"ember-data\"], function (_exports, _emberData) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = _emberData.default.RESTAdapter.extend({// host: 'http://localhost:3000'\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/app\", [\"exports\", \"ember-blog/resolver\", \"ember-load-initializers\", \"ember-blog/config/environment\"], function (_exports, _resolver, _emberLoadInitializers, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var App = Ember.Application.extend({\n    modulePrefix: _environment.default.modulePrefix,\n    podModulePrefix: _environment.default.podModulePrefix,\n    Resolver: _resolver.default\n  });\n  (0, _emberLoadInitializers.default)(App, _environment.default.modulePrefix);\n  var _default = App;\n  _exports.default = _default;\n});","define(\"ember-blog/components/-dynamic-element-alt\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  // avoiding reexport directly here because in some circumstances (ember-engines\n  // for example) a simple reexport is transformed to `define.alias`,\n  // unfortunately at the moment (ember-source@3.13) there is no _actual_\n  // `@ember/component` module to alias so this causes issues\n  //\n  // tldr; we can replace this with a simple reexport when we can rely on Ember\n  // actually providing a `@ember/component` module\n  var _default = Ember.Component.extend();\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/-dynamic-element\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  // avoiding reexport directly here because in some circumstances (ember-engines\n  // for example) a simple reexport is transformed to `define.alias`,\n  // unfortunately at the moment (ember-source@3.13) there is no _actual_\n  // `@ember/component` module to alias so this causes issues\n  //\n  // tldr; we can replace this with a simple reexport when we can rely on Ember\n  // actually providing a `@ember/component` module\n  var _default = Ember.Component.extend();\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/article-body\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\n  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n  var _default = Ember.Component.extend({\n    infinity: Ember.inject.service(),\n    classNames: [\"list-items\"],\n    init: function init() {\n      var _this = this;\n\n      this._super.apply(this, arguments);\n\n      this.set(\"isLoading\", true);\n      this.posts = this.get(\"infinity\").model(\"post\", {\n        perPage: 5\n      });\n      this.posts.then(function () {\n        _this.set(\"isLoading\", false);\n      });\n    },\n    watchChange: Ember.computed(\"chooseCategory\", function () {\n      // console.log( 'I am watched', this.get( 'chooseCategory' ) );\n      console.log(this.get(\"testObject\"));\n    }),\n    actions: {\n      filterProducts: function filterProducts() {\n        var _this2 = this;\n\n        return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n          var posts;\n          return regeneratorRuntime.wrap(function _callee$(_context) {\n            while (1) {\n              switch (_context.prev = _context.next) {\n                case 0:\n                  posts = _this2.get(\"infinity\").model(\"post\"); // let posts = await this.store.query( 'post', {query} );\n                  // model is the collection returned from the route model hook\n\n                  _this2.get(\"infinity\").replace(_this2.get(\"model\"), posts);\n\n                case 2:\n                case \"end\":\n                  return _context.stop();\n              }\n            }\n          }, _callee);\n        }))();\n      }\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/article-list\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Component.extend({\n    classNames: [\"singleArticleList\"],\n\n    /**\n     * This variable is class name from material design.\n     * true: md-whiteframe-10dp\n     * false: empty\n     */\n    mdWhiteframe_10dp: false,\n    oneTimeIcon: \"favorite_border\",\n    mouseEnter: function mouseEnter() {\n      this.set(\"mdWhiteframe_10dp\", true);\n    },\n    mouseLeave: function mouseLeave() {\n      this.set(\"mdWhiteframe_10dp\", false);\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/article-share-menu\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Component.extend({\n    tagName: \"\",\n    animation: \"scale\",\n    direction: \"down\"\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/basic-dropdown-content\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown-content\"], function (_exports, _basicDropdownContent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownContent.default;\n    }\n  });\n});","define(\"ember-blog/components/basic-dropdown-trigger\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown-trigger\"], function (_exports, _basicDropdownTrigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownTrigger.default;\n    }\n  });\n});","define(\"ember-blog/components/basic-dropdown\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown\"], function (_exports, _basicDropdown) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdown.default;\n    }\n  });\n});","define(\"ember-blog/components/bear-list\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Component.extend({\n    page: 0,\n    model: Ember.computed({\n      set: function set(key, bears) {\n        return bears.map(function (bear) {\n          bears.favorited = false;\n          return Ember.Object.create(bear);\n        });\n      }\n    }),\n    totalBears: Ember.computed(\"model.[]\", function () {\n      return this.get(\"model.length\");\n    }),\n    bears: Ember.computed(\"model.[]\", \"page\", function () {\n      // console.log(this.page);\n      var page = this.get(\"page\");\n      return this.get(\"model\").slice(page, page + 5);\n    }),\n    favoritedBears: Ember.computed(\"model.@each.favorited\", {\n      get: function get() {\n        return this.get(\"model\").filterBy(\"favorited\", true).length;\n      }\n    }),\n    actions: {\n      showMore: function showMore() {\n        this.incrementProperty(\"page\", 5);\n      },\n      favorite: function favorite(bear) {\n        // toggler the variable\n        bear.toggleProperty(\"favorited\");\n      },\n      checkModel: function checkModel() {\n        console.dir(this.get(\"model\"));\n      }\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/content-placeholders-heading\", [\"exports\", \"ember-content-placeholders/components/content-placeholders-heading\"], function (_exports, _contentPlaceholdersHeading) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _contentPlaceholdersHeading.default;\n    }\n  });\n});","define(\"ember-blog/components/content-placeholders-img\", [\"exports\", \"ember-content-placeholders/components/content-placeholders-img\"], function (_exports, _contentPlaceholdersImg) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _contentPlaceholdersImg.default;\n    }\n  });\n});","define(\"ember-blog/components/content-placeholders-nav\", [\"exports\", \"ember-content-placeholders/components/content-placeholders-nav\"], function (_exports, _contentPlaceholdersNav) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _contentPlaceholdersNav.default;\n    }\n  });\n});","define(\"ember-blog/components/content-placeholders-text\", [\"exports\", \"ember-content-placeholders/components/content-placeholders-text\"], function (_exports, _contentPlaceholdersText) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _contentPlaceholdersText.default;\n    }\n  });\n});","define(\"ember-blog/components/content-placeholders\", [\"exports\", \"ember-content-placeholders/components/content-placeholders\"], function (_exports, _contentPlaceholders) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _contentPlaceholders.default;\n    }\n  });\n});","define(\"ember-blog/components/email-share-button\", [\"exports\", \"ember-social-share/components/email-share-button\"], function (_exports, _emailShareButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emailShareButton.default;\n    }\n  });\n});","define(\"ember-blog/components/ember-popover\", [\"exports\", \"ember-tooltips/components/ember-popover\"], function (_exports, _emberPopover) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopover.default;\n    }\n  });\n});","define(\"ember-blog/components/ember-tooltip\", [\"exports\", \"ember-tooltips/components/ember-tooltip\"], function (_exports, _emberTooltip) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberTooltip.default;\n    }\n  });\n});","define(\"ember-blog/components/fa-icon\", [\"exports\", \"@fortawesome/ember-fontawesome/components/fa-icon\"], function (_exports, _faIcon) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _faIcon.default;\n    }\n  });\n});","define(\"ember-blog/components/fb-share-button\", [\"exports\", \"ember-social-share/components/fb-share-button\"], function (_exports, _fbShareButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _fbShareButton.default;\n    }\n  });\n});","define(\"ember-blog/components/gplus-share-button\", [\"exports\", \"ember-social-share/components/gplus-share-button\"], function (_exports, _gplusShareButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _gplusShareButton.default;\n    }\n  });\n});","define(\"ember-blog/components/infinity-loader\", [\"exports\", \"ember-infinity/components/infinity-loader\"], function (_exports, _infinityLoader) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _infinityLoader.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/linkedin-share-button\", [\"exports\", \"ember-social-share/components/linkedin-share-button\"], function (_exports, _linkedinShareButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _linkedinShareButton.default;\n    }\n  });\n});","define(\"ember-blog/components/loader\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  /**\n   * The loader component\n   *\n   * @module\n   * @class loader\n   * @uses ember/component\n   * @uses ember/object\n   * @namespace Component\n   */\n  var _default = Ember.Component.extend({\n    /**\n     * The log query variable\n     *\n     * @property {Object} loadingQuery\n     * @return hello\n     */\n    loadingQuery: Ember.computed(\"loadingQuery\", function () {})\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/markdown-to-html\", [\"exports\", \"ember-cli-showdown/components/markdown-to-html\"], function (_exports, _markdownToHtml) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _markdownToHtml.default;\n    }\n  });\n});","define(\"ember-blog/components/nav\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Component.extend({\n    classNames: [\"application_nav\", \"md-whiteframe-2dp\"],\n    init: function init() {\n      this._super.apply(this, arguments);\n    },\n    actions: {}\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-autocomplete-highlight\", [\"exports\", \"ember-paper/components/paper-autocomplete/highlight/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-autocomplete\", [\"exports\", \"ember-paper/components/paper-autocomplete/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-autocomplete/ebd-content\", [\"exports\", \"ember-paper/components/paper-autocomplete/ebd-content/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-autocomplete/ebd-trigger\", [\"exports\", \"ember-paper/components/paper-autocomplete/ebd-trigger/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-autocomplete/eps-trigger\", [\"exports\", \"ember-paper/components/paper-autocomplete/eps-trigger/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-autocomplete/highlight\", [\"exports\", \"ember-paper/components/paper-autocomplete/highlight/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-autocomplete/no-matches-message\", [\"exports\", \"ember-paper/components/paper-autocomplete/no-matches-message/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-autocomplete/options\", [\"exports\", \"ember-paper/components/paper-autocomplete/options/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-autocomplete/reset-button\", [\"exports\", \"ember-paper/components/paper-autocomplete/reset-button/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-backdrop\", [\"exports\", \"ember-paper/components/paper-backdrop\"], function (_exports, _paperBackdrop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperBackdrop.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-button\", [\"exports\", \"ember-paper/components/paper-button\"], function (_exports, _paperButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperButton.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-card-actions\", [\"exports\", \"ember-paper/components/paper-card-actions\"], function (_exports, _paperCardActions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardActions.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-avatar\", [\"exports\", \"ember-paper/components/paper-card-avatar\"], function (_exports, _paperCardAvatar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardAvatar.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-content\", [\"exports\", \"ember-paper/components/paper-card-content\"], function (_exports, _paperCardContent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardContent.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-header-headline\", [\"exports\", \"ember-paper/components/paper-card-header-headline\"], function (_exports, _paperCardHeaderHeadline) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardHeaderHeadline.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-header-subhead\", [\"exports\", \"ember-paper/components/paper-card-header-subhead\"], function (_exports, _paperCardHeaderSubhead) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardHeaderSubhead.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-header-text\", [\"exports\", \"ember-paper/components/paper-card-header-text\"], function (_exports, _paperCardHeaderText) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardHeaderText.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-header-title\", [\"exports\", \"ember-paper/components/paper-card-header-title\"], function (_exports, _paperCardHeaderTitle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardHeaderTitle.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-header\", [\"exports\", \"ember-paper/components/paper-card-header\"], function (_exports, _paperCardHeader) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardHeader.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-icon-actions\", [\"exports\", \"ember-paper/components/paper-card-icon-actions\"], function (_exports, _paperCardIconActions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardIconActions.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-image\", [\"exports\", \"ember-paper/components/paper-card-image\"], function (_exports, _paperCardImage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardImage.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-media\", [\"exports\", \"ember-paper/components/paper-card-media\"], function (_exports, _paperCardMedia) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardMedia.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-title-media\", [\"exports\", \"ember-paper/components/paper-card-title-media\"], function (_exports, _paperCardTitleMedia) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardTitleMedia.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-title-text\", [\"exports\", \"ember-paper/components/paper-card-title-text\"], function (_exports, _paperCardTitleText) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardTitleText.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card-title\", [\"exports\", \"ember-paper/components/paper-card-title\"], function (_exports, _paperCardTitle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCardTitle.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-card\", [\"exports\", \"ember-paper/components/paper-card\"], function (_exports, _paperCard) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCard.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-checkbox\", [\"exports\", \"ember-paper/components/paper-checkbox\"], function (_exports, _paperCheckbox) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperCheckbox.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-chips\", [\"exports\", \"ember-paper/components/paper-chips/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-contact-chips\", [\"exports\", \"ember-paper/components/paper-contact-chips/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-content\", [\"exports\", \"ember-paper/components/paper-content/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-dialog-actions\", [\"exports\", \"ember-paper/components/paper-dialog-actions\"], function (_exports, _paperDialogActions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperDialogActions.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-dialog-container\", [\"exports\", \"ember-paper/components/paper-dialog-container\"], function (_exports, _paperDialogContainer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperDialogContainer.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-dialog-content\", [\"exports\", \"ember-paper/components/paper-dialog-content\"], function (_exports, _paperDialogContent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperDialogContent.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-dialog-inner\", [\"exports\", \"ember-paper/components/paper-dialog-inner\"], function (_exports, _paperDialogInner) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperDialogInner.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-dialog\", [\"exports\", \"ember-paper/components/paper-dialog\"], function (_exports, _paperDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperDialog.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-divider\", [\"exports\", \"ember-paper/components/paper-divider/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-form\", [\"exports\", \"ember-paper/components/paper-form\"], function (_exports, _paperForm) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperForm.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-grid-list\", [\"exports\", \"ember-paper/components/paper-grid-list\"], function (_exports, _paperGridList) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperGridList.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-grid-tile-footer\", [\"exports\", \"ember-paper/components/paper-grid-tile-footer\"], function (_exports, _paperGridTileFooter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperGridTileFooter.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-grid-tile\", [\"exports\", \"ember-paper/components/paper-grid-tile\"], function (_exports, _paperGridTile) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperGridTile.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-icon\", [\"exports\", \"ember-paper/components/paper-icon\"], function (_exports, _paperIcon) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperIcon.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-ink-bar\", [\"exports\", \"ember-paper/components/paper-ink-bar\"], function (_exports, _paperInkBar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperInkBar.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-input\", [\"exports\", \"ember-paper/components/paper-input\"], function (_exports, _paperInput) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperInput.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-item\", [\"exports\", \"ember-paper/components/paper-item\"], function (_exports, _paperItem) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperItem.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-list\", [\"exports\", \"ember-paper/components/paper-list\"], function (_exports, _paperList) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperList.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-menu\", [\"exports\", \"ember-paper/components/paper-menu/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-menu/content\", [\"exports\", \"ember-paper/components/paper-menu/content/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-menu/item\", [\"exports\", \"ember-paper/components/paper-menu/item/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-menu/trigger\", [\"exports\", \"ember-paper/components/paper-menu/trigger/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-progress-circular\", [\"exports\", \"ember-paper/components/paper-progress-circular\"], function (_exports, _paperProgressCircular) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperProgressCircular.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-progress-linear\", [\"exports\", \"ember-paper/components/paper-progress-linear\"], function (_exports, _paperProgressLinear) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperProgressLinear.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-radio-group-label\", [\"exports\", \"ember-paper/components/paper-radio-group-label\"], function (_exports, _paperRadioGroupLabel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperRadioGroupLabel.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-radio-group\", [\"exports\", \"ember-paper/components/paper-radio-group\"], function (_exports, _paperRadioGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperRadioGroup.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-radio-proxiable\", [\"exports\", \"ember-paper/components/paper-radio-proxiable\"], function (_exports, _paperRadioProxiable) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperRadioProxiable.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-radio\", [\"exports\", \"ember-paper/components/paper-radio\"], function (_exports, _paperRadio) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperRadio.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-reset-button\", [\"exports\", \"ember-paper/components/paper-reset-button\"], function (_exports, _paperResetButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperResetButton.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-ripple\", [\"exports\", \"ember-paper/components/paper-ripple/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select\", [\"exports\", \"ember-paper/components/paper-select/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select/ebd-content\", [\"exports\", \"ember-paper/components/paper-select/ebd-content/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select/ebd-trigger\", [\"exports\", \"ember-paper/components/paper-select/ebd-trigger/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select/eps-trigger\", [\"exports\", \"ember-paper/components/paper-select/eps-trigger/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select/no-matches-message\", [\"exports\", \"ember-paper/components/paper-select/no-matches-message/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select/option\", [\"exports\", \"ember-paper/components/paper-select/option/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select/options\", [\"exports\", \"ember-paper/components/paper-select/options/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select/search-message\", [\"exports\", \"ember-paper/components/paper-select/search-message/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-select/search\", [\"exports\", \"ember-paper/components/paper-select/search/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-sidenav-container\", [\"exports\", \"ember-paper/components/paper-sidenav-container\"], function (_exports, _paperSidenavContainer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperSidenavContainer.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-sidenav-inner\", [\"exports\", \"ember-paper/components/paper-sidenav-inner\"], function (_exports, _paperSidenavInner) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperSidenavInner.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-sidenav-toggle\", [\"exports\", \"ember-paper/components/paper-sidenav-toggle\"], function (_exports, _paperSidenavToggle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperSidenavToggle.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-sidenav\", [\"exports\", \"ember-paper/components/paper-sidenav\"], function (_exports, _paperSidenav) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperSidenav.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-slider\", [\"exports\", \"ember-paper/components/paper-slider/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-speed-dial-actions-action\", [\"exports\", \"ember-paper/components/paper-speed-dial-actions-action\"], function (_exports, _paperSpeedDialActionsAction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperSpeedDialActionsAction.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-speed-dial-actions\", [\"exports\", \"ember-paper/components/paper-speed-dial-actions\"], function (_exports, _paperSpeedDialActions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperSpeedDialActions.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-speed-dial-trigger\", [\"exports\", \"ember-paper/components/paper-speed-dial-trigger\"], function (_exports, _paperSpeedDialTrigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperSpeedDialTrigger.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-speed-dial\", [\"exports\", \"ember-paper/components/paper-speed-dial\"], function (_exports, _paperSpeedDial) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperSpeedDial.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-subheader\", [\"exports\", \"ember-paper/components/paper-subheader\"], function (_exports, _paperSubheader) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperSubheader.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-switch\", [\"exports\", \"ember-paper/components/paper-switch\"], function (_exports, _paperSwitch) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperSwitch.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-tab\", [\"exports\", \"ember-paper/components/paper-tab\"], function (_exports, _paperTab) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperTab.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-tabs\", [\"exports\", \"ember-paper/components/paper-tabs\"], function (_exports, _paperTabs) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperTabs.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-toast-inner\", [\"exports\", \"ember-paper/components/paper-toast-inner\"], function (_exports, _paperToastInner) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperToastInner.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-toast-text\", [\"exports\", \"ember-paper/components/paper-toast-text\"], function (_exports, _paperToastText) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperToastText.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-toast\", [\"exports\", \"ember-paper/components/paper-toast\"], function (_exports, _paperToast) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperToast.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-toaster\", [\"exports\", \"ember-paper/components/paper-toaster\"], function (_exports, _paperToaster) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperToaster.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-toolbar-tools\", [\"exports\", \"ember-paper/components/paper-toolbar-tools\"], function (_exports, _paperToolbarTools) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperToolbarTools.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-toolbar\", [\"exports\", \"ember-paper/components/paper-toolbar\"], function (_exports, _paperToolbar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _paperToolbar.default;\n  _exports.default = _default;\n});","define(\"ember-blog/components/paper-tooltip-inner\", [\"exports\", \"ember-paper/components/paper-tooltip-inner\"], function (_exports, _paperTooltipInner) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperTooltipInner.default;\n    }\n  });\n});","define(\"ember-blog/components/paper-tooltip\", [\"exports\", \"ember-paper/components/paper-tooltip\"], function (_exports, _paperTooltip) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperTooltip.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select-multiple\", [\"exports\", \"ember-power-select/components/power-select-multiple\"], function (_exports, _powerSelectMultiple) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectMultiple.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select-multiple/trigger\", [\"exports\", \"ember-power-select/components/power-select-multiple/trigger\"], function (_exports, _trigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _trigger.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select\", [\"exports\", \"ember-power-select/components/power-select\"], function (_exports, _powerSelect) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelect.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select/before-options\", [\"exports\", \"ember-power-select/components/power-select/before-options\"], function (_exports, _beforeOptions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _beforeOptions.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select/no-matches-message\", [\"exports\", \"ember-power-select/components/power-select/no-matches-message\"], function (_exports, _noMatchesMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _noMatchesMessage.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select/options\", [\"exports\", \"ember-power-select/components/power-select/options\"], function (_exports, _options) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _options.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select/placeholder\", [\"exports\", \"ember-power-select/components/power-select/placeholder\"], function (_exports, _placeholder) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _placeholder.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select/power-select-group\", [\"exports\", \"ember-power-select/components/power-select/power-select-group\"], function (_exports, _powerSelectGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectGroup.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select/search-message\", [\"exports\", \"ember-power-select/components/power-select/search-message\"], function (_exports, _searchMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _searchMessage.default;\n    }\n  });\n});","define(\"ember-blog/components/power-select/trigger\", [\"exports\", \"ember-power-select/components/power-select/trigger\"], function (_exports, _trigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _trigger.default;\n    }\n  });\n});","define(\"ember-blog/components/reddit-share-button\", [\"exports\", \"ember-social-share/components/reddit-share-button\"], function (_exports, _redditShareButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _redditShareButton.default;\n    }\n  });\n});","define(\"ember-blog/components/share-panel\", [\"exports\", \"ember-social-share/components/share-panel\"], function (_exports, _sharePanel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sharePanel.default;\n    }\n  });\n});","define(\"ember-blog/components/sidebar-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Component.extend({\n    classNames: [\"application_float_card_left\", \"md-whiteframe-1dp\"],\n    numOfRows: \"\",\n    testObject: Ember.Object.create(),\n    didRender: function didRender() {\n      this.numOfRows = this.get(\"category\").get(\"length\");\n    },\n    actions: {\n      setCategory: function setCategory(cat) {\n        var chooseCategory = cat;\n        this.set(\"chooseCategory\", cat); // this.testObject = { 'omg': cat};\n        // console.log( chooseCategory );\n        // this.get('router').transitionTo(`home/${link}`);\n      }\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/sidebar-right\", [\"exports\", \"jquery\"], function (_exports, _jquery) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Component.extend({\n    mouseIsIn: false,\n    // fakeIndex: computed('hello', function () {\n    //   console.log('computed once');\n    //   return this.get('hello') ? this.get('hello') : \"empty now\";\n    // }),\n    prevSectionClick: false,\n    shutUp: false,\n    didInsertElement: function didInsertElement() {\n      this._super.apply(this, arguments);\n\n      this.firstActive(); // BIND SCROLL\n\n      var listOfTopArr = (0, _jquery.default)(\".markdown-header\");\n      var contentListArr = (0, _jquery.default)(\".directionStyle\");\n      (0, _jquery.default)(window).on(\"mousewheel\", function () {\n        var scrollPos = (0, _jquery.default)(window).scrollTop();\n\n        for (var i = 0; i < listOfTopArr.length - 1; i++) {\n          if (scrollPos < listOfTopArr.eq(0).offset().top) {\n            contentListArr.removeClass(\"active\").eq(0).addClass(\"active\");\n          } else if (scrollPos > listOfTopArr.eq(i).offset().top - 110) {\n            contentListArr.removeClass(\"active\").eq(i).addClass(\"active\");\n          } else if ((0, _jquery.default)(window).scrollTop() + (0, _jquery.default)(window).height() == (0, _jquery.default)(document).height()) {\n            contentListArr.removeClass(\"active\").eq(listOfTopArr.length - 1).addClass(\"active\");\n          }\n        }\n      });\n    },\n    mouseDown: function mouseDown() {},\n    mouseUp: function mouseUp() {},\n    willDestroyElement: function willDestroyElement() {\n      this._super.apply(this, arguments);\n\n      (0, _jquery.default)(window).unbind(\"scroll\");\n    },\n    firstActive: function firstActive() {\n      (0, _jquery.default)(\".directionStyle\").removeClass(\"active\").eq(0).addClass(\"active\");\n    },\n    // TODO: replace mouse enter with other\n    // mouseEnter(event) {\n    //   this.set(\"mouseIsIn\", true)\n    //   return false\n    // },\n    // mouseLeave(event) {\n    //   this.set(\"mouseIsIn\", false)\n    //   return false\n    // },\n    actions: {\n      changeHello: function changeHello() {\n        this.incrementProperty(\"hello\", 5);\n      },\n      scrollTopPos: function scrollTopPos(id) {\n        (0, _jquery.default)(\".directionStyle\").removeClass(\"active\");\n        var elmnt = document.getElementsByClassName(\"directionStyle\")[id];\n        elmnt.classList.add(\"active\");\n        var currentIdName = elmnt.childNodes[0].getAttribute(\"data-attr\");\n        (0, _jquery.default)([document.documentElement, document.body]).animate({\n          scrollTop: (0, _jquery.default)(\"#\".concat(currentIdName)).offset().top - 100\n        }, 200, function () {// console.log('work');\n        });\n      }\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/sidebar-wrap-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  /**\n   * The side wrap on the left\n   *\n   * @module\n   * @class sidebar-wrap-left\n   * @uses ember/component\n   * @namespace Component\n   *\n   */\n  var _default = Ember.Component.extend({\n    /**\n     * The classNames\n     *\n     * @property {Array} classNames\n     * @public\n     *\n     */\n    classNames: [\"layout-row flex-20 application-left-bar hide-sm hide-xs\"]\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/components/transition-group\", [\"exports\", \"ember-css-transitions/components/transition-group\"], function (_exports, _transitionGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _transitionGroup.default;\n    }\n  });\n});","define(\"ember-blog/components/twitter-share-button\", [\"exports\", \"ember-social-share/components/twitter-share-button\"], function (_exports, _twitterShareButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _twitterShareButton.default;\n    }\n  });\n});","define(\"ember-blog/components/vertical-collection\", [\"exports\", \"@html-next/vertical-collection/components/vertical-collection/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});","define(\"ember-blog/components/vk-share-button\", [\"exports\", \"ember-social-share/components/vk-share-button\"], function (_exports, _vkShareButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _vkShareButton.default;\n    }\n  });\n});","define(\"ember-blog/controllers/application\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Controller.extend({\n    actions: {\n      onRoute: function onRoute(routeName) {\n        this.transitionToRoute(routeName);\n      }\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/controllers/culture\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Controller.extend({});\n\n  _exports.default = _default;\n});","define(\"ember-blog/controllers/home\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Controller.extend({\n    // TODO two options for gallery list view: https://masonry.desandro.com/ or https://vestride.github.io/Shuffle/\n    // those two option is very useful\n    actions: {\n      submit: function submit(routeName) {\n        this.transitionToRoute(\"/post/\".concat(routeName));\n      }\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/controllers/home/view\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Controller.extend({});\n\n  _exports.default = _default;\n});","define(\"ember-blog/controllers/post\", [\"exports\", \"jquery\"], function (_exports, _jquery) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Controller.extend({\n    actions: {\n      scrollToDiv: function scrollToDiv() {\n        var findAllHeader = (0, _jquery.default)(\"h1, h2, h3, h4, h5, h6\");\n        var headers = (0, _jquery.default)(\".postContentStyle\").find(findAllHeader);\n        var templateArray = new Array();\n        var stack = new Array();\n\n        for (var i = 0; i < headers.length; i++) {\n          var header = headers[i];\n          var level = parseInt(header.tagName.replace(\"H\", \"\"), 10);\n\n          while (stack.length < level) {\n            stack.push(0);\n          }\n\n          while (stack.length > level) {\n            stack.pop();\n          }\n\n          stack[stack.length - 1]++;\n          var index = stack.join(\"-\");\n          var headerId = \"#\".concat(header.id);\n          var object = {\n            level: level,\n            index: index,\n            id: headerId\n          };\n          templateArray.push(object);\n        }\n\n        console.log(templateArray); // $('html, body').animate({\n        //   scrollTop: $(\"#previewing\").offset().top\n        // }, 800, function () {\n        // });\n      }\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/controllers/tech\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  /**\n   * The controller for the tech page\n   *\n   * @module\n   * @uses ember/controller\n   * @namespace Controller\n   * @class tech\n   */\n  var _default = Ember.Controller.extend({\n    pizzSizeResult: Ember.computed(\"formSize\", function () {\n      return this.get(\"formSize\");\n    }),\n    sizes: Ember.A([1, 2, 3, 4]),\n    dynamicItem: Ember.observer(\"formSize\", function () {\n      var json = [];\n      var length = this.get(\"formSize\");\n      var items = [];\n\n      for (var i = 1; i <= length; i++) {\n        items.push({\n          name: \"name-\" + i,\n          value: json,\n          address: \"\"\n        });\n      } // set the item on each observer\n\n\n      this.set(\"formLists\", items);\n    }),\n    actions: {\n      flatButton: function flatButton() {// console.log(this.get('formLists'));\n      }\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/data-adapter\", [\"exports\", \"@ember-data/debug\"], function (_exports, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _debug.default;\n    }\n  });\n});","define(\"ember-blog/extensions/showdown\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n\n  function _default() {\n    var myext1 = {\n      type: \"lang\",\n      regex: /markdown/g,\n      replace: \"showdown\"\n    };\n    var myext2 = {\n      type: \"lang\",\n      regex: /love/g,\n      replace: \"fun\"\n    };\n    var myext3 = {\n      type: \"output\",\n      regex: \"<h(.*) id=(.*)>\",\n      replace: '<h$1 class=\"markdown-header\" id=$2>'\n    };\n    var myext4 = {\n      type: \"output\",\n      filter: function filter(source, showdownConvert, Option, make) {\n        var matchResult = source.match(/<h[1-6](.*)>(.*)<\\/?h[1-6]>/gi);\n\n        if (!matchResult) {\n          return {\n            source: source,\n            catalog: \"\"\n          };\n        } // TODO fixed the replace\n\n\n        var mapArray = matchResult.map(function (idx) {\n          // const idToHref = /id=(?:'|\")(.*?)(?:'|\")/g;\n          var classToEmpty = /class=(?:'|\")(.*?)(?:'|\")/g;\n          var idToHref = /id=(?:'|\")/g;\n          var hTagFront = /<h[1-6]/gi;\n          var hTagBack = /<\\/h[1-6]/gi;\n          return idx.replace(hTagFront, \"<a\").replace(hTagBack, \"</a\").replace(idToHref, 'data-attr=\"').replace(classToEmpty, \"\");\n        });\n        return {\n          source: source,\n          catalog: mapArray\n        };\n      }\n    };\n    return [myext1, myext2, myext3, myext4];\n  } // const classMap = {\n  //   h1: 'ui large header',\n  //   h2: 'ui medium header',\n  //   h3: 'ui small header',\n  //   h4: 'ui small header',\n  //   h5: 'ui small header',\n  //   h6: 'ui small header',\n  //   ul: 'ui list',\n  //   li: 'ui item'\n  // }\n  // const bindings = Object.keys(classMap).map(key => ({\n  //     type: 'output',\n  //     regex: new RegExp(`<${key}(.*)>`, 'g'),\n  //     replace: `<${key} class=\"${classMap[key]}\" $1>`\n  //   }));\n  // converter.useExtension([...bindings]);\n\n});","define(\"ember-blog/helpers/-clear-element\", [\"exports\", \"ember-in-element-polyfill/helpers/-clear-element\"], function (_exports, _clearElement) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _clearElement.default;\n    }\n  });\n  Object.defineProperty(_exports, \"clearElement\", {\n    enumerable: true,\n    get: function get() {\n      return _clearElement.clearElement;\n    }\n  });\n});","define(\"ember-blog/helpers/-element\", [\"exports\", \"ember-element-helper/helpers/-element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _element.default;\n    }\n  });\n});","define(\"ember-blog/helpers/-paper-underscore\", [\"exports\", \"ember-paper/helpers/underscore\"], function (_exports, _underscore) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _underscore.default;\n    }\n  });\n  Object.defineProperty(_exports, \"underscore\", {\n    enumerable: true,\n    get: function get() {\n      return _underscore.underscore;\n    }\n  });\n});","define(\"ember-blog/helpers/and\", [\"exports\", \"ember-truth-helpers/helpers/and\"], function (_exports, _and) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _and.default;\n    }\n  });\n  Object.defineProperty(_exports, \"and\", {\n    enumerable: true,\n    get: function get() {\n      return _and.and;\n    }\n  });\n});","define(\"ember-blog/helpers/app-version\", [\"exports\", \"ember-blog/config/environment\", \"ember-cli-app-version/utils/regexp\"], function (_exports, _environment, _regexp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.appVersion = appVersion;\n  _exports.default = void 0;\n\n  function appVersion(_) {\n    var hash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var version = _environment.default.APP.version; // e.g. 1.0.0-alpha.1+4jds75hf\n    // Allow use of 'hideSha' and 'hideVersion' For backwards compatibility\n\n    var versionOnly = hash.versionOnly || hash.hideSha;\n    var shaOnly = hash.shaOnly || hash.hideVersion;\n    var match = null;\n\n    if (versionOnly) {\n      if (hash.showExtended) {\n        match = version.match(_regexp.versionExtendedRegExp); // 1.0.0-alpha.1\n      } // Fallback to just version\n\n\n      if (!match) {\n        match = version.match(_regexp.versionRegExp); // 1.0.0\n      }\n    }\n\n    if (shaOnly) {\n      match = version.match(_regexp.shaRegExp); // 4jds75hf\n    }\n\n    return match ? match[0] : version;\n  }\n\n  var _default = Ember.Helper.helper(appVersion);\n\n  _exports.default = _default;\n});","define(\"ember-blog/helpers/cancel-all\", [\"exports\", \"ember-concurrency/helpers/cancel-all\"], function (_exports, _cancelAll) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelAll.default;\n    }\n  });\n});","define(\"ember-blog/helpers/ember-power-select-is-group\", [\"exports\", \"ember-power-select/helpers/ember-power-select-is-group\"], function (_exports, _emberPowerSelectIsGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsGroup.default;\n    }\n  });\n  Object.defineProperty(_exports, \"emberPowerSelectIsGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsGroup.emberPowerSelectIsGroup;\n    }\n  });\n});","define(\"ember-blog/helpers/ember-power-select-is-selected\", [\"exports\", \"ember-power-select/helpers/ember-power-select-is-selected\"], function (_exports, _emberPowerSelectIsSelected) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsSelected.default;\n    }\n  });\n  Object.defineProperty(_exports, \"emberPowerSelectIsSelected\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsSelected.emberPowerSelectIsSelected;\n    }\n  });\n});","define(\"ember-blog/helpers/eq\", [\"exports\", \"ember-truth-helpers/helpers/equal\"], function (_exports, _equal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _equal.default;\n    }\n  });\n  Object.defineProperty(_exports, \"equal\", {\n    enumerable: true,\n    get: function get() {\n      return _equal.equal;\n    }\n  });\n});","define(\"ember-blog/helpers/gt\", [\"exports\", \"ember-truth-helpers/helpers/gt\"], function (_exports, _gt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _gt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"gt\", {\n    enumerable: true,\n    get: function get() {\n      return _gt.gt;\n    }\n  });\n});","define(\"ember-blog/helpers/gte\", [\"exports\", \"ember-truth-helpers/helpers/gte\"], function (_exports, _gte) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _gte.default;\n    }\n  });\n  Object.defineProperty(_exports, \"gte\", {\n    enumerable: true,\n    get: function get() {\n      return _gte.gte;\n    }\n  });\n});","define(\"ember-blog/helpers/href-to\", [\"exports\", \"ember-href-to/helpers/href-to\"], function (_exports, _hrefTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _hrefTo.default;\n    }\n  });\n  Object.defineProperty(_exports, \"hrefTo\", {\n    enumerable: true,\n    get: function get() {\n      return _hrefTo.hrefTo;\n    }\n  });\n});","define(\"ember-blog/helpers/is-array\", [\"exports\", \"ember-truth-helpers/helpers/is-array\"], function (_exports, _isArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isArray.default;\n    }\n  });\n  Object.defineProperty(_exports, \"isArray\", {\n    enumerable: true,\n    get: function get() {\n      return _isArray.isArray;\n    }\n  });\n});","define(\"ember-blog/helpers/is-empty\", [\"exports\", \"ember-truth-helpers/helpers/is-empty\"], function (_exports, _isEmpty) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isEmpty.default;\n    }\n  });\n});","define(\"ember-blog/helpers/is-equal\", [\"exports\", \"ember-truth-helpers/helpers/is-equal\"], function (_exports, _isEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isEqual.default;\n    }\n  });\n  Object.defineProperty(_exports, \"isEqual\", {\n    enumerable: true,\n    get: function get() {\n      return _isEqual.isEqual;\n    }\n  });\n});","define(\"ember-blog/helpers/lt\", [\"exports\", \"ember-truth-helpers/helpers/lt\"], function (_exports, _lt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _lt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"lt\", {\n    enumerable: true,\n    get: function get() {\n      return _lt.lt;\n    }\n  });\n});","define(\"ember-blog/helpers/lte\", [\"exports\", \"ember-truth-helpers/helpers/lte\"], function (_exports, _lte) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _lte.default;\n    }\n  });\n  Object.defineProperty(_exports, \"lte\", {\n    enumerable: true,\n    get: function get() {\n      return _lte.lte;\n    }\n  });\n});","define(\"ember-blog/helpers/not-eq\", [\"exports\", \"ember-truth-helpers/helpers/not-equal\"], function (_exports, _notEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _notEqual.default;\n    }\n  });\n  Object.defineProperty(_exports, \"notEq\", {\n    enumerable: true,\n    get: function get() {\n      return _notEqual.notEq;\n    }\n  });\n});","define(\"ember-blog/helpers/not\", [\"exports\", \"ember-truth-helpers/helpers/not\"], function (_exports, _not) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _not.default;\n    }\n  });\n  Object.defineProperty(_exports, \"not\", {\n    enumerable: true,\n    get: function get() {\n      return _not.not;\n    }\n  });\n});","define(\"ember-blog/helpers/or\", [\"exports\", \"ember-truth-helpers/helpers/or\"], function (_exports, _or) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _or.default;\n    }\n  });\n  Object.defineProperty(_exports, \"or\", {\n    enumerable: true,\n    get: function get() {\n      return _or.or;\n    }\n  });\n});","define(\"ember-blog/helpers/perform\", [\"exports\", \"ember-concurrency/helpers/perform\"], function (_exports, _perform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _perform.default;\n    }\n  });\n});","define(\"ember-blog/helpers/pluralize\", [\"exports\", \"ember-inflector/lib/helpers/pluralize\"], function (_exports, _pluralize) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _pluralize.default;\n  _exports.default = _default;\n});","define(\"ember-blog/helpers/route-action\", [\"exports\", \"ember-route-action-helper/helpers/route-action\"], function (_exports, _routeAction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _routeAction.default;\n    }\n  });\n});","define(\"ember-blog/helpers/singularize\", [\"exports\", \"ember-inflector/lib/helpers/singularize\"], function (_exports, _singularize) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _singularize.default;\n  _exports.default = _default;\n});","define(\"ember-blog/helpers/task\", [\"exports\", \"ember-concurrency/helpers/task\"], function (_exports, _task) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _task.default;\n    }\n  });\n});","define(\"ember-blog/helpers/truncate-text\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\n  function _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\n  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\n  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n  function _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\n  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n  var _default = Ember.Helper.helper(function truncateText(params, hash) {\n    var _params = _slicedToArray(params, 1),\n        value = _params[0];\n\n    var limit = hash.limit;\n    var text = \"\";\n\n    if (value != null && value.length > 0) {\n      text = value.substr(0, limit);\n\n      if (value.length > limit) {\n        text += \"...\";\n      }\n    }\n\n    return text;\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/helpers/xor\", [\"exports\", \"ember-truth-helpers/helpers/xor\"], function (_exports, _xor) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _xor.default;\n    }\n  });\n  Object.defineProperty(_exports, \"xor\", {\n    enumerable: true,\n    get: function get() {\n      return _xor.xor;\n    }\n  });\n});","define(\"ember-blog/initializers/app-version\", [\"exports\", \"ember-cli-app-version/initializer-factory\", \"ember-blog/config/environment\"], function (_exports, _initializerFactory, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var name, version;\n\n  if (_environment.default.APP) {\n    name = _environment.default.APP.name;\n    version = _environment.default.APP.version;\n  }\n\n  var _default = {\n    name: 'App Version',\n    initialize: (0, _initializerFactory.default)(name, version)\n  };\n  _exports.default = _default;\n});","define(\"ember-blog/initializers/container-debug-adapter\", [\"exports\", \"ember-resolver/resolvers/classic/container-debug-adapter\"], function (_exports, _containerDebugAdapter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = {\n    name: 'container-debug-adapter',\n    initialize: function initialize() {\n      var app = arguments[1] || arguments[0];\n      app.register('container-debug-adapter:main', _containerDebugAdapter.default);\n      app.inject('container-debug-adapter:main', 'namespace', 'application:main');\n    }\n  };\n  _exports.default = _default;\n});","define(\"ember-blog/initializers/debug\", [\"exports\", \"@html-next/vertical-collection/-debug\"], function (_exports, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = {\n    name: 'vertical-collection-debug',\n    initialize: function initialize() {}\n  };\n  _exports.default = _default;\n});","define(\"ember-blog/initializers/ember-cli-mirage\", [\"exports\", \"ember-blog/config/environment\", \"ember-blog/mirage/config\", \"ember-cli-mirage/get-rfc232-test-context\", \"ember-cli-mirage/start-mirage\"], function (_exports, _environment, _config, _getRfc232TestContext, _startMirage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.startMirage = startMirage;\n  _exports.default = void 0;\n  //\n  // This initializer does two things:\n  //\n  // 1. Pulls the mirage config objects from the application's config and\n  //    registers them in the container so `ember-cli-mirage/start-mirage` can\n  //    find them (since it doesn't have access to the app's namespace).\n  // 2. Provides legacy support for auto-starting mirage in pre-rfc268 acceptance\n  //    tests.\n  //\n  var _default = {\n    name: 'ember-cli-mirage',\n    initialize: function initialize(application) {\n      if (_config.default) {\n        application.register('mirage:base-config', _config.default, {\n          instantiate: false\n        });\n      }\n\n      if (_config.testConfig) {\n        application.register('mirage:test-config', _config.testConfig, {\n          instantiate: false\n        });\n      }\n\n      _environment.default['ember-cli-mirage'] = _environment.default['ember-cli-mirage'] || {};\n\n      if (_shouldUseMirage(_environment.default.environment, _environment.default['ember-cli-mirage'])) {\n        startMirage(_environment.default);\n      }\n    }\n  };\n  _exports.default = _default;\n\n  function startMirage() {\n    var env = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _environment.default;\n    return (0, _startMirage.default)(null, {\n      env: env,\n      baseConfig: _config.default,\n      testConfig: _config.testConfig\n    });\n  }\n\n  function _shouldUseMirage(env, addonConfig) {\n    if (typeof FastBoot !== 'undefined') {\n      return false;\n    }\n\n    if ((0, _getRfc232TestContext.default)()) {\n      return false;\n    }\n\n    var userDeclaredEnabled = typeof addonConfig.enabled !== 'undefined';\n\n    var defaultEnabled = _defaultEnabled(env, addonConfig);\n\n    return userDeclaredEnabled ? addonConfig.enabled : defaultEnabled;\n  }\n  /*\n    Returns a boolean specifying the default behavior for whether\n    to initialize Mirage.\n  */\n\n\n  function _defaultEnabled(env, addonConfig) {\n    var usingInDev = env === 'development' && !addonConfig.usingProxy;\n    var usingInTest = env === 'test';\n    return usingInDev || usingInTest;\n  }\n});","define(\"ember-blog/initializers/ember-concurrency\", [\"exports\", \"ember-concurrency/initializers/ember-concurrency\"], function (_exports, _emberConcurrency) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberConcurrency.default;\n    }\n  });\n});","define(\"ember-blog/initializers/ember-data-data-adapter\", [\"exports\", \"@ember-data/debug/setup\"], function (_exports, _setup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _setup.default;\n    }\n  });\n});","define(\"ember-blog/initializers/ember-data\", [\"exports\", \"ember-data\", \"ember-data/setup-container\"], function (_exports, _emberData, _setupContainer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  /*\n    This code initializes EmberData in an Ember application.\n  \n    It ensures that the `store` service is automatically injected\n    as the `store` property on all routes and controllers.\n  */\n  var _default = {\n    name: 'ember-data',\n    initialize: _setupContainer.default\n  };\n  _exports.default = _default;\n});","define(\"ember-blog/initializers/export-application-global\", [\"exports\", \"ember-blog/config/environment\"], function (_exports, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.initialize = initialize;\n  _exports.default = void 0;\n\n  function initialize() {\n    var application = arguments[1] || arguments[0];\n\n    if (_environment.default.exportApplicationGlobal !== false) {\n      var theGlobal;\n\n      if (typeof window !== 'undefined') {\n        theGlobal = window;\n      } else if (typeof global !== 'undefined') {\n        theGlobal = global;\n      } else if (typeof self !== 'undefined') {\n        theGlobal = self;\n      } else {\n        // no reasonable global, just bail\n        return;\n      }\n\n      var value = _environment.default.exportApplicationGlobal;\n      var globalName;\n\n      if (typeof value === 'string') {\n        globalName = value;\n      } else {\n        globalName = Ember.String.classify(_environment.default.modulePrefix);\n      }\n\n      if (!theGlobal[globalName]) {\n        theGlobal[globalName] = application;\n        application.reopen({\n          willDestroy: function willDestroy() {\n            this._super.apply(this, arguments);\n\n            delete theGlobal[globalName];\n          }\n        });\n      }\n    }\n  }\n\n  var _default = {\n    name: 'export-application-global',\n    initialize: initialize\n  };\n  _exports.default = _default;\n});","define(\"ember-blog/initializers/viewport-config\", [\"exports\", \"ember-in-viewport/initializers/viewport-config\"], function (_exports, _viewportConfig) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _viewportConfig.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _viewportConfig.initialize;\n    }\n  });\n});","define(\"ember-blog/instance-initializers/ember-cli-mirage-autostart\", [\"exports\", \"ember-cli-mirage/instance-initializers/ember-cli-mirage-autostart\"], function (_exports, _emberCliMirageAutostart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberCliMirageAutostart.default;\n    }\n  });\n});","define(\"ember-blog/instance-initializers/ember-data\", [\"exports\", \"ember-data/initialize-store-service\"], function (_exports, _initializeStoreService) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = {\n    name: 'ember-data',\n    initialize: _initializeStoreService.default\n  };\n  _exports.default = _default;\n});","define(\"ember-blog/instance-initializers/ember-href-to\", [\"exports\", \"ember-href-to/href-to\"], function (_exports, _hrefTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  function closestLink(el) {\n    if (el.closest) {\n      return el.closest('a');\n    } else {\n      el = el.parentElement;\n\n      while (el && el.tagName !== 'A') {\n        el = el.parentElement;\n      }\n\n      return el;\n    }\n  }\n\n  var _default = {\n    name: 'ember-href-to',\n    initialize: function initialize(applicationInstance) {\n      // we only want this to run in the browser, not in fastboot\n      if (typeof FastBoot === \"undefined\") {\n        var hrefToClickHandler = function _hrefToClickHandler(e) {\n          var link = e.target.tagName === 'A' ? e.target : closestLink(e.target);\n\n          if (link) {\n            var hrefTo = new _hrefTo.default(applicationInstance, e, link);\n            hrefTo.maybeHandle();\n          }\n        };\n\n        document.body.addEventListener('click', hrefToClickHandler); // Teardown on app destruction: clean up the event listener to avoid\n        // memory leaks.\n\n        applicationInstance.reopen({\n          willDestroy: function willDestroy() {\n            document.body.removeEventListener('click', hrefToClickHandler);\n            return this._super.apply(this, arguments);\n          }\n        });\n      }\n    }\n  };\n  _exports.default = _default;\n});","define(\"ember-blog/mirage/config\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n\n  function _default() {\n    // These comments are here to help you get started. Feel free to delete them.\n\n    /*\n      Config (with defaults).\n       Note: these only affect routes defined *after* them!\n    */\n    // this.urlPrefix = '';    // make this `http://localhost:8080`, for example, if your API is on a different server\n    // this.namespace = '';    // make this `/api`, for example, if your API is namespaced\n    // this.timing = 400;      // delay for each request, automatically set to 0 during testing\n\n    /*\n      Shorthand cheatsheet:\n       this.get('/posts');\n      this.post('/posts');\n      this.get('/posts/:id');\n      this.put('/posts/:id'); // or this.patch\n      this.del('/posts/:id');\n       http://www.ember-cli-mirage.com/docs/v0.4.x/shorthands/\n    */\n    //single data\n    this.get('/homes/:id', function (schema, request) {\n      return schema.homes.find(request.params.id);\n    }); //collection of data\n\n    this.get('/homes', function (schema) {\n      return schema.homes.all();\n    }); //single data\n\n    this.get('/posts/:id', function (schema, request) {\n      return schema.posts.find(request.params.id);\n    });\n    this.put('/posts/:id', function (schema, request) {\n      var result = JSON.parse(request.requestBody);\n      result.post.likes++;\n      result.post.viewCount++;\n      return result;\n    }); //collection of data\n\n    this.get('/posts', function (schema, request) {\n      // return schema.posts.all();\n      var perPage = parseInt(request.queryParams.per_page, 10);\n      var startPage = parseInt(request.queryParams.page, 10);\n      var pageCount = Math.ceil(schema.posts.all().length / perPage);\n      var offset = perPage * (startPage - 1);\n      var subset = schema.posts.all().models.slice(offset, offset + perPage);\n      return {\n        posts: subset,\n        meta: {\n          total_pages: pageCount\n        }\n      };\n    });\n    this.get('/categories', function (schema) {\n      return schema.categories.all();\n    });\n  }\n});","define(\"ember-blog/mirage/fixtures/categories\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = [{\n    \"id\": 1,\n    \"title\": \"javascript\"\n  }, {\n    \"id\": 2,\n    \"title\": \"typescript\"\n  }, {\n    \"id\": 3,\n    \"title\": \"vuejs\"\n  }, {\n    \"id\": 4,\n    \"title\": \"java\"\n  }, {\n    \"id\": 5,\n    \"title\": \"emberjs\"\n  }, {\n    \"id\": 6,\n    \"title\": \"angularjs\"\n  }, {\n    \"id\": 7,\n    \"title\": \"reactjs\"\n  }];\n  _exports.default = _default;\n});","define(\"ember-blog/mirage/fixtures/posts-1\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = [{\n    _id: 1,\n    title: \"Top 10 VS Code Extensions to Use as Junior JavaScript Developers\",\n    text: \"The article shows 10 of useful tools to become a successful developer. Most of us have been using the VS code for a long time, and still developers always complain about why there are so many features missing compared to Intelli J or Eclipse. The truth is that they may not find the right extension of their working environment. Once you spend a minute to learn about those extensions, we can sure you will keep your love in the VS code again.\\n\\n## Project Manager\\nhttps://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager\\nVery useful and common project manager tools\\n![](https://thepracticaldev.s3.amazonaws.com/i/e5g1lqzurxf9fmgl6sms.png)\\n## Gitlens\\nhttps://marketplace.visualstudio.com/items?itemName=eamodio.gitlens\\nAn alternative tool for Github desktop. It is very simple and clean use guide for all developers\\n![](https://thepracticaldev.s3.amazonaws.com/i/kdbq2doqbmdp0oqb9kj5.png)\\n## JavaScript (ES6) code snippets\\nhttps://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets\\nJavaScript favorite tools, if you are familiar with ES6 syntax, this extension can save you tons of time of typing\\n![](https://thepracticaldev.s3.amazonaws.com/i/758yfglezc5whle90wpn.png)\\n## npm Intellisense\\nhttps://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script\\nAlways forget to install npm package, but this can remind you what you miss on your excellent projects\\n![](https://thepracticaldev.s3.amazonaws.com/i/bzf8k94cmw4kwqubn3ka.png)\\n## Path Intellisense\\nhttps://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense\\nThe import npm package automatically while you are typing\\n![](https://thepracticaldev.s3.amazonaws.com/i/j5g1eo9nst0doco951lt.png)\\n## Todo Tree\\nhttps://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree\\nAs developer, Todo Tree is never getting old once you have a great project and forget to fix a problem later\\n![](https://thepracticaldev.s3.amazonaws.com/i/8c9fnoeya2xhdf97fh8u.png)\\n## ESLint\\nhttps://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint\\nLint can help you make your code much better and style your own rule.\\n![](https://thepracticaldev.s3.amazonaws.com/i/8upknfsmswe42awpet5e.png)\\n## JS Parameter Annotations\\nhttps://marketplace.visualstudio.com/items?itemName=lannonbr.vscode-js-annotations\\nHaving trouble remembering what parameters can a function take, this plugin is able to show you what you can put\\n![](https://thepracticaldev.s3.amazonaws.com/i/rigpg7nohey0qz1fxdjw.png)\\n## Log File Highlighter\\nhttps://marketplace.visualstudio.com/items?itemName=emilast.LogFileHighlighter\\nHaving a hard time of reading your log file? With that you can make your life easier\\n![](https://thepracticaldev.s3.amazonaws.com/i/58wuffqykyjgsna1xa1f.png)\\n## Prettier - Code formatter\\nhttps://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode\\nAlways worry about the mixing code withåout properly format? Make your code much prettier ever\\n![](https://thepracticaldev.s3.amazonaws.com/i/l3ttslib519de0nbjeaa.png)\",\n    img: \"https://thepracticaldev.s3.amazonaws.com/i/esex8gbu2d8uiv8s9a0r.png\",\n    url: \"www.google.com\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [\"javascript, webdev, vscode, git\"],\n    viewCount: 2,\n    likes: 0\n  }, {\n    _id: 2,\n    title: \"Top 10 IntelliJ IDEA Plugins to Use as Junior JavaScript Developers in 2019\",\n    text: \"\\nThe article will show you the 10 useful tools to become a successful developer. Most of us have been using the IntelliJ while developing, and still, developers always complain about why there are so many features missing compared to current VS code or Eclipse. Once you spend a little time to invest some useful plugins for your IDE, you can speed up your work as daily.\\n\\n## Nodejs\\nAs a JavaScript developer, we always need to reference the syntax of Nodejs. That suggests from official Nodejs web.\\n![](https://thepracticaldev.s3.amazonaws.com/i/ih46n38pcl3cdckmcsls.png)\\n\\n## Material Theme UI\\nA better look of the theme can help you identify the code quickly. \\n![](https://thepracticaldev.s3.amazonaws.com/i/ebnx8fexcxl8vmbchdco.png)\\n\\n## String Manipulation\\nThis plugin allows you to change the variable name to whatever case you look for.\\n![](https://thepracticaldev.s3.amazonaws.com/i/f3gcfyliie6wjmm9n0xs.png)\\n\\n## Camel Case\\nSwitching variable to Camel Case\\n![](https://thepracticaldev.s3.amazonaws.com/i/3xa13uoyb0gp6tb5h1c8.png)\\n\\n## Docker\\nEasy way to deploy and setup docker image on your editor\\n![](https://thepracticaldev.s3.amazonaws.com/i/zu9b1l0e4todz9mtwoy2.png)\\n\\n## AWS Tools Kit\\nBest plugin for the developer to create a serverless application and provide a lot of features\\n![](https://thepracticaldev.s3.amazonaws.com/i/uc1fi5dwocywn1mn6z3f.png)\\n\\n## JS GraphQL\\nJavascript and Typescript schema and query builder tool\\n![](https://thepracticaldev.s3.amazonaws.com/i/ercevqztrkmgkjnkwhal.png)\\n\\n## Eclipse Code Format\\nFormat the code with custom style like the eclipse editor\\n![](https://thepracticaldev.s3.amazonaws.com/i/ep8d3e5w9roi3k86i44j.png)\\n\\n## .ignore\\nEasy git ignore file generator.\\n![](https://thepracticaldev.s3.amazonaws.com/i/le37quayeqrc5k7oaeik.png)\\n\\n## Maven Helper\\nAn easy way for analyzing and avoid the dependency conflict.\\n![](https://thepracticaldev.s3.amazonaws.com/i/lzmzihp6ufsfoiyy0u8f.png)\\n\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--4VpnadUM--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/z76icovh975ulp9ik50d.png\",\n    url: \"https://res.cloudinary.com/practicaldev/image/fetch/s--4VpnadUM--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/z76icovh975ulp9ik50d.png\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [\"typescript, javascript, aws, vscode\"],\n    viewCount: 0,\n    likes: 0\n  }, {\n    _id: 3,\n    title: \"Top 10 Developer Tools You Didn't Know You Needed\",\n    text: \"Your master guide to become a professional model web developer in Mac:\\nThere are my 'Must have' programming tools. They are universally applicable: you will absolutely benefit from using them regarding of the kind of programming jobs. I hope you will find out more useful tools to add to your development environment.\\n\\n### 1. JetBrains Tools App\\n\\nManage installed JetBrains tools, download new ones and open recent projects.\\nhttps://www.jetbrains.com/toolbox/\\n![](https://thepracticaldev.s3.amazonaws.com/i/yof1geh9ys3mhnredsd9.png)\\n\\n### 2. Dash\\n\\nAwesome API documentation browser and code snippet manager.\\nhttps://kapeli.com/dash\\n![](https://thepracticaldev.s3.amazonaws.com/i/3m6i3ziw9v1y0gqxpz23.png)\\n\\n\\n### 3. DBeaver\\n\\nUniversal SQL Client such as MYSQL, Postgres, etc\\nhttps://dbeaver.io/\\n![](https://thepracticaldev.s3.amazonaws.com/i/sqd5jisgdeubltg76ayi.png)\\n\\n### 4. Studio 3T\\n\\nEasy IDE for manager and it is free for MongoDB\\nhttps://studio3t.com/\\n![](https://thepracticaldev.s3.amazonaws.com/i/3xmllzmocsj3a7no8u9j.png)\\n\\n### 5. Spark \\n\\nManager large scale and organize your email while developing\\nhttps://sparkmailapp.com/\\n![](https://thepracticaldev.s3.amazonaws.com/i/uuwf1fhn29b29qif9ghj.png)\\n\\n### 6. Tor Browser\\n\\nAnonymity Online. Protect your privacy. Defend against network surveillance and traffic analysis. \\nhttps://www.torproject.org/\\n![](https://thepracticaldev.s3.amazonaws.com/i/4vpe6es6ecrx69ueo03w.png)\\n\\n### 7. Alfred\\n\\nAward-winning app which boosts efficiency with hotkeys, keywords, text expansion and more. Search your Mac and the web, and be more productive with custom actions to control your Mac. \\nhttps://www.alfredapp.com/\\n![](https://thepracticaldev.s3.amazonaws.com/i/nuvmf55rd15a6u41qg1p.png)\\n\\n### 8. GitKraken\\n\\nThe most popular Git GUI for Windows, Mac and Linux.\\nhttps://www.gitkraken.com/\\n![](https://thepracticaldev.s3.amazonaws.com/i/hbuq1r1e6gpgywur7ibu.png)\\n\\n### 9. StarUML3 \\n\\nAll-in-one UML, SysML, BPMN Modeling Platform for Agile, EA TOGAF ADM Process Management.\\nhttp://staruml.io/\\n![](https://thepracticaldev.s3.amazonaws.com/i/w390a9nev800k6zf9uzo.png)\\n\\n### 10. Insomnia\\n\\nThe most intuitive cross-platform REST API Client.\\nhttps://insomnia.rest/\\n![](https://thepracticaldev.s3.amazonaws.com/i/w92icn3ybmsljwskh2as.png)\\n\\n\",\n    url: \"www.google.com\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--6JmWLZoE--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/2poyapfhcebqtnrmn2cd.png\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [\"javascript, typescript, java, react\"],\n    viewCount: 1,\n    likes: 0\n  }, {\n    _id: 4,\n    title: \"4-Four infor\",\n    text: \"## Second header1 \\n\" + \"## Second header2\\n\" + \"some content \\n\" + \"# first header \\n\" + \"first stuff \\n\" + \"## sub first header \\n\" + \" sub first header \\n\" + \"### third line header \\n\" + \"third line text\",\n    url: \"www.google.com\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--yuvBDNvQ--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://res.cloudinary.com/practicaldev/image/fetch/s--KDeQCWRL--/c_imagga_scale%2Cf_auto%2Cfl_progressive%2Ch_420%2Cq_auto%2Cw_1000/https://thepracticaldev.s3.amazonaws.com/i/fobvk7m7w88zk809a9b6.png\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [],\n    viewCount: 1,\n    likes: 0\n  }, {\n    _id: 5,\n    title: \"5-I'm Running to Reform the W3C's Tag\",\n    text: \"### Second header1 \\n\" + \"## Second header2\\n\" + \"some content \\n\" + \"# first header \\n\" + \"first stuff \\n\" + \"## sub first header \\n\" + \" sub first header \\n\" + \"### third line header \\n\" + \"third line text\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--o2WWhI0x--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/j1uy5mzlswvr45z7znjv.jpg\",\n    url: \"www.google.com\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [\"java\"],\n    viewCount: 2,\n    likes: 0\n  }, {\n    _id: 6,\n    title: \"6-I'm Running to Reform the W3C's Tag\",\n    text: \"## Introduction \\n\" + \"Vue (pronounced `/vjuː/`, like view) is a **progressive framework** for building user interfaces. It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications. \\n\" + \"#### Browser Compatibility \\n\" + \"Vue.js supports all browsers that are [ES5-compliant](http://kangax.github.io/compat-table/es5/) (IE8 and below are not supported). \\n\" + \"## Ecosystem \\n\" + \"| Project | Status | Description | \\n\" + \"|---------|--------|-------------| \\n\" + \"| [vue-router]          | [![vue-router-status]][vue-router-package] | Single-page application routing | \\n\" + \"| [vuex]                | [![vuex-status]][vuex-package] | Large-scale state management | \\n\" + \"| [vue-cli]             | [![vue-cli-status]][vue-cli-package] | Project scaffolding | \\n\" + \"| [vue-loader]          | [![vue-loader-status]][vue-loader-package] | Single File Component (`*.vue` file) loader for webpack | \\n\" + \"| [vue-server-renderer] | [![vue-server-renderer-status]][vue-server-renderer-package] | Server-side rendering support | \\n\" + \"| [vue-class-component] | [![vue-class-component-status]][vue-class-component-package] | TypeScript decorator for a class-based API | \\n\" + \"| [vue-rx]              | [![vue-rx-status]][vue-rx-package] | RxJS integration | \\n\" + \"| [vue-devtools]        | [![vue-devtools-status]][vue-devtools-package] | Browser DevTools extension | \\n\" + \"[vue-router]: https://github.com/vuejs/vue-router \\n\" + \"[vuex]: https://github.com/vuejs/vuex \\n\" + \"[vue-cli]: https://github.com/vuejs/vue-cli \\n\" + \"[vue-loader]: https://github.com/vuejs/vue-loader \\n\" + \"[vue-server-renderer]: https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer \\n\" + \"[vue-class-component]: https://github.com/vuejs/vue-class-component \\n\" + \"[vue-rx]: https://github.com/vuejs/vue-rx \\n\" + \"[vue-devtools]:  https://github.com/vuejs/vue-devtools \\n\" + \"[vue-router-status]: https://img.shields.io/npm/v/vue-router.svg \\n\" + \"[vuex-status]: https://img.shields.io/npm/v/vuex.svg \\n\" + \"[vue-cli-status]: https://img.shields.io/npm/v/@vue/cli.svg \\n\" + \"[vue-loader-status]: https://img.shields.io/npm/v/vue-loader.svg \\n\" + \"[vue-server-renderer-status]: https://img.shields.io/npm/v/vue-server-renderer.svg \\n\" + \"[vue-class-component-status]: https://img.shields.io/npm/v/vue-class-component.svg \\n\" + \"[vue-rx-status]: https://img.shields.io/npm/v/vue-rx.svg \\n\" + \"[vue-devtools-status]: https://img.shields.io/chrome-web-store/v/nhdogjmejiglipccpnnnanhbledajbpd.svg \\n\" + \"[vue-router-package]: https://npmjs.com/package/vue-router \\n\" + \"[vuex-package]: https://npmjs.com/package/vuex \\n\" + \"[vue-cli-package]: https://npmjs.com/package/@vue/cli \\n\" + \"[vue-loader-package]: https://npmjs.com/package/vue-loader \\n\" + \"[vue-server-renderer-package]: https://npmjs.com/package/vue-server-renderer \\n\" + \"[vue-class-component-package]: https://npmjs.com/package/vue-class-component \\n\" + \"[vue-rx-package]: https://npmjs.com/package/vue-rx \\n\" + \"[vue-devtools-package]: https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd \\n\" + \"## Documentation \\n\" + \"To check out [live examples](https://vuejs.org/v2/examples/) and docs, visit [vuejs.org](https://vuejs.org). \\n\" + \"## Questions \\n\" + \"For questions and support please use [the official forum](http://forum.vuejs.org) or [community chat](https://chat.vuejs.org/). The issue list of this repo is **exclusively** for bug reports and feature requests. \\n\" + \"## Issues \\n\" + \"Please make sure to read the [Issue Reporting Checklist](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately. \\n\" + \"## Changelog \\n\" + \"Detailed changes for each release are documented in the [release notes](https://github.com/vuejs/vue/releases). \\n\" + \"## Stay In Touch \\n\" + \"- [Twitter](https://twitter.com/vuejs) \\n\" + \"- [Blog](https://medium.com/the-vue-point) \\n\" + \"- [Job Board](https://vuejobs.com/?ref=vuejs) \\n\" + \"## Contribution \\n\" + \"Please make sure to read the [Contributing Guide](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md) before making a pull request. If you have a Vue-related project/component/tool, add it with a pull request to [this curated list](https://github.com/vuejs/awesome-vue)! \\n\" + \"Thank you to all the people who already contributed to Vue! \\n\" + \"## License \\n\" + \"[MIT](http://opensource.org/licenses/MIT) \\n\" + \"Copyright (c) 2013-present, Yuxi (Evan) You \",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--o2WWhI0x--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/j1uy5mzlswvr45z7znjv.jpg\",\n    url: \"www.google.com\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [\"emberjs\"],\n    viewCount: 2,\n    likes: 0\n  }, {\n    _id: 7,\n    title: \"7-sadalkjsdjials dasd asklj the W3C's Tag\",\n    text: \"Some TextSome TextSome The titles of Washed Out's breakthrough song and the first single from Paracosm share two most important words in Ernest Greene's musical language: feel it. It's a simple request, as wel It's a simple request, as well\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--o2WWhI0x--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/j1uy5mzlswvr45z7znjv.jpg\",\n    url: \"www.google.com\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [\"angularjs\", \"vuejs\"],\n    viewCount: 2,\n    likes: 0\n  }, {\n    _id: 8,\n    title: \"8-sadalkjsdjials dasd asklj the W3C's Tag 8-sadalkjsdjials dasd asklj the W3C's Tag 8-sadalkjsdjials dasd asklj the W3C's Tag 8-sadalkjsdjials dasd asklj the W3C's Tag\",\n    text: \"Some TextSome TextSome The titles of Washed Out's breakthrough song and the first single from Paracosm share two most important words in Ernest Greene's musical language: feel it. It's a simple request, as wel It's a simple request, as well\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--o2WWhI0x--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/j1uy5mzlswvr45z7znjv.jpg\",\n    url: \"www.google.com\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [\"reactjs\", \"javascript\"],\n    viewCount: 2,\n    likes: 0\n  }, {\n    _id: 9,\n    title: \"Top 10 VS Code Extensions to Use as Junior JavaScript Developers\",\n    text: \"<p>The article shows 10 of useful tools to become a successful developer. Most of us have been using the VS code for a long time, and still developers always complain about why there are so many features missing compared to Intelli J or Eclipse. The truth is that they may not find the right extension of their working environment. Once you spend a minute to learn about those extensions, we can sure you will keep your love in the VS code again.</p>\\n\\n<h2>\\n  <a name=\\\"project-manager\\\" href=\\\"#project-manager\\\" class=\\\"anchor\\\">\\n  </a>\\n  Project Manager\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager\\\">https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager</a><br>\\nVery useful and common project manager tools<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--7u1Y5ntD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e5g1lqzurxf9fmgl6sms.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--7u1Y5ntD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e5g1lqzurxf9fmgl6sms.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"gitlens\\\" href=\\\"#gitlens\\\" class=\\\"anchor\\\">\\n  </a>\\n  Gitlens\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens\\\">https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens</a><br>\\nAn alternative tool for Github desktop. It is very simple and clean use guide for all developers<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--LC3x23W0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kdbq2doqbmdp0oqb9kj5.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--LC3x23W0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kdbq2doqbmdp0oqb9kj5.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"javascript-es6-code-snippets\\\" href=\\\"#javascript-es6-code-snippets\\\" class=\\\"anchor\\\">\\n  </a>\\n  JavaScript (ES6) code snippets\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets\\\">https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets</a><br>\\nJavaScript favorite tools, if you are familiar with ES6 syntax, this extension can save you tons of time of typing<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--JLWztZhD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/758yfglezc5whle90wpn.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--JLWztZhD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/758yfglezc5whle90wpn.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"npm-intellisense\\\" href=\\\"#npm-intellisense\\\" class=\\\"anchor\\\">\\n  </a>\\n  npm Intellisense\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script\\\">https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script</a><br>\\nAlways forget to install npm package, but this can remind you what you miss on your excellent projects<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--sLSJnDNa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bzf8k94cmw4kwqubn3ka.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--sLSJnDNa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bzf8k94cmw4kwqubn3ka.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"path-intellisense\\\" href=\\\"#path-intellisense\\\" class=\\\"anchor\\\">\\n  </a>\\n  Path Intellisense\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense\\\">https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense</a><br>\\nThe import npm package automatically while you are typing<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--fsxPIBKP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j5g1eo9nst0doco951lt.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--fsxPIBKP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j5g1eo9nst0doco951lt.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"todo-tree\\\" href=\\\"#todo-tree\\\" class=\\\"anchor\\\">\\n  </a>\\n  Todo Tree\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree\\\">https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree</a><br>\\nAs developer, Todo Tree is never getting old once you have a great project and forget to fix a problem later<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--QUnkxLAD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8c9fnoeya2xhdf97fh8u.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--QUnkxLAD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8c9fnoeya2xhdf97fh8u.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"eslint\\\" href=\\\"#eslint\\\" class=\\\"anchor\\\">\\n  </a>\\n  ESLint\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint\\\">https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint</a><br>\\nLint can help you make your code much better and style your own rule.<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--f_Xr5iIu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8upknfsmswe42awpet5e.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--f_Xr5iIu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8upknfsmswe42awpet5e.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"js-parameter-annotations\\\" href=\\\"#js-parameter-annotations\\\" class=\\\"anchor\\\">\\n  </a>\\n  JS Parameter Annotations\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=lannonbr.vscode-js-annotations\\\">https://marketplace.visualstudio.com/items?itemName=lannonbr.vscode-js-annotations</a><br>\\nHaving trouble remembering what parameters can a function take, this plugin is able to show you what you can put<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--PI5xa-3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rigpg7nohey0qz1fxdjw.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--PI5xa-3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rigpg7nohey0qz1fxdjw.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"log-file-highlighter\\\" href=\\\"#log-file-highlighter\\\" class=\\\"anchor\\\">\\n  </a>\\n  Log File Highlighter\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=emilast.LogFileHighlighter\\\">https://marketplace.visualstudio.com/items?itemName=emilast.LogFileHighlighter</a><br>\\nHaving a hard time of reading your log file? With that you can make your life easier<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--hDF-D7Bf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/58wuffqykyjgsna1xa1f.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--hDF-D7Bf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/58wuffqykyjgsna1xa1f.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"prettier%E2%80%8A%E2%80%8Acode-formatter\\\" href=\\\"#prettier%E2%80%8A%E2%80%8Acode-formatter\\\" class=\\\"anchor\\\">\\n  </a>\\n  Prettier\\u200A-\\u200ACode formatter\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode\\\">https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode</a><br>\\nAlways worry about the mixing code with\\xE5out properly format? Make your code much prettier ever<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--wB27n2aw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/l3ttslib519de0nbjeaa.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--wB27n2aw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/l3ttslib519de0nbjeaa.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n\",\n    img: \"https://thepracticaldev.s3.amazonaws.com/i/esex8gbu2d8uiv8s9a0r.png\",\n    url: \"www.google.com\",\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    categoryList: [\"typescript\"],\n    viewCount: 2,\n    likes: 0\n  }];\n  _exports.default = _default;\n});","define(\"ember-blog/mirage/fixtures/posts\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = [{\n    title: \"Top 10 VS Code Extensions to Use as Junior JavaScript Developers\",\n    slug: \"top-10-vs-code-extensions-to-use-as-junior-javascript-developer-fm8\",\n    created_at: \"2019-06-07T14:34:58.407Z\",\n    img: \"https://thepracticaldev.s3.amazonaws.com/i/esex8gbu2d8uiv8s9a0r.png\",\n    description: \"the article shows 10 ways of becoming a successful developer\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-06-10T04:01:14.482Z\",\n    processed_html: \"<p>The article shows 10 of useful tools to become a successful developer. Most of us have been using the VS code for a long time, and still developers always complain about why there are so many features missing compared to Intelli J or Eclipse. The truth is that they may not find the right extension of their working environment. Once you spend a minute to learn about those extensions, we can sure you will keep your love in the VS code again.</p>\\n\\n<h2>\\n  <a name=\\\"project-manager\\\" href=\\\"#project-manager\\\" class=\\\"anchor\\\">\\n  </a>\\n  Project Manager\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager\\\">https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager</a><br>\\nVery useful and common project manager tools<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--7u1Y5ntD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e5g1lqzurxf9fmgl6sms.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--7u1Y5ntD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/e5g1lqzurxf9fmgl6sms.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"gitlens\\\" href=\\\"#gitlens\\\" class=\\\"anchor\\\">\\n  </a>\\n  Gitlens\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens\\\">https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens</a><br>\\nAn alternative tool for Github desktop. It is very simple and clean use guide for all developers<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--LC3x23W0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kdbq2doqbmdp0oqb9kj5.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--LC3x23W0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/kdbq2doqbmdp0oqb9kj5.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"javascript-es6-code-snippets\\\" href=\\\"#javascript-es6-code-snippets\\\" class=\\\"anchor\\\">\\n  </a>\\n  JavaScript (ES6) code snippets\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets\\\">https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets</a><br>\\nJavaScript favorite tools, if you are familiar with ES6 syntax, this extension can save you tons of time of typing<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--JLWztZhD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/758yfglezc5whle90wpn.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--JLWztZhD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/758yfglezc5whle90wpn.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"npm-intellisense\\\" href=\\\"#npm-intellisense\\\" class=\\\"anchor\\\">\\n  </a>\\n  npm Intellisense\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script\\\">https://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script</a><br>\\nAlways forget to install npm package, but this can remind you what you miss on your excellent projects<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--sLSJnDNa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bzf8k94cmw4kwqubn3ka.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--sLSJnDNa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bzf8k94cmw4kwqubn3ka.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"path-intellisense\\\" href=\\\"#path-intellisense\\\" class=\\\"anchor\\\">\\n  </a>\\n  Path Intellisense\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense\\\">https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense</a><br>\\nThe import npm package automatically while you are typing<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--fsxPIBKP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j5g1eo9nst0doco951lt.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--fsxPIBKP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j5g1eo9nst0doco951lt.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"todo-tree\\\" href=\\\"#todo-tree\\\" class=\\\"anchor\\\">\\n  </a>\\n  Todo Tree\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree\\\">https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree</a><br>\\nAs developer, Todo Tree is never getting old once you have a great project and forget to fix a problem later<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--QUnkxLAD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8c9fnoeya2xhdf97fh8u.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--QUnkxLAD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8c9fnoeya2xhdf97fh8u.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"eslint\\\" href=\\\"#eslint\\\" class=\\\"anchor\\\">\\n  </a>\\n  ESLint\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint\\\">https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint</a><br>\\nLint can help you make your code much better and style your own rule.<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--f_Xr5iIu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8upknfsmswe42awpet5e.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--f_Xr5iIu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8upknfsmswe42awpet5e.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"js-parameter-annotations\\\" href=\\\"#js-parameter-annotations\\\" class=\\\"anchor\\\">\\n  </a>\\n  JS Parameter Annotations\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=lannonbr.vscode-js-annotations\\\">https://marketplace.visualstudio.com/items?itemName=lannonbr.vscode-js-annotations</a><br>\\nHaving trouble remembering what parameters can a function take, this plugin is able to show you what you can put<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--PI5xa-3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rigpg7nohey0qz1fxdjw.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--PI5xa-3Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rigpg7nohey0qz1fxdjw.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"log-file-highlighter\\\" href=\\\"#log-file-highlighter\\\" class=\\\"anchor\\\">\\n  </a>\\n  Log File Highlighter\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=emilast.LogFileHighlighter\\\">https://marketplace.visualstudio.com/items?itemName=emilast.LogFileHighlighter</a><br>\\nHaving a hard time of reading your log file? With that you can make your life easier<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--hDF-D7Bf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/58wuffqykyjgsna1xa1f.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--hDF-D7Bf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/58wuffqykyjgsna1xa1f.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"prettier%E2%80%8A%E2%80%8Acode-formatter\\\" href=\\\"#prettier%E2%80%8A%E2%80%8Acode-formatter\\\" class=\\\"anchor\\\">\\n  </a>\\n  Prettier\\u200A-\\u200ACode formatter\\n</h2>\\n\\n<p><a href=\\\"https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode\\\">https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode</a><br>\\nAlways worry about the mixing code with\\xE5out properly format? Make your code much prettier ever<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--wB27n2aw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/l3ttslib519de0nbjeaa.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--wB27n2aw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/l3ttslib519de0nbjeaa.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n\",\n    social_image: null,\n    text: \"Title: Top 10 VS Code Extensions to Use as Junior JavaScript Developers\\n## Project Manager\\nhttps://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager\\nVery useful and common project manager tools\\n![](https://thepracticaldev.s3.amazonaws.com/i/e5g1lqzurxf9fmgl6sms.png)\\n## Gitlens\\nhttps://marketplace.visualstudio.com/items?itemName=eamodio.gitlens\\nAn alternative tool for Github desktop. It is very simple and clean use guide for all developers\\n![](https://thepracticaldev.s3.amazonaws.com/i/kdbq2doqbmdp0oqb9kj5.png)\\n## JavaScript (ES6) code snippets\\nhttps://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets\\nJavaScript favorite tools, if you are familiar with ES6 syntax, this extension can save you tons of time of typing\\n![](https://thepracticaldev.s3.amazonaws.com/i/758yfglezc5whle90wpn.png)\\n## npm Intellisense\\nhttps://marketplace.visualstudio.com/items?itemName=eg2.vscode-npm-script\\nAlways forget to install npm package, but this can remind you what you miss on your excellent projects\\n![](https://thepracticaldev.s3.amazonaws.com/i/bzf8k94cmw4kwqubn3ka.png)\\n## Path Intellisense\\nhttps://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense\\nThe import npm package automatically while you are typing\\n![](https://thepracticaldev.s3.amazonaws.com/i/j5g1eo9nst0doco951lt.png)\\n## Todo Tree\\nhttps://marketplace.visualstudio.com/items?itemName=Gruntfuggly.todo-tree\\nAs developer, Todo Tree is never getting old once you have a great project and forget to fix a problem later\\n![](https://thepracticaldev.s3.amazonaws.com/i/8c9fnoeya2xhdf97fh8u.png)\\n## ESLint\\nhttps://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint\\nLint can help you make your code much better and style your own rule.\\n![](https://thepracticaldev.s3.amazonaws.com/i/8upknfsmswe42awpet5e.png)\\n## JS Parameter Annotations\\nhttps://marketplace.visualstudio.com/items?itemName=lannonbr.vscode-js-annotations\\nHaving trouble remembering what parameters can a function take, this plugin is able to show you what you can put\\n![](https://thepracticaldev.s3.amazonaws.com/i/rigpg7nohey0qz1fxdjw.png)\\n## Log File Highlighter\\nhttps://marketplace.visualstudio.com/items?itemName=emilast.LogFileHighlighter\\nHaving a hard time of reading your log file? With that you can make your life easier\\n![](https://thepracticaldev.s3.amazonaws.com/i/58wuffqykyjgsna1xa1f.png)\\n## Prettier - Code formatter\\nhttps://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode\\nAlways worry about the mixing code withåout properly format? Make your code much prettier ever\\n![](https://thepracticaldev.s3.amazonaws.com/i/l3ttslib519de0nbjeaa.png)\",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 0,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 76,\n    edited_at: \"2019-06-15T16:29:28.840Z\",\n    crossposted_at: null,\n    language: \"en\",\n    cached_tag_list: \"javascript, webdev, vscode, git\",\n    path: \"/shijiezhou/top-10-vs-code-extensions-to-use-as-junior-javascript-developer-fm8\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-06-10T04:01:14.482Z\"\n  }, {\n    title: \"Top 10 IntelliJ IDEA Plugins to Use as Junior JavaScript Developers in 2019\",\n    slug: \"top-10-intellij-idea-plugins-to-use-as-junior-javascript-developers-in-2019-4pko\",\n    created_at: \"2019-06-15T16:25:18.899Z\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--4VpnadUM--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/z76icovh975ulp9ik50d.png\",\n    description: \"\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-06-15T16:25:18.878Z\",\n    processed_html: \"<p>The article will show you the 10 useful tools to become a successful developer. Most of us have been using the IntelliJ while developing, and still, developers always complain about why there are so many features missing compared to current VS code or Eclipse. Once you spend a little time to invest some useful plugins for your IDE, you can speed up your work as daily.</p>\\n\\n<h2>\\n  <a name=\\\"nodejs\\\" href=\\\"#nodejs\\\" class=\\\"anchor\\\">\\n  </a>\\n  Nodejs\\n</h2>\\n\\n<p>As a JavaScript developer, we always need to reference the syntax of Nodejs. That suggests from official Nodejs web.<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--iFsfRvEg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ih46n38pcl3cdckmcsls.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--iFsfRvEg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ih46n38pcl3cdckmcsls.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"material-theme-ui\\\" href=\\\"#material-theme-ui\\\" class=\\\"anchor\\\">\\n  </a>\\n  Material Theme UI\\n</h2>\\n\\n<p>A better look of the theme can help you identify the code quickly. <br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--gjN9l3Mt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ebnx8fexcxl8vmbchdco.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--gjN9l3Mt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ebnx8fexcxl8vmbchdco.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"string-manipulation\\\" href=\\\"#string-manipulation\\\" class=\\\"anchor\\\">\\n  </a>\\n  String Manipulation\\n</h2>\\n\\n<p>This plugin allows you to change the variable name to whatever case you look for.<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--6BDRohcJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/f3gcfyliie6wjmm9n0xs.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--6BDRohcJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/f3gcfyliie6wjmm9n0xs.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"camel-case\\\" href=\\\"#camel-case\\\" class=\\\"anchor\\\">\\n  </a>\\n  Camel Case\\n</h2>\\n\\n<p>Switching variable to Camel Case<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--W3TpZV1y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3xa13uoyb0gp6tb5h1c8.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--W3TpZV1y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3xa13uoyb0gp6tb5h1c8.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"docker\\\" href=\\\"#docker\\\" class=\\\"anchor\\\">\\n  </a>\\n  Docker\\n</h2>\\n\\n<p>Easy way to deploy and setup docker image on your editor<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--P7jvbIPw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/zu9b1l0e4todz9mtwoy2.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--P7jvbIPw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/zu9b1l0e4todz9mtwoy2.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"aws-tools-kit\\\" href=\\\"#aws-tools-kit\\\" class=\\\"anchor\\\">\\n  </a>\\n  AWS Tools Kit\\n</h2>\\n\\n<p>Best plugin for the developer to create a serverless application and provide a lot of features<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--D-fRIzgk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/uc1fi5dwocywn1mn6z3f.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--D-fRIzgk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/uc1fi5dwocywn1mn6z3f.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"js-graphql\\\" href=\\\"#js-graphql\\\" class=\\\"anchor\\\">\\n  </a>\\n  JS GraphQL\\n</h2>\\n\\n<p>Javascript and Typescript schema and query builder tool<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--EgHwJ_Al--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ercevqztrkmgkjnkwhal.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--EgHwJ_Al--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ercevqztrkmgkjnkwhal.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"eclipse-code-format\\\" href=\\\"#eclipse-code-format\\\" class=\\\"anchor\\\">\\n  </a>\\n  Eclipse Code Format\\n</h2>\\n\\n<p>Format the code with custom style like the eclipse editor<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--agJo6IT6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ep8d3e5w9roi3k86i44j.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--agJo6IT6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ep8d3e5w9roi3k86i44j.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"ignore\\\" href=\\\"#ignore\\\" class=\\\"anchor\\\">\\n  </a>\\n  .ignore\\n</h2>\\n\\n<p>Easy git ignore file generator.<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--eSOy1o6F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/le37quayeqrc5k7oaeik.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--eSOy1o6F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/le37quayeqrc5k7oaeik.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"maven-helper\\\" href=\\\"#maven-helper\\\" class=\\\"anchor\\\">\\n  </a>\\n  Maven Helper\\n</h2>\\n\\n<p>An easy way for analyzing and avoid the dependency conflict.<br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--7cc1ZYOD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lzmzihp6ufsfoiyy0u8f.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--7cc1ZYOD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lzmzihp6ufsfoiyy0u8f.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n\",\n    social_image: null,\n    text: \"\\nThe article will show you the 10 useful tools to become a successful developer. Most of us have been using the IntelliJ while developing, and still, developers always complain about why there are so many features missing compared to current VS code or Eclipse. Once you spend a little time to invest some useful plugins for your IDE, you can speed up your work as daily.\\n\\n## Nodejs\\nAs a JavaScript developer, we always need to reference the syntax of Nodejs. That suggests from official Nodejs web.\\n![](https://thepracticaldev.s3.amazonaws.com/i/ih46n38pcl3cdckmcsls.png)\\n\\n## Material Theme UI\\nA better look of the theme can help you identify the code quickly. \\n![](https://thepracticaldev.s3.amazonaws.com/i/ebnx8fexcxl8vmbchdco.png)\\n\\n## String Manipulation\\nThis plugin allows you to change the variable name to whatever case you look for.\\n![](https://thepracticaldev.s3.amazonaws.com/i/f3gcfyliie6wjmm9n0xs.png)\\n\\n## Camel Case\\nSwitching variable to Camel Case\\n![](https://thepracticaldev.s3.amazonaws.com/i/3xa13uoyb0gp6tb5h1c8.png)\\n\\n## Docker\\nEasy way to deploy and setup docker image on your editor\\n![](https://thepracticaldev.s3.amazonaws.com/i/zu9b1l0e4todz9mtwoy2.png)\\n\\n## AWS Tools Kit\\nBest plugin for the developer to create a serverless application and provide a lot of features\\n![](https://thepracticaldev.s3.amazonaws.com/i/uc1fi5dwocywn1mn6z3f.png)\\n\\n## JS GraphQL\\nJavascript and Typescript schema and query builder tool\\n![](https://thepracticaldev.s3.amazonaws.com/i/ercevqztrkmgkjnkwhal.png)\\n\\n## Eclipse Code Format\\nFormat the code with custom style like the eclipse editor\\n![](https://thepracticaldev.s3.amazonaws.com/i/ep8d3e5w9roi3k86i44j.png)\\n\\n## .ignore\\nEasy git ignore file generator.\\n![](https://thepracticaldev.s3.amazonaws.com/i/le37quayeqrc5k7oaeik.png)\\n\\n## Maven Helper\\nAn easy way for analyzing and avoid the dependency conflict.\\n![](https://thepracticaldev.s3.amazonaws.com/i/lzmzihp6ufsfoiyy0u8f.png)\\n\",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 0,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 11,\n    edited_at: null,\n    crossposted_at: null,\n    language: \"en\",\n    cached_tag_list: \"typescript, javascript, aws, vscode\",\n    path: \"/shijiezhou/top-10-intellij-idea-plugins-to-use-as-junior-javascript-developers-in-2019-4pko\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-06-15T16:25:18.878Z\"\n  }, {\n    title: \"Top 10 Developer Tools You Didn't Know You Needed\",\n    slug: \"top-10-developer-tools-you-didn-t-know-you-needed-ncf\",\n    created_at: \"2019-06-23T23:04:30.852Z\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--6JmWLZoE--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/2poyapfhcebqtnrmn2cd.png\",\n    description: \"\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-06-23T23:43:31.006Z\",\n    processed_html: \"<p>Your master guide to become a professional model web developer in\\xA0Mac:<br>\\nThere are my 'Must have' programming tools. They are universally applicable: you will absolutely benefit from using them regarding of the kind of programming jobs. I hope you will find out more useful tools to add to your development environment.</p>\\n\\n<h3>\\n  <a name=\\\"1-jetbrains-tools-app\\\" href=\\\"#1-jetbrains-tools-app\\\" class=\\\"anchor\\\">\\n  </a>\\n  1. JetBrains Tools App\\n</h3>\\n\\n<p>Manage installed JetBrains tools, download new ones and open recent projects.<br>\\n<a href=\\\"https://www.jetbrains.com/toolbox/\\\">https://www.jetbrains.com/toolbox/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--shSNJc8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/yof1geh9ys3mhnredsd9.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--shSNJc8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/yof1geh9ys3mhnredsd9.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"2-dash\\\" href=\\\"#2-dash\\\" class=\\\"anchor\\\">\\n  </a>\\n  2. Dash\\n</h3>\\n\\n<p>Awesome API documentation browser and code snippet manager.<br>\\n<a href=\\\"https://kapeli.com/dash\\\">https://kapeli.com/dash</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--jSXF2-nc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3m6i3ziw9v1y0gqxpz23.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--jSXF2-nc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3m6i3ziw9v1y0gqxpz23.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"3-dbeaver\\\" href=\\\"#3-dbeaver\\\" class=\\\"anchor\\\">\\n  </a>\\n  3. DBeaver\\n</h3>\\n\\n<p>Universal SQL Client such as MYSQL, Postgres, etc<br>\\n<a href=\\\"https://dbeaver.io/\\\">https://dbeaver.io/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--qj6kwm7C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/sqd5jisgdeubltg76ayi.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--qj6kwm7C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/sqd5jisgdeubltg76ayi.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"4-studio-3t\\\" href=\\\"#4-studio-3t\\\" class=\\\"anchor\\\">\\n  </a>\\n  4. Studio 3T\\n</h3>\\n\\n<p>Easy IDE for manager and it is free for MongoDB<br>\\n<a href=\\\"https://studio3t.com/\\\">https://studio3t.com/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--2cWa6cjC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3xmllzmocsj3a7no8u9j.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--2cWa6cjC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3xmllzmocsj3a7no8u9j.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"5-spark\\\" href=\\\"#5-spark\\\" class=\\\"anchor\\\">\\n  </a>\\n  5. Spark\\n</h3>\\n\\n<p>Manager large scale and organize your email while developing<br>\\n<a href=\\\"https://sparkmailapp.com/\\\">https://sparkmailapp.com/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--MepI-WI8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/uuwf1fhn29b29qif9ghj.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--MepI-WI8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/uuwf1fhn29b29qif9ghj.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"6-tor-browser\\\" href=\\\"#6-tor-browser\\\" class=\\\"anchor\\\">\\n  </a>\\n  6. Tor Browser\\n</h3>\\n\\n<p>Anonymity Online. Protect your privacy. Defend against network surveillance and traffic analysis. <br>\\n<a href=\\\"https://www.torproject.org/\\\">https://www.torproject.org/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--PZugvfQQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4vpe6es6ecrx69ueo03w.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--PZugvfQQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4vpe6es6ecrx69ueo03w.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"7-alfred\\\" href=\\\"#7-alfred\\\" class=\\\"anchor\\\">\\n  </a>\\n  7. Alfred\\n</h3>\\n\\n<p>Award-winning app which boosts efficiency with hotkeys, keywords, text expansion and more. Search your Mac and the web, and be more productive with custom actions to control your Mac. <br>\\n<a href=\\\"https://www.alfredapp.com/\\\">https://www.alfredapp.com/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--L47J0fwK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/nuvmf55rd15a6u41qg1p.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--L47J0fwK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/nuvmf55rd15a6u41qg1p.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"8-gitkraken\\\" href=\\\"#8-gitkraken\\\" class=\\\"anchor\\\">\\n  </a>\\n  8. GitKraken\\n</h3>\\n\\n<p>The most popular Git GUI for Windows, Mac and Linux.<br>\\n<a href=\\\"https://www.gitkraken.com/\\\">https://www.gitkraken.com/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--Fjlk5Qi7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hbuq1r1e6gpgywur7ibu.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--Fjlk5Qi7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/hbuq1r1e6gpgywur7ibu.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"9-staruml3\\\" href=\\\"#9-staruml3\\\" class=\\\"anchor\\\">\\n  </a>\\n  9. StarUML3\\n</h3>\\n\\n<p>All-in-one UML, SysML, BPMN Modeling Platform for Agile, EA TOGAF ADM Process Management.<br>\\n<a href=\\\"http://staruml.io/\\\">http://staruml.io/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--Be4FZtGY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w390a9nev800k6zf9uzo.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--Be4FZtGY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w390a9nev800k6zf9uzo.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"10-insomnia\\\" href=\\\"#10-insomnia\\\" class=\\\"anchor\\\">\\n  </a>\\n  10. Insomnia\\n</h3>\\n\\n<p>The most intuitive cross-platform REST API Client.<br>\\n<a href=\\\"https://insomnia.rest/\\\">https://insomnia.rest/</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--F7iJosAb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w92icn3ybmsljwskh2as.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--F7iJosAb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/w92icn3ybmsljwskh2as.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n\",\n    social_image: null,\n    text: \"Your master guide to become a professional model web developer in Mac:\\nThere are my 'Must have' programming tools. They are universally applicable: you will absolutely benefit from using them regarding of the kind of programming jobs. I hope you will find out more useful tools to add to your development environment.\\n\\n### 1. JetBrains Tools App\\n\\nManage installed JetBrains tools, download new ones and open recent projects.\\nhttps://www.jetbrains.com/toolbox/\\n![](https://thepracticaldev.s3.amazonaws.com/i/yof1geh9ys3mhnredsd9.png)\\n\\n### 2. Dash\\n\\nAwesome API documentation browser and code snippet manager.\\nhttps://kapeli.com/dash\\n![](https://thepracticaldev.s3.amazonaws.com/i/3m6i3ziw9v1y0gqxpz23.png)\\n\\n\\n### 3. DBeaver\\n\\nUniversal SQL Client such as MYSQL, Postgres, etc\\nhttps://dbeaver.io/\\n![](https://thepracticaldev.s3.amazonaws.com/i/sqd5jisgdeubltg76ayi.png)\\n\\n### 4. Studio 3T\\n\\nEasy IDE for manager and it is free for MongoDB\\nhttps://studio3t.com/\\n![](https://thepracticaldev.s3.amazonaws.com/i/3xmllzmocsj3a7no8u9j.png)\\n\\n### 5. Spark \\n\\nManager large scale and organize your email while developing\\nhttps://sparkmailapp.com/\\n![](https://thepracticaldev.s3.amazonaws.com/i/uuwf1fhn29b29qif9ghj.png)\\n\\n### 6. Tor Browser\\n\\nAnonymity Online. Protect your privacy. Defend against network surveillance and traffic analysis. \\nhttps://www.torproject.org/\\n![](https://thepracticaldev.s3.amazonaws.com/i/4vpe6es6ecrx69ueo03w.png)\\n\\n### 7. Alfred\\n\\nAward-winning app which boosts efficiency with hotkeys, keywords, text expansion and more. Search your Mac and the web, and be more productive with custom actions to control your Mac. \\nhttps://www.alfredapp.com/\\n![](https://thepracticaldev.s3.amazonaws.com/i/nuvmf55rd15a6u41qg1p.png)\\n\\n### 8. GitKraken\\n\\nThe most popular Git GUI for Windows, Mac and Linux.\\nhttps://www.gitkraken.com/\\n![](https://thepracticaldev.s3.amazonaws.com/i/hbuq1r1e6gpgywur7ibu.png)\\n\\n### 9. StarUML3 \\n\\nAll-in-one UML, SysML, BPMN Modeling Platform for Agile, EA TOGAF ADM Process Management.\\nhttp://staruml.io/\\n![](https://thepracticaldev.s3.amazonaws.com/i/w390a9nev800k6zf9uzo.png)\\n\\n### 10. Insomnia\\n\\nThe most intuitive cross-platform REST API Client.\\nhttps://insomnia.rest/\\n![](https://thepracticaldev.s3.amazonaws.com/i/w92icn3ybmsljwskh2as.png)\\n\\n\",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 29,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 438,\n    edited_at: \"2019-06-24T14:28:17.790Z\",\n    crossposted_at: null,\n    language: \"en\",\n    cached_tag_list: \"javascript, typescript, java, react\",\n    path: \"/shijiezhou/top-10-developer-tools-you-didn-t-know-you-needed-ncf\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-09-22T11:57:12.480Z\"\n  }, {\n    title: \"Top 10 Github Apps on Marketplace to Use as Junior JavaScript Developers in 2019\",\n    slug: \"top-10-github-apps-on-marketplace-to-use-as-junior-javascript-developers-in-2019-3ejh\",\n    created_at: \"2019-07-07T23:20:53.102Z\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--kLUhbRBa--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/rj2gxtgwzjqe86u42y8w.png\",\n    description: \"\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-07-08T13:26:17.799Z\",\n    processed_html: \"<p>Open source projects work diligently to fix all the vulnerabilities. Why shoundn't your project be powered with the knowledge of when and where theses apps to eradicate them? All those below can shield your project and monitor your project for publicly disclosed security vulnerabilities, and it is free as well.</p>\\n\\n<h3>\\n  <a name=\\\"1-testquality\\\" href=\\\"#1-testquality\\\" class=\\\"anchor\\\">\\n  </a>\\n  1. TestQuality\\n</h3>\\n\\n<p>TestQuality's GitHub Test Management extends Github to provide powerful and modern test plan management helping developers and testers create, run, coordinate and monitor software testing tasks. TestQuality is FREE for GitHub public repo\\u2019s and affordable for private repo's.<br>\\n<a href=\\\"https://github.com/marketplace/testquality\\\">https://github.com/marketplace/testquality</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--ki_O5JjG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3435ehlj8qwgb051via3.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--ki_O5JjG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3435ehlj8qwgb051via3.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"2-imgbot\\\" href=\\\"#2-imgbot\\\" class=\\\"anchor\\\">\\n  </a>\\n  2. ImgBot\\n</h3>\\n\\n<p>Optimizing images yourself is time consuming, let ImgBot do all the heavy lifting for you. You just sit back and review the PRs.<br>\\n<a href=\\\"https://github.com/marketplace/imgbot\\\">https://github.com/marketplace/imgbot</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--TCRTiKEO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/14jze4hkdnblbm1qwul0.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--TCRTiKEO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/14jze4hkdnblbm1qwul0.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"3-circleci\\\" href=\\\"#3-circleci\\\" class=\\\"anchor\\\">\\n  </a>\\n  3. Circle-ci\\n</h3>\\n\\n<p>Let CircleCI help your team focus on making a great product. Speed up your test and delivery cycle and improve productivity, without running your own infrastructure.<br>\\n<a href=\\\"https://github.com/marketplace/circleci\\\">https://github.com/marketplace/circleci</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--dK0vTKie--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/wg3f2gbpchy4689ea9f8.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--dK0vTKie--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/wg3f2gbpchy4689ea9f8.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"4-codetree\\\" href=\\\"#4-codetree\\\" class=\\\"anchor\\\">\\n  </a>\\n  4. CodeTree\\n</h3>\\n\\n<p>Codetree is a lightweight project management app with terrific support for multi-repo projects. There's nothing to install and it works in every browser.<br>\\n<a href=\\\"https://github.com/marketplace/codetree\\\">https://github.com/marketplace/codetree</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--JlMqMksb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ciadi03mmi00xsiw12ab.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--JlMqMksb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ciadi03mmi00xsiw12ab.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"5-gitpodio\\\" href=\\\"#5-gitpodio\\\" class=\\\"anchor\\\">\\n  </a>\\n  5. Gitpod.io\\n</h3>\\n\\n<p>Gitpod is the online IDE for GitHub. It launches a complete dev environment for any GitHub project, by simply prefixing the GitHub URL with gitpod.io.<br>\\n<a href=\\\"https://github.com/marketplace/gitpod-io\\\">https://github.com/marketplace/gitpod-io</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--dZFi_dN7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3m5ojcubr0qqi6vtve8r.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--dZFi_dN7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3m5ojcubr0qqi6vtve8r.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"6-wakatime\\\" href=\\\"#6-wakatime\\\" class=\\\"anchor\\\">\\n  </a>\\n  6. WakaTime\\n</h3>\\n\\n<p>Tracking the time that you spend on coding, and you can even setup a goal each day.<br>\\n<a href=\\\"https://github.com/marketplace/wakatime\\\">https://github.com/marketplace/wakatime</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--BNbfyml3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/p82vk1xrzh0eeyu8pnj4.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--BNbfyml3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/p82vk1xrzh0eeyu8pnj4.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"7-buddy\\\" href=\\\"#7-buddy\\\" class=\\\"anchor\\\">\\n  </a>\\n  7. Buddy\\n</h3>\\n\\n<p>Automatically build &amp; ship web projects on a single git push, on click, or recurrently. Easily define your own delivery process just like you build a house of bricks: from builds and tests, to deployments, custom scripts, and website monitoring.<br>\\n<a href=\\\"https://github.com/marketplace/buddy\\\">https://github.com/marketplace/buddy</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--htRNIv5z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2cnun0mzdsbqkpq86cf6.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--htRNIv5z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2cnun0mzdsbqkpq86cf6.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"8-depfu\\\" href=\\\"#8-depfu\\\" class=\\\"anchor\\\">\\n  </a>\\n  8. Depfu\\n</h3>\\n\\n<p>Depfu is the best way for busy teams to keep their app dependencies up-to-date. We believe doing small, easy to assess updates regularly and supported by automation is a lot easier than falling behind and having to update everything at once.<br>\\n<a href=\\\"https://github.com/marketplace/depfu\\\">https://github.com/marketplace/depfu</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--62Zx_Uu3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/fgdmth9ady7rqqyw8gv8.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--62Zx_Uu3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/fgdmth9ady7rqqyw8gv8.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"9-moesif-api-insights\\\" href=\\\"#9-moesif-api-insights\\\" class=\\\"anchor\\\">\\n  </a>\\n  9. Moesif API Insights\\n</h3>\\n\\n<p>Moesif is the most advanced AI-powered API analytics and debugging service designed specifically for production APIs including RESTful, GraphQL, Ethereum Web3, and SOAP APIs.<br>\\n<a href=\\\"https://github.com/marketplace/moesif-api-insights\\\">https://github.com/marketplace/moesif-api-insights</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--CuSpYEF9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mvscvywmlvmkzroknlt2.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--CuSpYEF9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mvscvywmlvmkzroknlt2.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"10-deepaffects\\\" href=\\\"#10-deepaffects\\\" class=\\\"anchor\\\">\\n  </a>\\n  10. DeepAffects\\n</h3>\\n\\n<p>DeepAffects is a team dynamics analytics application, for managers &amp; team leads, to get issue-level emotional insights, to increase team dynamics &amp; productivity.<br>\\n<a href=\\\"https://github.com/marketplace/deepaffects\\\">https://github.com/marketplace/deepaffects</a><br>\\n<a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--VxyqI4f9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4lt56uqzzepbom3dcngx.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--VxyqI4f9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4lt56uqzzepbom3dcngx.png\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n\",\n    social_image: null,\n    text: \"Open source projects work diligently to fix all the vulnerabilities. Why shoundn't your project be powered with the knowledge of when and where theses apps to eradicate them? All those below can shield your project and monitor your project for publicly disclosed security vulnerabilities, and it is free as well.\\n\\n\\n### 1. TestQuality\\n\\nTestQuality's GitHub Test Management extends Github to provide powerful and modern test plan management helping developers and testers create, run, coordinate and monitor software testing tasks. TestQuality is FREE for GitHub public repo\\u2019s and affordable for private repo's.\\nhttps://github.com/marketplace/testquality\\n![](https://thepracticaldev.s3.amazonaws.com/i/3435ehlj8qwgb051via3.png)\\n\\n### 2. ImgBot\\n\\nOptimizing images yourself is time consuming, let ImgBot do all the heavy lifting for you. You just sit back and review the PRs.\\nhttps://github.com/marketplace/imgbot\\n![](https://thepracticaldev.s3.amazonaws.com/i/14jze4hkdnblbm1qwul0.png)\\n\\n### 3. Circle-ci\\n\\nLet CircleCI help your team focus on making a great product. Speed up your test and delivery cycle and improve productivity, without running your own infrastructure.\\nhttps://github.com/marketplace/circleci\\n![](https://thepracticaldev.s3.amazonaws.com/i/wg3f2gbpchy4689ea9f8.png)\\n\\n### 4. CodeTree\\n\\nCodetree is a lightweight project management app with terrific support for multi-repo projects. There's nothing to install and it works in every browser.\\nhttps://github.com/marketplace/codetree\\n![](https://thepracticaldev.s3.amazonaws.com/i/ciadi03mmi00xsiw12ab.png)\\n\\n### 5. Gitpod.io\\n\\nGitpod is the online IDE for GitHub. It launches a complete dev environment for any GitHub project, by simply prefixing the GitHub URL with gitpod.io.\\nhttps://github.com/marketplace/gitpod-io\\n![](https://thepracticaldev.s3.amazonaws.com/i/3m5ojcubr0qqi6vtve8r.png)\\n\\n### 6. WakaTime\\n\\nTracking the time that you spend on coding, and you can even setup a goal each day.\\nhttps://github.com/marketplace/wakatime\\n![](https://thepracticaldev.s3.amazonaws.com/i/p82vk1xrzh0eeyu8pnj4.png)\\n\\n### 7. Buddy\\n\\nAutomatically build & ship web projects on a single git push, on click, or recurrently. Easily define your own delivery process just like you build a house of bricks: from builds and tests, to deployments, custom scripts, and website monitoring.\\nhttps://github.com/marketplace/buddy\\n![](https://thepracticaldev.s3.amazonaws.com/i/2cnun0mzdsbqkpq86cf6.png)\\n\\n### 8. Depfu\\n\\nDepfu is the best way for busy teams to keep their app dependencies up-to-date. We believe doing small, easy to assess updates regularly and supported by automation is a lot easier than falling behind and having to update everything at once.\\nhttps://github.com/marketplace/depfu\\n![](https://thepracticaldev.s3.amazonaws.com/i/fgdmth9ady7rqqyw8gv8.png)\\n\\n### 9. Moesif API Insights\\n\\nMoesif is the most advanced AI-powered API analytics and debugging service designed specifically for production APIs including RESTful, GraphQL, Ethereum Web3, and SOAP APIs.\\nhttps://github.com/marketplace/moesif-api-insights\\n![](https://thepracticaldev.s3.amazonaws.com/i/mvscvywmlvmkzroknlt2.png)\\n\\n\\n### 10. DeepAffects\\n\\nDeepAffects is a team dynamics analytics application, for managers & team leads, to get issue-level emotional insights, to increase team dynamics & productivity.\\nhttps://github.com/marketplace/deepaffects\\n![](https://thepracticaldev.s3.amazonaws.com/i/4lt56uqzzepbom3dcngx.png)\",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 0,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 98,\n    edited_at: \"2019-07-08T19:16:15.384Z\",\n    crossposted_at: null,\n    language: \"en\",\n    cached_tag_list: \"github, javascript, typescript, java\",\n    path: \"/shijiezhou/top-10-github-apps-on-marketplace-to-use-as-junior-javascript-developers-in-2019-3ejh\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-07-08T13:26:17.799Z\"\n  }, {\n    title: \"Top 10 JavaScript Patterns Every Developer Likes\",\n    slug: \"top-10-javascript-patterns-every-developers-like-168p\",\n    created_at: \"2019-07-22T10:32:21.679Z\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--niijerza--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/cw0iz324m1phttkhk32q.png\",\n    description: \"\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-07-23T04:24:57.477Z\",\n    processed_html: \"<h3>\\n  <a name=\\\"1-the-constructor-pattern\\\" href=\\\"#1-the-constructor-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  1. The constructor Pattern\\n</h3>\\n\\n<p>In classical object-oriented programming languages, a constructor is a special method used to initialize a newly created object once the memory has been allocated for it. In JavaScript almost everything is an object, we have most often interested in object constructors. Since object constructors are used to creating specific types of objects, for example, both preparing the object for use and accepting arguments a constructor can use to set the values of member properties and methods when the object is first created.</p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--9unpVI4e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/Iyv9B2vM24WiIiqhKQZcKW0224Ule2Y_9B-aiY0LB9XMcfTSafcVvwYXoLNBnPKCrkQNMkwVb9MQNAAGMb6IcfU2Pb1UQZbK0AW9tH0GFnviHppGG000\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--9unpVI4e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/Iyv9B2vM24WiIiqhKQZcKW0224Ule2Y_9B-aiY0LB9XMcfTSafcVvwYXoLNBnPKCrkQNMkwVb9MQNAAGMb6IcfU2Pb1UQZbK0AW9tH0GFnviHppGG000\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<p>As we saw know JavaScript does not support the concept of classes, so inside a constructor, the keyword this references the new object that's being created revisiting object creation, a basic constructor may look as follows:<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">Car</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">model</span><span class=\\\"p\\\">,</span> <span class=\\\"nx\\\">year</span><span class=\\\"p\\\">,</span> <span class=\\\"nx\\\">miles</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">model</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">model</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">year</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">year</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">miles</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">miles</span><span class=\\\"p\\\">;</span>\\n<span class=\\\"p\\\">}</span>\\n\\n<span class=\\\"c1\\\">// Usage:</span>\\n<span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">bmw</span> <span class=\\\"o\\\">=</span> <span class=\\\"k\\\">new</span> <span class=\\\"nx\\\">Car</span><span class=\\\"p\\\">(</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">M4</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">2019</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">1000</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">);</span>\\n</code></pre></div>\\n\\n\\n\\n<h3>\\n  <a name=\\\"2-the-module-pattern\\\" href=\\\"#2-the-module-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  2. The module Pattern\\n</h3>\\n\\n<p>Modules are an integral piece of any robust application's architecture and typically help in keeping the unit of code for a project cleanly separated and organized<br>\\nThere are several option for implementing modules. These include:</p>\\n\\n<ul>\\n<li>Object literal notation</li>\\n<li>The module Pattern</li>\\n<li>AMD modules</li>\\n<li>CommonJS module</li>\\n<li>ECMAScript Harmony modules</li>\\n</ul>\\n\\n<p>Object literals :<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">newObject</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"na\\\">variableKey</span><span class=\\\"p\\\">:</span> <span class=\\\"nx\\\">variableValue</span><span class=\\\"p\\\">,</span>\\n  <span class=\\\"na\\\">functionKey</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"c1\\\">//\\u2026</span>\\n  <span class=\\\"p\\\">}</span>\\n<span class=\\\"p\\\">};</span>\\n</code></pre></div>\\n\\n\\n\\n<p>The modules Pattern:</p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--SYyW46d7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/Iyv9B2vMyCrFASr9TSxFAoxDJIsgvb800eYONa5fKavciczgIKP-Yg669gPKG55-GMfHIQKXLoqNLpAISGgf5IMfUIdefYj0ZCTcBfg1G568S55cMM99Ai8Y944q0w22hY118w1WBHS0\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--SYyW46d7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/Iyv9B2vMyCrFASr9TSxFAoxDJIsgvb800eYONa5fKavciczgIKP-Yg669gPKG55-GMfHIQKXLoqNLpAISGgf5IMfUIdefYj0ZCTcBfg1G568S55cMM99Ai8Y944q0w22hY118w1WBHS0\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<p>Let's begin looking at an implementation of the Module pattern by created a module that is self-contained.<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">testModule</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">(</span><span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">counter</span> <span class=\\\"o\\\">=</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"k\\\">return</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"na\\\">incrementCounter</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"k\\\">return</span> <span class=\\\"o\\\">++</span><span class=\\\"nx\\\">counter</span><span class=\\\"p\\\">;</span>\\n    <span class=\\\"p\\\">},</span>\\n    <span class=\\\"na\\\">resetCounter</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"nx\\\">counter</span> <span class=\\\"o\\\">=</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">;</span>\\n    <span class=\\\"p\\\">}</span>\\n  <span class=\\\"p\\\">};</span>\\n<span class=\\\"p\\\">})();</span>\\n\\n<span class=\\\"c1\\\">// Usage:</span>\\n<span class=\\\"nx\\\">testModule</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">incrementCounter</span><span class=\\\"p\\\">();</span>\\n<span class=\\\"nx\\\">testModule</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">resetCounter</span><span class=\\\"p\\\">();</span>\\n</code></pre></div>\\n\\n\\n\\n<h3>\\n  <a name=\\\"3-the-revealing-module-pattern\\\" href=\\\"#3-the-revealing-module-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  3. The Revealing Module Pattern\\n</h3>\\n\\n<p>One thing that the revealing module can do is avoiding repeat the name of the main object when we want to call one public method from another or access public variables.<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">myRevealingModule</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">(</span><span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">privateVariable</span> <span class=\\\"o\\\">=</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">not okay</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"nx\\\">publicVariable</span> <span class=\\\"o\\\">=</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">okay</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">privateFun</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"nx\\\">privateVariable</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">}</span>\\n\\n  <span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">publicSetName</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">strName</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"nx\\\">privateVariable</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">strName</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">}</span>\\n\\n  <span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">publicGetName</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"nx\\\">privateFun</span><span class=\\\"p\\\">();</span>\\n  <span class=\\\"p\\\">}</span>\\n\\n  <span class=\\\"k\\\">return</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"na\\\">setName</span><span class=\\\"p\\\">:</span> <span class=\\\"nx\\\">publicSetName</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"na\\\">message</span><span class=\\\"p\\\">:</span> <span class=\\\"nx\\\">publicVariable</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"na\\\">getName</span><span class=\\\"p\\\">:</span> <span class=\\\"nx\\\">publicGetName</span>\\n  <span class=\\\"p\\\">};</span>\\n<span class=\\\"p\\\">})();</span>\\n\\n<span class=\\\"c1\\\">//Usage:</span>\\n\\n<span class=\\\"nx\\\">myRevealingModule</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">setName</span><span class=\\\"p\\\">(</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">Marvin King</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">);</span>\\n</code></pre></div>\\n\\n\\n\\n<h3>\\n  <a name=\\\"4-the-singleton-pattern\\\" href=\\\"#4-the-singleton-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  4. The Singleton Pattern\\n</h3>\\n\\n<p>The Singleton pattern is thus known because it restricts instantiation of a class to single object. Singletons differ from static classes as we can delay their initialization. generally because they require some information that may not be available during initialization time. For code that is unaware of a previous reference to them, they do not provide a method for easy retrieval. Let's have a look of the structure of singleton:<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">singletonPattern</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">(</span><span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">instance</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">init</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"c1\\\">// Singleton</span>\\n    <span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">privateMethod</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"nx\\\">console</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">log</span><span class=\\\"p\\\">(</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">privateMethod</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">);</span>\\n    <span class=\\\"p\\\">}</span>\\n    <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">privateVariable</span> <span class=\\\"o\\\">=</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">this is private variable</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">;</span>\\n    <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">privateRandomNumber</span> <span class=\\\"o\\\">=</span> <span class=\\\"nb\\\">Math</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">random</span><span class=\\\"p\\\">();</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"na\\\">publicMethod</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n        <span class=\\\"nx\\\">console</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">log</span><span class=\\\"p\\\">(</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">publicMethod</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">);</span>\\n      <span class=\\\"p\\\">},</span>\\n      <span class=\\\"na\\\">publicProperty</span><span class=\\\"p\\\">:</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">this is public property</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span>\\n      <span class=\\\"na\\\">getRandomNumber</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n        <span class=\\\"k\\\">return</span> <span class=\\\"nx\\\">privateRandomNumber</span><span class=\\\"p\\\">;</span>\\n      <span class=\\\"p\\\">}</span>\\n    <span class=\\\"p\\\">};</span>\\n  <span class=\\\"p\\\">}</span>\\n\\n  <span class=\\\"k\\\">return</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"c1\\\">// Get the singleton instance if one exists</span>\\n    <span class=\\\"c1\\\">// or create if it doesn't</span>\\n    <span class=\\\"na\\\">getInstance</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"k\\\">if</span> <span class=\\\"p\\\">(</span><span class=\\\"o\\\">!</span><span class=\\\"nx\\\">instance</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n        <span class=\\\"nx\\\">instance</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">init</span><span class=\\\"p\\\">();</span>\\n      <span class=\\\"p\\\">}</span>\\n      <span class=\\\"k\\\">return</span> <span class=\\\"nx\\\">instance</span><span class=\\\"p\\\">;</span>\\n    <span class=\\\"p\\\">}</span>\\n  <span class=\\\"p\\\">};</span>\\n<span class=\\\"p\\\">})();</span>\\n\\n<span class=\\\"c1\\\">// Usage:</span>\\n<span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">single</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">singletonPattern</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">getInstance</span><span class=\\\"p\\\">();</span>\\n</code></pre></div>\\n\\n\\n\\n<h3>\\n  <a name=\\\"5-the-observer-pattern\\\" href=\\\"#5-the-observer-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  5. The Observer Pattern\\n</h3>\\n\\n<p>The observer is a design pattern in which an object maintains a list of objects depending on it observers, automatically notifying them of any changes to state.</p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--q-YLCpMi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/2ovDoafDBb6mKd1CIT7mJofEBIfBBTBa2eQB1wNcvfUbOfNooo_9JAlaudBEpqikIYr9XSfOAHIN99Qa-gT1-PZoxgabmI0b6fe8pJ0BSEf6A0WjI85gnYQ6Pfk2hfq2BgD0SkYEAyQf5gWOnk52CXpX1hWi5m00\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--q-YLCpMi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/2ovDoafDBb6mKd1CIT7mJofEBIfBBTBa2eQB1wNcvfUbOfNooo_9JAlaudBEpqikIYr9XSfOAHIN99Qa-gT1-PZoxgabmI0b6fe8pJ0BSEf6A0WjI85gnYQ6Pfk2hfq2BgD0SkYEAyQf5gWOnk52CXpX1hWi5m00\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<ul>\\n<li>Subject\\n\\n<ul>\\n<li>Maintains a list of observers, facilities adding or removing observers</li>\\n</ul>\\n\\n\\n</li>\\n<li>Observer\\n\\n<ul>\\n<li>Provides an update interface for object that need to be notified of a subject\\u2019s change of state</li>\\n</ul>\\n\\n\\n</li>\\n<li>ConcreteSubject\\n\\n<ul>\\n<li>Broadcasts notifications to Observers on changes of state, stores the state of ConcreteObservers</li>\\n</ul>\\n\\n\\n</li>\\n<li>ConcreteObserver\\n\\n<ul>\\n<li>Stores a reference to the ConcreteSubject, implements an update interface for the observer to ensure state is consistent with subjects\\n</li>\\n</ul>\\n\\n\\n</li>\\n</ul>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">ObserverList</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">observerList</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">[];</span>\\n<span class=\\\"p\\\">}</span>\\n\\n<span class=\\\"nx\\\">ObserverList</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">prototype</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">Add</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">obj</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">return</span> <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">observerList</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">push</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">obj</span><span class=\\\"p\\\">);</span>\\n<span class=\\\"p\\\">};</span>\\n\\n<span class=\\\"nx\\\">ObserverList</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">prototype</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">Empty</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">observerList</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">[];</span>\\n<span class=\\\"p\\\">};</span>\\n\\n<span class=\\\"nx\\\">ObserverList</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">prototype</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">Count</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">return</span> <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">observerList</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">length</span><span class=\\\"p\\\">;</span>\\n<span class=\\\"p\\\">};</span>\\n\\n<span class=\\\"nx\\\">ObserverList</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">prototype</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">Get</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">index</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">if</span> <span class=\\\"p\\\">(</span><span class=\\\"nx\\\">index</span> <span class=\\\"o\\\">&gt;</span> <span class=\\\"o\\\">-</span><span class=\\\"mi\\\">1</span> <span class=\\\"o\\\">&amp;&amp;</span> <span class=\\\"nx\\\">index</span> <span class=\\\"o\\\">&lt;</span> <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">observerList</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">length</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">observerList</span><span class=\\\"p\\\">[</span><span class=\\\"nx\\\">index</span><span class=\\\"p\\\">];</span>\\n  <span class=\\\"p\\\">}</span>\\n<span class=\\\"p\\\">};</span>\\n\\n<span class=\\\"c1\\\">//...</span>\\n</code></pre></div>\\n\\n\\n\\n<p>When a subject needs to notify observers about something interesting happening, it broadcasts a notification to the observers ( including specific data related to the topic of the notification)</p>\\n\\n<p>When we no longer wish for a particular observer the notified of changes by the subject it is registered with, the subject can remove it from the list of observers. In the future, I will talk more about the feature of how the observer can be used in JavaScript widely.</p>\\n\\n<h3>\\n  <a name=\\\"6-the-mediator-pattern\\\" href=\\\"#6-the-mediator-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  6. The Mediator Pattern\\n</h3>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--J6ynurX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/SyxFoKbDJ2zDjLB8JKt9J2p9B-9oXeaPOXCqmYPeZ4tG14cGonVAib98piyjoCzBpIlXGYZLjVF5j1r94AvTLzSEuH8aH-aIKcoCv5Y2YasGF86Y6000\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--J6ynurX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/SyxFoKbDJ2zDjLB8JKt9J2p9B-9oXeaPOXCqmYPeZ4tG14cGonVAib98piyjoCzBpIlXGYZLjVF5j1r94AvTLzSEuH8aH-aIKcoCv5Y2YasGF86Y6000\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<p>If it appears a system has too many direct relationships between components. it may be time to have a central point of the control that components communicate through instead. The mediator pattern promotes loose coupling by ensuring that instead of components referring to each other explicitly.<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">mediator</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">(</span><span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">topics</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">{};</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">subscribe</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">topic</span><span class=\\\"p\\\">,</span> <span class=\\\"nx\\\">fn</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"k\\\">if</span> <span class=\\\"p\\\">(</span><span class=\\\"o\\\">!</span><span class=\\\"nx\\\">topics</span><span class=\\\"p\\\">[</span><span class=\\\"nx\\\">topic</span><span class=\\\"p\\\">])</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"nx\\\">topics</span><span class=\\\"p\\\">[</span><span class=\\\"nx\\\">topic</span><span class=\\\"p\\\">]</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">[];</span>\\n    <span class=\\\"p\\\">}</span>\\n    <span class=\\\"nx\\\">topics</span><span class=\\\"p\\\">[</span><span class=\\\"nx\\\">topic</span><span class=\\\"p\\\">].</span><span class=\\\"nx\\\">push</span><span class=\\\"p\\\">({</span> <span class=\\\"na\\\">context</span><span class=\\\"p\\\">:</span> <span class=\\\"k\\\">this</span><span class=\\\"p\\\">,</span> <span class=\\\"na\\\">callback</span><span class=\\\"p\\\">:</span> <span class=\\\"nx\\\">fn</span> <span class=\\\"p\\\">});</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"k\\\">this</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">};</span>\\n\\n  <span class=\\\"c1\\\">// publish/broadcast an event to the rest of the application</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">publish</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">topic</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">args</span><span class=\\\"p\\\">;</span>\\n    <span class=\\\"k\\\">if</span> <span class=\\\"p\\\">(</span><span class=\\\"o\\\">!</span><span class=\\\"nx\\\">topics</span><span class=\\\"p\\\">[</span><span class=\\\"nx\\\">topic</span><span class=\\\"p\\\">])</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"k\\\">return</span> <span class=\\\"kc\\\">false</span><span class=\\\"p\\\">;</span>\\n    <span class=\\\"p\\\">}</span>\\n    <span class=\\\"nx\\\">args</span> <span class=\\\"o\\\">=</span> <span class=\\\"nb\\\">Array</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">prototype</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">slice</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">call</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">arguments</span><span class=\\\"p\\\">,</span> <span class=\\\"mi\\\">1</span><span class=\\\"p\\\">);</span>\\n    <span class=\\\"k\\\">for</span> <span class=\\\"p\\\">(</span><span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">i</span> <span class=\\\"o\\\">=</span> <span class=\\\"mi\\\">0</span><span class=\\\"p\\\">,</span> <span class=\\\"nx\\\">l</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">topics</span><span class=\\\"p\\\">[</span><span class=\\\"nx\\\">topic</span><span class=\\\"p\\\">].</span><span class=\\\"nx\\\">length</span><span class=\\\"p\\\">;</span> <span class=\\\"nx\\\">i</span> <span class=\\\"o\\\">&lt;</span> <span class=\\\"nx\\\">l</span><span class=\\\"p\\\">;</span> <span class=\\\"nx\\\">i</span><span class=\\\"o\\\">++</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">subscription</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">topics</span><span class=\\\"p\\\">[</span><span class=\\\"nx\\\">topic</span><span class=\\\"p\\\">][</span><span class=\\\"nx\\\">i</span><span class=\\\"p\\\">];</span>\\n      <span class=\\\"nx\\\">subscription</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">callback</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">apply</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">subscription</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">content</span><span class=\\\"p\\\">,</span> <span class=\\\"nx\\\">args</span><span class=\\\"p\\\">);</span>\\n    <span class=\\\"p\\\">}</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"k\\\">this</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">};</span>\\n  <span class=\\\"k\\\">return</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"na\\\">publish</span><span class=\\\"p\\\">:</span> <span class=\\\"nx\\\">publish</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"na\\\">subscribe</span><span class=\\\"p\\\">:</span> <span class=\\\"nx\\\">subscribe</span><span class=\\\"p\\\">,</span>\\n    <span class=\\\"na\\\">installTo</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">obj</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n      <span class=\\\"nx\\\">obj</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">subscribe</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">subscribe</span><span class=\\\"p\\\">;</span>\\n      <span class=\\\"nx\\\">obj</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">publish</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">publish</span><span class=\\\"p\\\">;</span>\\n    <span class=\\\"p\\\">}</span>\\n  <span class=\\\"p\\\">};</span>\\n<span class=\\\"p\\\">})();</span>\\n</code></pre></div>\\n\\n\\n\\n<h3>\\n  <a name=\\\"7-the-prototype-pattern\\\" href=\\\"#7-the-prototype-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  7. The Prototype Pattern\\n</h3>\\n\\n<p>One of the benefits of using the Prototype pattern is that we've working with the prototype strengths JavaScript has to offer natively rather than attempting to imitate features of other languages. let's look at the pattern example.<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">myCar</span> <span class=\\\"o\\\">=</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"na\\\">name</span><span class=\\\"p\\\">:</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">bmw</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span>\\n  <span class=\\\"na\\\">drive</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"nx\\\">console</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">log</span><span class=\\\"p\\\">(</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">I am driving!</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">);</span>\\n  <span class=\\\"p\\\">},</span>\\n  <span class=\\\"na\\\">panic</span><span class=\\\"p\\\">:</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"nx\\\">console</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">log</span><span class=\\\"p\\\">(</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">wait, how do you stop this thing?</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">);</span>\\n  <span class=\\\"p\\\">}</span>\\n<span class=\\\"p\\\">};</span>\\n\\n<span class=\\\"c1\\\">//Usages:</span>\\n\\n<span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">yourCar</span> <span class=\\\"o\\\">=</span> <span class=\\\"nb\\\">Object</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">create</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">myCar</span><span class=\\\"p\\\">);</span>\\n\\n<span class=\\\"nx\\\">console</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">log</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">yourCar</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">name</span><span class=\\\"p\\\">);</span> <span class=\\\"c1\\\">//'bmw'</span>\\n</code></pre></div>\\n\\n\\n\\n<h3>\\n  <a name=\\\"8-the-factory-pattern\\\" href=\\\"#8-the-factory-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  8. The Factory Pattern\\n</h3>\\n\\n<p>Factory can provide a generic interface for creating objects, where we can specify the type of factory object we wish to create. see the diagram below.</p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--IITO-T1k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/SovAJIp9Bx9AIqm6KfM-gIKP-IaQcbpEKF7yWjIYn9BC_3oW69TpVbvoKMf9gZCEJJ1TkdPeAk4w0uhoKqgJItJje0nq8n4wOGgu0000\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--IITO-T1k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/SovAJIp9Bx9AIqm6KfM-gIKP-IaQcbpEKF7yWjIYn9BC_3oW69TpVbvoKMf9gZCEJJ1TkdPeAk4w0uhoKqgJItJje0nq8n4wOGgu0000\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">Car</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">options</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">doors</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">options</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">doors</span> <span class=\\\"o\\\">||</span> <span class=\\\"mi\\\">4</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">state</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">options</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">state</span> <span class=\\\"o\\\">||</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">brand new</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">color</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">options</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">color</span> <span class=\\\"o\\\">||</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">silver</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">;</span>\\n<span class=\\\"p\\\">}</span>\\n</code></pre></div>\\n\\n\\n\\n<h3>\\n  <a name=\\\"9-the-mixin-pattern\\\" href=\\\"#9-the-mixin-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  9. The Mixin Pattern\\n</h3>\\n\\n<p>Mixins are classes that offer functionality that can be easily inherited by a sub-class or group of sub-classes for the purpose of the function reuse.<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">Person</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">firstName</span><span class=\\\"p\\\">,</span> <span class=\\\"nx\\\">lastName</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">firstName</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">firstName</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">lastName</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">lastName</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">gender</span> <span class=\\\"o\\\">=</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">male</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">;</span>\\n<span class=\\\"p\\\">};</span>\\n\\n<span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">clark</span> <span class=\\\"o\\\">=</span> <span class=\\\"k\\\">new</span> <span class=\\\"nx\\\">Person</span><span class=\\\"p\\\">(</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">Clark</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">kent</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">);</span>\\n\\n<span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">Superhero</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">firstName</span><span class=\\\"p\\\">,</span> <span class=\\\"nx\\\">lastName</span><span class=\\\"p\\\">,</span> <span class=\\\"nx\\\">powers</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"nx\\\">Person</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">call</span><span class=\\\"p\\\">(</span><span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">firstName</span><span class=\\\"p\\\">,</span> <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">lastName</span><span class=\\\"p\\\">);</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">powers</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">powers</span><span class=\\\"p\\\">;</span>\\n<span class=\\\"p\\\">};</span>\\n\\n<span class=\\\"nx\\\">SuperHero</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">prototype</span> <span class=\\\"o\\\">=</span> <span class=\\\"nb\\\">Object</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">create</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">Person</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">prototype</span><span class=\\\"p\\\">);</span>\\n<span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">superman</span> <span class=\\\"o\\\">=</span> <span class=\\\"k\\\">new</span> <span class=\\\"nx\\\">Superhero</span><span class=\\\"p\\\">(</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">Clark</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">Kent</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span> <span class=\\\"p\\\">[</span><span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">flight</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">,</span> <span class=\\\"dl\\\">'</span><span class=\\\"s1\\\">heat-vision</span><span class=\\\"dl\\\">'</span><span class=\\\"p\\\">]);</span>\\n\\n<span class=\\\"nx\\\">console</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">log</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">superman</span><span class=\\\"p\\\">);</span> <span class=\\\"c1\\\">//output personal attributes as well as power</span>\\n</code></pre></div>\\n\\n\\n\\n<p>In this case, superhero is capable of overriding any inherited values with values specific to its object.</p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--LhsG08S4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/yqijzq_AIaqkiKehpKikoSpFCzJGjERomn0smYxiwEGCak3opQp8p3EqKa0n1LtG2A7K226AQeIk7TmIg4eC4Q0QY0mN0000\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--LhsG08S4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plantuml.com/plantuml/svg/0/yqijzq_AIaqkiKehpKikoSpFCzJGjERomn0smYxiwEGCak3opQp8p3EqKa0n1LtG2A7K226AQeIk7TmIg4eC4Q0QY0mN0000\\\" alt=\\\"\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h3>\\n  <a name=\\\"10-the-decorator-pattern\\\" href=\\\"#10-the-decorator-pattern\\\" class=\\\"anchor\\\">\\n  </a>\\n  10. The Decorator Pattern\\n</h3>\\n\\n<p>The Decorators are a structural design pattern that aim to promote code reuse. Similar to Mixins, they can be considered another viable alternative to object subclassing. Classically, Decorators offered that ability to add behavior to existing classes in a system dynamically. The idea was the decoration itself wasn't essential to the base functionality of the class. Let's checkout how decorator work in JavaScript<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight javascript\\\"><code><span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">MacBook</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">cost</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"mi\\\">997</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">};</span>\\n  <span class=\\\"k\\\">this</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">screenSize</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"mf\\\">11.6</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">};</span>\\n<span class=\\\"p\\\">}</span>\\n\\n<span class=\\\"c1\\\">// Decorator 1</span>\\n\\n<span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">Memory</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">v</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">cost</span><span class=\\\"p\\\">();</span>\\n  <span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">cost</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"nx\\\">v</span> <span class=\\\"o\\\">+</span> <span class=\\\"mi\\\">75</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">};</span>\\n<span class=\\\"p\\\">}</span>\\n\\n<span class=\\\"c1\\\">// Decorator 2</span>\\n\\n<span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">Engraving</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">v</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">cost</span><span class=\\\"p\\\">();</span>\\n  <span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">cost</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"nx\\\">v</span> <span class=\\\"o\\\">+</span> <span class=\\\"mi\\\">200</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">};</span>\\n<span class=\\\"p\\\">}</span>\\n\\n<span class=\\\"c1\\\">// Decorator 3</span>\\n\\n<span class=\\\"kd\\\">function</span> <span class=\\\"nx\\\">Insurance</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">)</span> <span class=\\\"p\\\">{</span>\\n  <span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">v</span> <span class=\\\"o\\\">=</span> <span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">cost</span><span class=\\\"p\\\">();</span>\\n  <span class=\\\"nx\\\">macbook</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">cost</span> <span class=\\\"o\\\">=</span> <span class=\\\"kd\\\">function</span><span class=\\\"p\\\">()</span> <span class=\\\"p\\\">{</span>\\n    <span class=\\\"k\\\">return</span> <span class=\\\"nx\\\">v</span> <span class=\\\"o\\\">+</span> <span class=\\\"mi\\\">250</span><span class=\\\"p\\\">;</span>\\n  <span class=\\\"p\\\">};</span>\\n<span class=\\\"p\\\">}</span>\\n\\n<span class=\\\"kd\\\">var</span> <span class=\\\"nx\\\">mb</span> <span class=\\\"o\\\">=</span> <span class=\\\"k\\\">new</span> <span class=\\\"nx\\\">MacBook</span><span class=\\\"p\\\">();</span>\\n\\n<span class=\\\"nx\\\">Memory</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">mb</span><span class=\\\"p\\\">);</span>\\n<span class=\\\"nx\\\">Engraving</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">mb</span><span class=\\\"p\\\">);</span>\\n<span class=\\\"nx\\\">Insurance</span><span class=\\\"p\\\">(</span><span class=\\\"nx\\\">mb</span><span class=\\\"p\\\">);</span>\\n\\n<span class=\\\"nx\\\">mb</span><span class=\\\"p\\\">.</span><span class=\\\"nx\\\">cost</span><span class=\\\"p\\\">();</span> <span class=\\\"c1\\\">// 1522</span>\\n</code></pre></div>\\n\\n\\n\\n<p>All the patterns may not use to one project, and some projects may benefit from the decoupling benefits offered by the Observer pattern. That said, once we have a firm grasp-of design patterns and the specific problems they are best suited to. Thus, it becomes much easier to integrate into our application architecture.</p>\\n\\n\",\n    social_image: \"\",\n    text: \"### 1. The constructor Pattern\\n\\nIn classical object-oriented programming languages, a constructor is a special method used to initialize a newly created object once the memory has been allocated for it. In JavaScript almost everything is an object, we have most often interested in object constructors. Since object constructors are used to creating specific types of objects, for example, both preparing the object for use and accepting arguments a constructor can use to set the values of member properties and methods when the object is first created.\\n\\n![](https://www.plantuml.com/plantuml/svg/0/Iyv9B2vM24WiIiqhKQZcKW0224Ule2Y_9B-aiY0LB9XMcfTSafcVvwYXoLNBnPKCrkQNMkwVb9MQNAAGMb6IcfU2Pb1UQZbK0AW9tH0GFnviHppGG000)\\n\\n<!-- ```plantuml\\nclass Parent {\\n    Parent.prototype\\n    functionA()\\n}\\n\\nclass NewObject extends Parent {\\n    new Parent()\\n    functionA()\\n    _proto_\\n}\\n``` -->\\n\\nAs we saw know JavaScript does not support the concept of classes, so inside a constructor, the keyword this references the new object that's being created revisiting object creation, a basic constructor may look as follows:\\n\\n```javascript\\nfunction Car(model, year, miles) {\\n  this.model = model;\\n  this.year = year;\\n  this.miles = miles;\\n}\\n\\n// Usage:\\nvar bmw = new Car('M4', '2019', '1000');\\n```\\n\\n### 2. The module Pattern\\n\\nModules are an integral piece of any robust application's architecture and typically help in keeping the unit of code for a project cleanly separated and organized\\nThere are several option for implementing modules. These include:\\n\\n- Object literal notation\\n- The module Pattern\\n- AMD modules\\n- CommonJS module\\n- ECMAScript Harmony modules\\n\\nObject literals :\\n\\n```javascript\\nvar newObject = {\\n  variableKey: variableValue,\\n  functionKey: function() {\\n    //\\u2026\\n  }\\n};\\n```\\n\\nThe modules Pattern:\\n\\n![](https://www.plantuml.com/plantuml/svg/0/Iyv9B2vMyCrFASr9TSxFAoxDJIsgvb800eYONa5fKavciczgIKP-Yg669gPKG55-GMfHIQKXLoqNLpAISGgf5IMfUIdefYj0ZCTcBfg1G568S55cMM99Ai8Y944q0w22hY118w1WBHS0)\\n\\n<!-- ```plantuml\\nclass ModuleConsumer{\\n    Module.publicMethod1()\\n    Module.publicProperty1\\n}\\n\\nclass Module extends ModuleConsumer {\\n    publicMethod1()\\n    publicProperty1()\\n\\n    privateProperty1\\n    privateMethod1()\\n    privateMEthod2()\\n}\\n``` -->\\n\\nLet's begin looking at an implementation of the Module pattern by created a module that is self-contained.\\n\\n```javascript\\nvar testModule = (function() {\\n  var counter = 0;\\n  return {\\n    incrementCounter: function() {\\n      return ++counter;\\n    },\\n    resetCounter: function() {\\n      counter = 0;\\n    }\\n  };\\n})();\\n\\n// Usage:\\ntestModule.incrementCounter();\\ntestModule.resetCounter();\\n```\\n\\n### 3. The Revealing Module Pattern\\n\\nOne thing that the revealing module can do is avoiding repeat the name of the main object when we want to call one public method from another or access public variables.\\n\\n```javascript\\nvar myRevealingModule = (function() {\\n  var privateVariable = 'not okay',\\n    publicVariable = 'okay';\\n  function privateFun() {\\n    return privateVariable;\\n  }\\n\\n  function publicSetName(strName) {\\n    privateVariable = strName;\\n  }\\n\\n  function publicGetName() {\\n    privateFun();\\n  }\\n\\n  return {\\n    setName: publicSetName,\\n    message: publicVariable,\\n    getName: publicGetName\\n  };\\n})();\\n\\n//Usage:\\n\\nmyRevealingModule.setName('Marvin King');\\n```\\n\\n### 4. The Singleton Pattern\\n\\nThe Singleton pattern is thus known because it restricts instantiation of a class to single object. Singletons differ from static classes as we can delay their initialization. generally because they require some information that may not be available during initialization time. For code that is unaware of a previous reference to them, they do not provide a method for easy retrieval. Let's have a look of the structure of singleton:\\n\\n```javascript\\nvar singletonPattern = (function() {\\n  var instance;\\n  function init() {\\n    // Singleton\\n    function privateMethod() {\\n      console.log('privateMethod');\\n    }\\n    var privateVariable = 'this is private variable';\\n    var privateRandomNumber = Math.random();\\n    return {\\n      publicMethod: function() {\\n        console.log('publicMethod');\\n      },\\n      publicProperty: 'this is public property',\\n      getRandomNumber: function() {\\n        return privateRandomNumber;\\n      }\\n    };\\n  }\\n\\n  return {\\n    // Get the singleton instance if one exists\\n    // or create if it doesn't\\n    getInstance: function() {\\n      if (!instance) {\\n        instance = init();\\n      }\\n      return instance;\\n    }\\n  };\\n})();\\n\\n// Usage:\\nvar single = singletonPattern.getInstance();\\n```\\n\\n### 5. The Observer Pattern\\n\\nThe observer is a design pattern in which an object maintains a list of objects depending on it observers, automatically notifying them of any changes to state.\\n\\n![](https://www.plantuml.com/plantuml/svg/0/2ovDoafDBb6mKd1CIT7mJofEBIfBBTBa2eQB1wNcvfUbOfNooo_9JAlaudBEpqikIYr9XSfOAHIN99Qa-gT1-PZoxgabmI0b6fe8pJ0BSEf6A0WjI85gnYQ6Pfk2hfq2BgD0SkYEAyQf5gWOnk52CXpX1hWi5m00)\\n\\n<!-- ```plantuml\\nSubject : Add(Observer)\\nSubject : Remove(Observer)\\nSubject : Notify\\n\\nConcreteSubject: stateOfSubject\\nConcreteSubject: GetState()\\n\\nConcreteObserver: stateOfSubject\\nConcreteObserver: Update()\\n\\nObserver: Update()\\n\\nConcreteSubject -> Subject\\nSubject -> Observer: Observer\\nConcreteObserver -> ConcreteSubject:subject\\nConcreteObserver -> Observer\\n``` -->\\n\\n- Subject\\n  - Maintains a list of observers, facilities adding or removing observers\\n- Observer\\n  - Provides an update interface for object that need to be notified of a subject\\u2019s change of state\\n- ConcreteSubject\\n  - Broadcasts notifications to Observers on changes of state, stores the state of ConcreteObservers\\n- ConcreteObserver\\n  - Stores a reference to the ConcreteSubject, implements an update interface for the observer to ensure state is consistent with subjects\\n\\n```javascript\\nfunction ObserverList() {\\n  this.observerList = [];\\n}\\n\\nObserverList.prototype.Add = function(obj) {\\n  return this.observerList.push(obj);\\n};\\n\\nObserverList.prototype.Empty = function() {\\n  this.observerList = [];\\n};\\n\\nObserverList.prototype.Count = function() {\\n  return this.observerList.length;\\n};\\n\\nObserverList.prototype.Get = function(index) {\\n  if (index > -1 && index < this.observerList.length) {\\n    return this.observerList[index];\\n  }\\n};\\n\\n//...\\n```\\n\\nWhen a subject needs to notify observers about something interesting happening, it broadcasts a notification to the observers ( including specific data related to the topic of the notification)\\n\\nWhen we no longer wish for a particular observer the notified of changes by the subject it is registered with, the subject can remove it from the list of observers. In the future, I will talk more about the feature of how the observer can be used in JavaScript widely.\\n\\n### 6. The Mediator Pattern\\n\\n![](https://www.plantuml.com/plantuml/svg/0/SyxFoKbDJ2zDjLB8JKt9J2p9B-9oXeaPOXCqmYPeZ4tG14cGonVAib98piyjoCzBpIlXGYZLjVF5j1r94AvTLzSEuH8aH-aIKcoCv5Y2YasGF86Y6000)\\n\\nIf it appears a system has too many direct relationships between components. it may be time to have a central point of the control that components communicate through instead. The mediator pattern promotes loose coupling by ensuring that instead of components referring to each other explicitly.\\n\\n```javascript\\nvar mediator = (function() {\\n  var topics = {};\\n  var subscribe = function(topic, fn) {\\n    if (!topics[topic]) {\\n      topics[topic] = [];\\n    }\\n    topics[topic].push({ context: this, callback: fn });\\n    return this;\\n  };\\n\\n  // publish/broadcast an event to the rest of the application\\n  var publish = function(topic) {\\n    var args;\\n    if (!topics[topic]) {\\n      return false;\\n    }\\n    args = Array.prototype.slice.call(arguments, 1);\\n    for (var i = 0, l = topics[topic].length; i < l; i++) {\\n      var subscription = topics[topic][i];\\n      subscription.callback.apply(subscription.content, args);\\n    }\\n    return this;\\n  };\\n  return {\\n    publish: publish,\\n    subscribe: subscribe,\\n    installTo: function(obj) {\\n      obj.subscribe = subscribe;\\n      obj.publish = publish;\\n    }\\n  };\\n})();\\n```\\n\\n### 7. The Prototype Pattern\\n\\nOne of the benefits of using the Prototype pattern is that we've working with the prototype strengths JavaScript has to offer natively rather than attempting to imitate features of other languages. let's look at the pattern example.\\n\\n```javascript\\nvar myCar = {\\n  name: 'bmw',\\n  drive: function() {\\n    console.log('I am driving!');\\n  },\\n  panic: function() {\\n    console.log('wait, how do you stop this thing?');\\n  }\\n};\\n\\n//Usages:\\n\\nvar yourCar = Object.create(myCar);\\n\\nconsole.log(yourCar.name); //'bmw'\\n```\\n\\n### 8. The Factory Pattern\\n\\nFactory can provide a generic interface for creating objects, where we can specify the type of factory object we wish to create. see the diagram below.\\n\\n![](https://www.plantuml.com/plantuml/svg/0/SovAJIp9Bx9AIqm6KfM-gIKP-IaQcbpEKF7yWjIYn9BC_3oW69TpVbvoKMf9gZCEJJ1TkdPeAk4w0uhoKqgJItJje0nq8n4wOGgu0000)\\n\\n<!--\\n```plantuml\\nCreator:factoryMethod()\\nCreator:operation()\\n\\nConcreteCreator:factoryMethod()\\n\\nCreator->ConcreteCreator\\nConcreteProduct->Product\\nConcreteCreator->ConcreteProduct\\n\\n``` -->\\n\\n```javascript\\nfunction Car(options) {\\n  this.doors = options.doors || 4;\\n  this.state = options.state || 'brand new';\\n  this.color = options.color || 'silver';\\n}\\n```\\n\\n### 9. The Mixin Pattern\\n\\nMixins are classes that offer functionality that can be easily inherited by a sub-class or group of sub-classes for the purpose of the function reuse.\\n\\n```javascript\\nvar Person = function(firstName, lastName) {\\n  this.firstName = firstName;\\n  this.lastName = lastName;\\n  this.gender = 'male';\\n};\\n\\nvar clark = new Person('Clark', 'kent');\\n\\nvar Superhero = function(firstName, lastName, powers) {\\n  Person.call(this.firstName, this.lastName);\\n  this.powers = powers;\\n};\\n\\nSuperHero.prototype = Object.create(Person.prototype);\\nvar superman = new Superhero('Clark', 'Kent', ['flight', 'heat-vision']);\\n\\nconsole.log(superman); //output personal attributes as well as power\\n```\\n\\nIn this case, superhero is capable of overriding any inherited values with values specific to its object.\\n\\n![](https://www.plantuml.com/plantuml/svg/0/yqijzq_AIaqkiKehpKikoSpFCzJGjERomn0smYxiwEGCak3opQp8p3EqKa0n1LtG2A7K226AQeIk7TmIg4eC4Q0QY0mN0000)\\n\\n<!-- ```plantuml\\nNewObject:function1();\\nNewObject:function2();\\nNewObject:functionABC();\\n\\nMixin1: function1();\\nMixin1: function2();\\n\\nMixin2: functionABC();\\n\\nMixin1->NewObject\\nMixin2->NewObject\\nMixin1->Mixin2\\n``` -->\\n\\n### 10. The Decorator Pattern\\n\\nThe Decorators are a structural design pattern that aim to promote code reuse. Similar to Mixins, they can be considered another viable alternative to object subclassing. Classically, Decorators offered that ability to add behavior to existing classes in a system dynamically. The idea was the decoration itself wasn't essential to the base functionality of the class. Let's checkout how decorator work in JavaScript\\n\\n```javascript\\nfunction MacBook() {\\n  this.cost = function() {\\n    return 997;\\n  };\\n  this.screenSize = function() {\\n    return 11.6;\\n  };\\n}\\n\\n// Decorator 1\\n\\nfunction Memory(macbook) {\\n  var v = macbook.cost();\\n  macbook.cost = function() {\\n    return v + 75;\\n  };\\n}\\n\\n// Decorator 2\\n\\nfunction Engraving(macbook) {\\n  var v = macbook.cost();\\n  macbook.cost = function() {\\n    return v + 200;\\n  };\\n}\\n\\n// Decorator 3\\n\\nfunction Insurance(macbook) {\\n  var v = macbook.cost();\\n  macbook.cost = function() {\\n    return v + 250;\\n  };\\n}\\n\\nvar mb = new MacBook();\\n\\nMemory(mb);\\nEngraving(mb);\\nInsurance(mb);\\n\\nmb.cost(); // 1522\\n```\\n\\nAll the patterns may not use to one project, and some projects may benefit from the decoupling benefits offered by the Observer pattern. That said, once we have a firm grasp-of design patterns and the specific problems they are best suited to. Thus, it becomes much easier to integrate into our application architecture.\\n\",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 27,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 917,\n    edited_at: \"2019-09-10T14:28:33.597Z\",\n    crossposted_at: null,\n    language: \"en\",\n    cached_tag_list: \"javascript, programming, webdev, patterns\",\n    path: \"/shijiezhou/top-10-javascript-patterns-every-developers-like-168p\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-12-05T19:32:41.529Z\"\n  }, {\n    title: \"Top 10 Chrome Extensions Every Developer Likes\",\n    slug: \"top-10-chrome-extensions-every-developer-likes-3ehk\",\n    created_at: \"2019-09-08T03:44:24.182Z\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--KIxIe5vS--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/t0nhvu53os9zxg5ib1b5.png\",\n    description: \"\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-09-08T04:07:41.003Z\",\n    processed_html: \"<h1>\\n  <a name=\\\"1octotree\\\" href=\\\"#1octotree\\\" class=\\\"anchor\\\">\\n  </a>\\n  1.Octotree\\n</h1>\\n\\n<p>Octotree Pro is loaded with features that bring your productivity on GitHub to the next level! Thousands of developers are using Octotree Pro daily to boost their productivity.</p>\\n\\n<p>Cancel online anytime with a click of a button. But you will probably never do that as our cancellation rate is less than 1%.</p>\\n\\n<p>We recommend the Team plan which only costs ~$2 per employee per month. Your company can invite anyone into their subscription.</p>\\n\\n<p><a href=\\\"https://www.octotree.io/\\\">https://www.octotree.io/</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--egB8PaEj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/1p6ucusmnp6my7bpko6m.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--egB8PaEj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/1p6ucusmnp6my7bpko6m.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"2-dark-reader\\\" href=\\\"#2-dark-reader\\\" class=\\\"anchor\\\">\\n  </a>\\n  2. Dark Reader\\n</h1>\\n\\n<p>Dark mode for every website. Take care of your eyes, use dark theme for night and daily browsing.<br>\\nThis eye-care extension enables night mode creating dark themes for websites on the fly. Dark Reader inverts bright colors making them high contrast and easy to read at night.</p>\\n\\n<p>You can adjust brightness, contrast, sepia filter, dark mode, font settings and ignore-list.</p>\\n\\n<p><a href=\\\"https://darkreader.org/\\\">https://darkreader.org/</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--E102-Y73--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/yj0nf6qfyalsbfs2j798.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--E102-Y73--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/yj0nf6qfyalsbfs2j798.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"3-sourcegraph\\\" href=\\\"#3-sourcegraph\\\" class=\\\"anchor\\\">\\n  </a>\\n  3. SourceGraph\\n</h1>\\n\\n<p>Sourcegraph provides this standard developer platform to every company, helping startups and large enterprises ship better software faster.</p>\\n\\n<p><a href=\\\"https://sourcegraph.com\\\">https://sourcegraph.com</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--mBZgr9ez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ntq1j1q4l1fi3uq2b2ke.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--mBZgr9ez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ntq1j1q4l1fi3uq2b2ke.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"4-web-developer\\\" href=\\\"#4-web-developer\\\" class=\\\"anchor\\\">\\n  </a>\\n  4. Web Developer\\n</h1>\\n\\n<p>The web developer extension for Chrome adds a little toolbar with different tools available. The original concept of this Chrome extension for developers came from the PNH Developer Toolbar.<br>\\nThe chrome extension web developers has a lot of handy tools a developer can use in their day-to-day work \\u2013 for designers as well as programmers. It allows you to do a lot of more then the standard Chrome Inspector, like being able to easily add outlines to elements just by clicking, displaying rulers, finding all broken images on a page, and lots more.</p>\\n\\n<p><a href=\\\"https://chrispederick.com/\\\">https://chrispederick.com/</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--B5AoDe-D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dlh7fa0fwis8y4gaxyes.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--B5AoDe-D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dlh7fa0fwis8y4gaxyes.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"5-colorpick-eyedropper\\\" href=\\\"#5-colorpick-eyedropper\\\" class=\\\"anchor\\\">\\n  </a>\\n  5. ColorPick Eyedropper\\n</h1>\\n\\n<p>An eye-dropper &amp; color-picker tool that allows you to select color values from webpages.<br>\\nIf you feel the need to alert the developer about a bug use the feedback forum instead of writing a review.</p>\\n\\n<p>If you are having problems with accuracy use the arrow keys, and enter to pick colors once you get the mouse in the approximate location.</p>\\n\\n<p>Please note that colors are picked from a snapshot of the page that is updated only when you scroll.  To take a new snapshot press r or use the re-snap button.  Sometimes if you just changed tabs, you may see a snapshot error - this is an intentional security feature.  Press R or scroll to correct this, or exit color pick and try again.</p>\\n\\n<p><a href=\\\"http://vidsbee.com/\\\">http://vidsbee.com/</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--t4fjiJyl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/km780x8wdiph5xs3oflw.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--t4fjiJyl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/km780x8wdiph5xs3oflw.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"6-ghostery\\\" href=\\\"#6-ghostery\\\" class=\\\"anchor\\\">\\n  </a>\\n  6. Ghostery\\n</h1>\\n\\n<p>Ghostery is a great Chrome extension which detects trackers, pixels, and any other embedded snippet on a website. You immediately see which plugins and trackers are installed on the web page you\\u2019ve visited. Further on, Ghostery lets you protect your privacy. There\\u2019s no registration or sign up required to use this Chrome extension.</p>\\n\\n<p><a href=\\\"https://www.ghostery.com/\\\">https://www.ghostery.com/</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--UJy2oTVU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/sh4xyhs2cq1zbtj03w31.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--UJy2oTVU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/sh4xyhs2cq1zbtj03w31.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"7-session-manager\\\" href=\\\"#7-session-manager\\\" class=\\\"anchor\\\">\\n  </a>\\n  7. Session Manager\\n</h1>\\n\\n<p>Simple yet powerful tab set management. Quickly and easily save, update, remove, and restore sets of tabs!<br>\\nSession Manager is a simple yet powerful extension that makes it quick and easy to save, update, remove, and restore sets of tabs.</p>\\n\\n<p><a href=\\\"https://chrome.google.com/webstore/detail/session-manager/mghenlmbmjcpehccoangkdpagbcbkdpc?hl=en\\\">https://chrome.google.com/webstore/detail/session-manager/mghenlmbmjcpehccoangkdpagbcbkdpc?hl=en</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--yRft2B5P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mixfjbya9lo4fzn1xdd6.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--yRft2B5P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mixfjbya9lo4fzn1xdd6.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"8-jsonview\\\" href=\\\"#8-jsonview\\\" class=\\\"anchor\\\">\\n  </a>\\n  8. JSONView\\n</h1>\\n\\n<p>You can configure JSON parsing method in options page:</p>\\n\\n<ul>\\n<li>the default method (JSON content is extracted from displayed page) is faster but can (in some rare cases) alter or fail to parse the JSON content.</li>\\n<li>the safe method costs an extra XMLHttpRequest request (JSON content is extracted from the HTTP response) but is 100% safe.</li>\\n</ul>\\n\\n<p><a href=\\\"https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=en\\\">https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=en</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--mfb3XY0U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/t4qtghmia31ojfpyub35.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--mfb3XY0U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/t4qtghmia31ojfpyub35.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"9-page-ruler\\\" href=\\\"#9-page-ruler\\\" class=\\\"anchor\\\">\\n  </a>\\n  9. Page Ruler\\n</h1>\\n\\n<p>Draw a ruler to get pixel dimensions and positioning, and measure elements on any web page.<br>\\nPage Ruler lets your draw out a ruler to any page and displays the width, height and position of it.</p>\\n\\n<p><a href=\\\"https://chrome.google.com/webstore/detail/page-ruler/emliamioobfffbgcfdchabfibonehkme?hl=en\\\">https://chrome.google.com/webstore/detail/page-ruler/emliamioobfffbgcfdchabfibonehkme?hl=en</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--hNE66gCb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/jc3ry5bwdzd0z1x9uu4q.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--hNE66gCb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/jc3ry5bwdzd0z1x9uu4q.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"10-wappalyzer\\\" href=\\\"#10-wappalyzer\\\" class=\\\"anchor\\\">\\n  </a>\\n  10. Wappalyzer\\n</h1>\\n\\n<p>Wappalyzer is a cross-platform utility that uncovers the technologies used on websites. It detects content management systems, ecommerce platforms, web frameworks, server software, analytics tools and many more.</p>\\n\\n<p><a href=\\\"https://www.wappalyzer.com/\\\">https://www.wappalyzer.com/</a></p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--Dyy9uW57--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2mv8zijfj8e2989savjh.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--Dyy9uW57--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2mv8zijfj8e2989savjh.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n\",\n    social_image: null,\n    text: \"# 1.Octotree\\n\\nOctotree Pro is loaded with features that bring your productivity on GitHub to the next level! Thousands of developers are using Octotree Pro daily to boost their productivity.\\n\\nCancel online anytime with a click of a button. But you will probably never do that as our cancellation rate is less than 1%.\\n\\nWe recommend the Team plan which only costs ~$2 per employee per month. Your company can invite anyone into their subscription.\\n\\n[https://www.octotree.io/](https://www.octotree.io/)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/1p6ucusmnp6my7bpko6m.png)\\n\\n# 2. Dark Reader\\n\\nDark mode for every website. Take care of your eyes, use dark theme for night and daily browsing.\\nThis eye-care extension enables night mode creating dark themes for websites on the fly. Dark Reader inverts bright colors making them high contrast and easy to read at night.\\n\\nYou can adjust brightness, contrast, sepia filter, dark mode, font settings and ignore-list.\\n\\n[https://darkreader.org/](https://darkreader.org/)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/yj0nf6qfyalsbfs2j798.png)\\n\\n# 3. SourceGraph\\n\\nSourcegraph provides this standard developer platform to every company, helping startups and large enterprises ship better software faster.\\n\\n[https://sourcegraph.com](https://sourcegraph.com)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/ntq1j1q4l1fi3uq2b2ke.png)\\n\\n# 4. Web Developer\\n\\nThe web developer extension for Chrome adds a little toolbar with different tools available. The original concept of this Chrome extension for developers came from the PNH Developer Toolbar.\\nThe chrome extension web developers has a lot of handy tools a developer can use in their day-to-day work \\u2013 for designers as well as programmers. It allows you to do a lot of more then the standard Chrome Inspector, like being able to easily add outlines to elements just by clicking, displaying rulers, finding all broken images on a page, and lots more.\\n\\n[https://chrispederick.com/](https://chrispederick.com/)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/dlh7fa0fwis8y4gaxyes.png)\\n\\n# 5. ColorPick Eyedropper\\n\\nAn eye-dropper & color-picker tool that allows you to select color values from webpages.\\nIf you feel the need to alert the developer about a bug use the feedback forum instead of writing a review.\\n\\nIf you are having problems with accuracy use the arrow keys, and enter to pick colors once you get the mouse in the approximate location.\\n\\nPlease note that colors are picked from a snapshot of the page that is updated only when you scroll.  To take a new snapshot press r or use the re-snap button.  Sometimes if you just changed tabs, you may see a snapshot error - this is an intentional security feature.  Press R or scroll to correct this, or exit color pick and try again.\\n\\n[http://vidsbee.com/](http://vidsbee.com/)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/km780x8wdiph5xs3oflw.png)\\n\\n# 6. Ghostery\\n\\nGhostery is a great Chrome extension which detects trackers, pixels, and any other embedded snippet on a website. You immediately see which plugins and trackers are installed on the web page you\\u2019ve visited. Further on, Ghostery lets you protect your privacy. There\\u2019s no registration or sign up required to use this Chrome extension.\\n\\n[https://www.ghostery.com/](https://www.ghostery.com/)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/sh4xyhs2cq1zbtj03w31.png)\\n\\n# 7. Session Manager\\n\\nSimple yet powerful tab set management. Quickly and easily save, update, remove, and restore sets of tabs!\\nSession Manager is a simple yet powerful extension that makes it quick and easy to save, update, remove, and restore sets of tabs.\\n\\n[https://chrome.google.com/webstore/detail/session-manager/mghenlmbmjcpehccoangkdpagbcbkdpc?hl=en](https://chrome.google.com/webstore/detail/session-manager/mghenlmbmjcpehccoangkdpagbcbkdpc?hl=en)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/mixfjbya9lo4fzn1xdd6.png)\\n\\n# 8. JSONView\\n\\nYou can configure JSON parsing method in options page:\\n- the default method (JSON content is extracted from displayed page) is faster but can (in some rare cases) alter or fail to parse the JSON content.\\n- the safe method costs an extra XMLHttpRequest request (JSON content is extracted from the HTTP response) but is 100% safe.\\n\\n[https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=en](https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=en)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/t4qtghmia31ojfpyub35.png)\\n\\n\\n# 9. Page Ruler\\n\\nDraw a ruler to get pixel dimensions and positioning, and measure elements on any web page.\\nPage Ruler lets your draw out a ruler to any page and displays the width, height and position of it.\\n\\n[https://chrome.google.com/webstore/detail/page-ruler/emliamioobfffbgcfdchabfibonehkme?hl=en](https://chrome.google.com/webstore/detail/page-ruler/emliamioobfffbgcfdchabfibonehkme?hl=en)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/jc3ry5bwdzd0z1x9uu4q.png)\\n\\n# 10. Wappalyzer\\nWappalyzer is a cross-platform utility that uncovers the technologies used on websites. It detects content management systems, ecommerce platforms, web frameworks, server software, analytics tools and many more.\\n\\n[https://www.wappalyzer.com/](https://www.wappalyzer.com/)\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/2mv8zijfj8e2989savjh.png)\",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 24,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 454,\n    edited_at: \"2019-09-10T20:17:06.822Z\",\n    crossposted_at: null,\n    language: \"en\",\n    cached_tag_list: \"javascript, devops, website, bestofdev\",\n    path: \"/shijiezhou/top-10-chrome-extensions-every-developer-likes-3ehk\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-11-08T13:05:03.866Z\"\n  }, {\n    title: \"Top 10 Workstation Every Developer Likes\",\n    slug: \"top-10-workstation-every-developer-likes-3afo\",\n    created_at: \"2019-10-12T01:40:34.021Z\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--FE_3-bgs--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/5s7knvtiptxll3hxglds.png\",\n    description: \"\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-10-12T01:43:09.086Z\",\n    processed_html: \"<p>Considering developers spend so much time at your desk, it\\u2019s important to create a space that not only works for you and aids your productivity but is also an area you actually enjoy being in. Yes, here\\u2019s an awesome collection of items, accessories and other things that developers recommended for a sweet desk setup: </p>\\n\\n<h1>\\n  <a name=\\\"1-one-monitor\\\" href=\\\"#1-one-monitor\\\" class=\\\"anchor\\\">\\n  </a>\\n  1. One Monitor\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--5chauw_Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/oz2rzfcez2ac12xpu872.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--5chauw_Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/oz2rzfcez2ac12xpu872.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"2-one-vertical-and-two-horizontal\\\" href=\\\"#2-one-vertical-and-two-horizontal\\\" class=\\\"anchor\\\">\\n  </a>\\n  2. One Vertical and Two Horizontal\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--zQtVCGVY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ccwk6z9buo37osy5t6tx.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--zQtVCGVY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ccwk6z9buo37osy5t6tx.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"3-neon-light-desktop\\\" href=\\\"#3-neon-light-desktop\\\" class=\\\"anchor\\\">\\n  </a>\\n  3. Neon Light Desktop\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--9xsSCLmX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/zjbns5yi9rt95a9ado4u.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--9xsSCLmX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/zjbns5yi9rt95a9ado4u.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"4-three-monitors-in-studio\\\" href=\\\"#4-three-monitors-in-studio\\\" class=\\\"anchor\\\">\\n  </a>\\n  4. Three Monitors in Studio\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--N6hwYxEU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/wpqhpltl1oj55gf3ayft.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--N6hwYxEU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/wpqhpltl1oj55gf3ayft.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"5-one-imac-and-macbook-pro-and-mac-display\\\" href=\\\"#5-one-imac-and-macbook-pro-and-mac-display\\\" class=\\\"anchor\\\">\\n  </a>\\n  5. One iMac and Macbook Pro and Mac Display\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--u0RZONV---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/eew7fftvughyidv7dj16.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--u0RZONV---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/eew7fftvughyidv7dj16.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"6-one-foot-long-monitor-with-mac\\\" href=\\\"#6-one-foot-long-monitor-with-mac\\\" class=\\\"anchor\\\">\\n  </a>\\n  6. One foot long Monitor with Mac\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--5RvQa2Y9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vv8sub3l60ghdc7y8x5u.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--5RvQa2Y9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vv8sub3l60ghdc7y8x5u.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"7-one-mac-display-plus-macbook-pro\\\" href=\\\"#7-one-mac-display-plus-macbook-pro\\\" class=\\\"anchor\\\">\\n  </a>\\n  7. One Mac Display plus Macbook Pro\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--N9y1-eBd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cfd14rsvn4oyngapb7u1.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--N9y1-eBd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cfd14rsvn4oyngapb7u1.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"8-one-surface-plus-blend-display\\\" href=\\\"#8-one-surface-plus-blend-display\\\" class=\\\"anchor\\\">\\n  </a>\\n  8. One Surface plus blend Display\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--iCdHm_Jj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4lafb66ek7lc4ps4hs8h.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--iCdHm_Jj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4lafb66ek7lc4ps4hs8h.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"9-three-vertical-setup-monitor\\\" href=\\\"#9-three-vertical-setup-monitor\\\" class=\\\"anchor\\\">\\n  </a>\\n  9. Three Vertical Setup Monitor\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--A8EaggN_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/c6ugz0ids1dix0kwjzz0.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--A8EaggN_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/c6ugz0ids1dix0kwjzz0.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h1>\\n  <a name=\\\"10-two-dell-display-plus-one-imac\\\" href=\\\"#10-two-dell-display-plus-one-imac\\\" class=\\\"anchor\\\">\\n  </a>\\n  10. Two Dell Display plus one iMAc\\n</h1>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--U_ONtuvi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/93al6dpzbysft5wxouxy.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--U_ONtuvi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/93al6dpzbysft5wxouxy.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<p>Leave your comment or which one you like the best.</p>\\n\\n\",\n    social_image: null,\n    text: \"Considering developers spend so much time at your desk, it’s important to create a space that not only works for you and aids your productivity but is also an area you actually enjoy being in. Yes, here’s an awesome collection of items, accessories and other things that developers recommended for a sweet desk setup: \\n\\n# 1. One Monitor\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/oz2rzfcez2ac12xpu872.jpg)\\n\\n\\n# 2. One Vertical and Two Horizontal\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/ccwk6z9buo37osy5t6tx.jpg)\\n\\n# 3. Neon Light Desktop\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/zjbns5yi9rt95a9ado4u.jpg)\\n\\n# 4. Three Monitors in Studio\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/wpqhpltl1oj55gf3ayft.jpg)\\n\\n# 5. One iMac and Macbook Pro and Mac Display\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/eew7fftvughyidv7dj16.jpg)\\n\\n# 6. One foot long Monitor with Mac\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/vv8sub3l60ghdc7y8x5u.jpg)\\n\\n# 7. One Mac Display plus Macbook Pro\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/cfd14rsvn4oyngapb7u1.jpg)\\n\\n# 8. One Surface plus blend Display\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/4lafb66ek7lc4ps4hs8h.jpg)\\n\\n# 9. Three Vertical Setup Monitor \\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/c6ugz0ids1dix0kwjzz0.jpg)\\n\\n# 10. Two Dell Display plus one iMAc\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/93al6dpzbysft5wxouxy.jpg)\\n\\nLeave your comment or which one you like the best.\",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 11,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 50,\n    edited_at: \"2019-12-05T03:33:28.739Z\",\n    crossposted_at: null,\n    language: null,\n    cached_tag_list: \"develop, design, computerscience, javascript\",\n    path: \"/shijiezhou/top-10-workstation-every-developer-likes-3afo\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-10-27T13:14:15.743Z\"\n  }, {\n    title: \"Top 7 Space-Time Complexity Algorithms You Must Know\",\n    slug: \"top-7-space-time-complexity-algorithm-you-must-know-34gi\",\n    created_at: \"2019-11-11T20:50:47.059Z\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--xCkyPuah--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/japlcbtbwxu41b8ic61r.png\",\n    description: \"\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-11-11T21:26:12.352Z\",\n    processed_html: \"<p>Some developers may be stuck on the concept of the \\\"Big O\\\" time complexity analysis. So you should read about how big-O work on this article.</p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--IO4PCP4k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3eoay9cii8j0dd4sxhgw.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--IO4PCP4k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3eoay9cii8j0dd4sxhgw.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<p>From the image above, you get the ideas of how a balanced tree looks like. \\\"Big O\\\" is about a problem in relation to the size of the input. In the diagram above, how was the shortest way to find the number 5? Obviously, the tree on the right takes more than the tree on the left. </p>\\n\\n<h2>\\n  <a name=\\\"1-linearon\\\" href=\\\"#1-linearon\\\" class=\\\"anchor\\\">\\n  </a>\\n  1. Linear.O(n)\\n</h2>\\n\\n<p>This is the most optimal algorithm that runs in linear time. No matter how much code you have and it stills run in the same linear time for every situation.</p>\\n\\n<h2>\\n  <a name=\\\"2-constant-ok\\\" href=\\\"#2-constant-ok\\\" class=\\\"anchor\\\">\\n  </a>\\n  2. Constant. O(k)\\n</h2>\\n\\n<p>Constant time algorithms have a running time independent of input size. Mathematical formulas, for instance, have fixed running times and are considered constant time. </p>\\n\\n<h2>\\n  <a name=\\\"3-logarithmic-ologn\\\" href=\\\"#3-logarithmic-ologn\\\" class=\\\"anchor\\\">\\n  </a>\\n  3. Logarithmic. O(log(n))\\n</h2>\\n\\n<p>Logarithmic is often seen on the trees. You can think about the height of the tree because it always includes traversing down the height of a tree and can be considered logarithmic in time. </p>\\n\\n<h2>\\n  <a name=\\\"4-superlinear-onlogn\\\" href=\\\"#4-superlinear-onlogn\\\" class=\\\"anchor\\\">\\n  </a>\\n  4. Superlinear. O(n*log(n))\\n</h2>\\n\\n<p>Most sort operation in O(n<sup>2)</sup> time. Some of the popular sorting algorithms such as heapsort, mergesort, and quicksort. Usually, it is not a recommended way to do.</p>\\n\\n<h2>\\n  <a name=\\\"5-quadratic-or-cubic-polynomial-on2-or-on3\\\" href=\\\"#5-quadratic-or-cubic-polynomial-on2-or-on3\\\" class=\\\"anchor\\\">\\n  </a>\\n  5. Quadratic or Cubic / Polynomial. O(n<sup>2)</sup> or O(n<sup>3)</sup>\\n</h2>\\n\\n<p>Brute force algorithms often run in O(n<sup>2)</sup> or O(n<sup>3)</sup> because you are going to loop through all the situations. e.g. you want to find all the combinations of an array. [1,2,3] =&gt; [1,2,3], [1,3,2], [2,1,3] ... The complexity of the operation is n<sup>3</sup> time. </p>\\n\\n<h2>\\n  <a name=\\\"6-exponential-o2n\\\" href=\\\"#6-exponential-o2n\\\" class=\\\"anchor\\\">\\n  </a>\\n  6. Exponential. O(2<sup>n)</sup>\\n</h2>\\n\\n<p>The exponential algorithm is also not the best but it is better than the factorial algorithm. One example is computing the <a href=\\\"https://en.wikipedia.org/wiki/Fibonacci_number\\\">fibonacci sequence</a>. C(n) = C(n-1) + C(n-2). e.g. 1,1,2,3,5,8,13,21,34 ... </p>\\n\\n<p>See the image below to understand factorial:</p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--FQ_SNant--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/idkk3igoqpq6ahezhl0j.png\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--FQ_SNant--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/idkk3igoqpq6ahezhl0j.png\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<h2>\\n  <a name=\\\"7-factorial-on\\\" href=\\\"#7-factorial-on\\\" class=\\\"anchor\\\">\\n  </a>\\n  7. Factorial. O(n!)\\n</h2>\\n\\n<p>This is the slowest algorithm that you never want to use. For example, list all the path of traveling n countries. Let's say you have three-country, the USA, Mexico, Canada. You first need to visit n city, and n-1 cities, and n-2 cities. The run-time stacks up as n*(n-1)*(n-2) = O(n!).</p>\\n\\n<p><a href=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--jgQGYm27--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4b4n2v8du47kvf5sswfn.jpg\\\" class=\\\"article-body-image-wrapper\\\"><img src=\\\"https://res.cloudinary.com/practicaldev/image/fetch/s--jgQGYm27--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4b4n2v8du47kvf5sswfn.jpg\\\" alt=\\\"Alt Text\\\" loading=\\\"lazy\\\"></a></p>\\n\\n<blockquote>\\n<p>A lot of candidates get stuck here by either getting too deep in nitty-gritty details and overcomplicating this like saying \\\"This is O(6 * k *  n3), where k is the number of comparisons...\\\" Most software engineers don't care about this level of detail, and you can often get away with simply saying \\\"This is quadratic time because we have two for-loops, each one iterating from 1 to n.\\\"</p>\\n\\n<p>One more tip - do not say \\\"This is O(m + v + e),\\\" when you haven't defined what m, v, or e are.  You generally want to say \\\"... where m is the height of the matrix, v is the number of vertices, e is the number of edges, etc.,\\\"  Once you start reciting formulas without defining the constants you're using, your analysis will appear amateurish.</p>\\n</blockquote>\\n\\n\",\n    social_image: null,\n    text: \"Some developers may be stuck on the concept of the \\\"Big O\\\" time complexity analysis. So you should read about how big-O work on this article.\\n\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/3eoay9cii8j0dd4sxhgw.png)\\n\\nFrom the image above, you get the ideas of how a balanced tree looks like. \\\"Big O\\\" is about a problem in relation to the size of the input. In the diagram above, how was the shortest way to find the number 5? Obviously, the tree on the right takes more than the tree on the left. \\n\\n## 1. Linear.O(n)\\n\\nThis is the most optimal algorithm that runs in linear time. No matter how much code you have and it stills run in the same linear time for every situation.\\n\\n## 2. Constant. O(k)\\n\\nConstant time algorithms have a running time independent of input size. Mathematical formulas, for instance, have fixed running times and are considered constant time. \\n\\n## 3. Logarithmic. O(log(n))\\n\\nLogarithmic is often seen on the trees. You can think about the height of the tree because it always includes traversing down the height of a tree and can be considered logarithmic in time. \\n\\n## 4. Superlinear. O(n*log(n))\\n\\nMost sort operation in O(n^2) time. Some of the popular sorting algorithms such as heapsort, mergesort, and quicksort. Usually, it is not a recommended way to do.\\n\\n## 5. Quadratic or Cubic / Polynomial. O(n^2) or O(n^3)\\n\\nBrute force algorithms often run in O(n^2) or O(n^3) because you are going to loop through all the situations. e.g. you want to find all the combinations of an array. [1,2,3] => [1,2,3], [1,3,2], [2,1,3] ... The complexity of the operation is n^3 time. \\n\\n## 6. Exponential. O(2^n)\\n\\nThe exponential algorithm is also not the best but it is better than the factorial algorithm. One example is computing the [fibonacci sequence](https://en.wikipedia.org/wiki/Fibonacci_number). C(n) = C(n-1) + C(n-2). e.g. 1,1,2,3,5,8,13,21,34 ... \\n\\nSee the image below to understand factorial:\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/idkk3igoqpq6ahezhl0j.png)\\n\\n## 7. Factorial. O(n!)\\n\\nThis is the slowest algorithm that you never want to use. For example, list all the path of traveling n countries. Let's say you have three-country, the USA, Mexico, Canada. You first need to visit n city, and n-1 cities, and n-2 cities. The run-time stacks up as n*(n-1)*(n-2) = O(n!).\\n\\n![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/4b4n2v8du47kvf5sswfn.jpg)\\n\\n> A lot of candidates get stuck here by either getting too deep in nitty-gritty details and overcomplicating this like saying \\\"This is O(6 * k *  n3), where k is the number of comparisons...\\\" Most software engineers don't care about this level of detail, and you can often get away with simply saying \\\"This is quadratic time because we have two for-loops, each one iterating from 1 to n.\\\"\\n\\n> One more tip - do not say \\\"This is O(m + v + e),\\\" when you haven't defined what m, v, or e are.  You generally want to say \\\"... where m is the height of the matrix, v is the number of vertices, e is the number of edges, etc.,\\\"  Once you start reciting formulas without defining the constants you're using, your analysis will appear amateurish.\\n\\n \",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 0,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 53,\n    edited_at: \"2019-11-11T21:34:11.509Z\",\n    crossposted_at: null,\n    language: \"en\",\n    cached_tag_list: \"javascript, typescript, java, cpp\",\n    path: \"/shijiezhou/top-7-space-time-complexity-algorithm-you-must-know-34gi\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-11-11T21:26:12.352Z\"\n  }, {\n    title: \"Using Prettier and husky to make your Emberjs Great Again\",\n    slug: \"using-prettier-and-husky-to-make-your-emberjs-great-again-5790\",\n    created_at: \"2019-12-22T04:16:59.952Z\",\n    img: \"https://res.cloudinary.com/practicaldev/image/fetch/s--sGGbiyEa--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://thepracticaldev.s3.amazonaws.com/i/5t9jrwzqiqvdbvz10zrf.png\",\n    description: \"\",\n    published: true,\n    iconButtonList: {\n      favorite: \"favorite\",\n      share: \"share\"\n    },\n    published_at: \"2019-12-22T04:24:10.248Z\",\n    processed_html: \"<p>Whether you work in a company, a big team or by yourself, having consistently formatted code is significant for maintainability and readability. Also, there are tons of ways and this is the standard way and most developers should look into it.</p>\\n\\n<h2>\\n  <a name=\\\"too-long-didnt-read\\\" href=\\\"#too-long-didnt-read\\\" class=\\\"anchor\\\">\\n  </a>\\n  Too Long; Didn\\u2019t Read\\n</h2>\\n\\n<p>Most developers know the tool of <a href=\\\"https://www.npmjs.com/package/prettier\\\">Prettier</a> because it is very easy to use and it makes sense to run the command.<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight plaintext\\\"><code>npm run prettier -g\\n</code></pre></div>\\n\\n\\n\\n<p>However, we will forget or sometimes when you push to pipeline, you realize the problem that you didn\\u2019t run the prettier before you commit. Or sometimes, the VPS you used does not have prettier or nothing like linter install. That means it will make your pipeline fail.</p>\\n\\n<p>Check out the Emberjs Application <a href=\\\"https://github.com/shijiezhou1/Ember-Blog\\\">repo</a>:</p>\\n\\n<p>The major issue is that you forget to format the Ember Code, it can create the mess that other developers may have a problem reading the code. See. e.g.<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight plaintext\\\"><code>import Ember from 'ember';\\nimport config from './config/environment';\\n\\nconst Router = Ember.Router\\n  .extend(  {\\n            location: config.locationType,\\n     rootURL: config.rootURL\\n} );\\n\\nRouter\\n    .map(function() {\\n});\\n\\nexport default Router;\\n</code></pre></div>\\n\\n\\n\\n<p>As you can see, the code above does not make use to read easily, and you do not want to run <code>npm prettier</code> every single time.</p>\\n\\n<h2>\\n  <a name=\\\"format-code-like-pro\\\" href=\\\"#format-code-like-pro\\\" class=\\\"anchor\\\">\\n  </a>\\n  Format Code Like Pro:\\n</h2>\\n\\n<p>Is that an easier way to format your code without using any IDE like VS Code, IntelliJ, NetBeans, or Eclipse when you commit your project to Github/GitLab/Bitbucket? Of course, that can be as simple as it is.</p>\\n\\n<p>So, there are three packages you need to install before :<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight plaintext\\\"><code>npm i husky prettier pretty-quick --save-dev\\n</code></pre></div>\\n\\n\\n\\n<p>Now you should see the package that installs on your Emberjs:<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight plaintext\\\"><code>\\\"husky\\\": \\\"^3.1.0\\\",\\n\\\"prettier\\\": \\\"^1.19.1\\\",\\n\\\"pretty-quick\\\": \\\"^2.0.1\\\"\\n</code></pre></div>\\n\\n\\n\\n<p>Once you have all those packages installed, there is one last step before you will make your commit much efficient.</p>\\n\\n<h3>\\n  <a name=\\\"first-step\\\" href=\\\"#first-step\\\" class=\\\"anchor\\\">\\n  </a>\\n  First Step:\\n</h3>\\n\\n\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight plaintext\\\"><code>// package.json\\n\\\"scripts\\\": {\\n  prettier\\\": \\\"prettier --write \\\\\\\"app/*/*.js\\\\\\\"\\\"\\n}\\n</code></pre></div>\\n\\n\\n\\n<h3>\\n  <a name=\\\"second-step\\\" href=\\\"#second-step\\\" class=\\\"anchor\\\">\\n  </a>\\n  Second Step:\\n</h3>\\n\\n\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight plaintext\\\"><code>// package.json\\n\\\"husky\\\": {\\n  \\\"hooks\\\": { \\n    \\\"pre-commit\\\": \\\"npm run prettier &amp;&amp; pretty-quick --staged &amp;&amp; git add .\\\"\\n  }\\n}\\n</code></pre></div>\\n\\n\\n\\n<p>Now you are all set up! Test out by running git command on your ember project.<br>\\n</p>\\n\\n<div class=\\\"highlight\\\"><pre class=\\\"highlight plaintext\\\"><code>git add .\\ngit commit -m 'automation format'\\n// output\\napp/adapters/application.js 42ms\\napp/components/article-body.js 24ms\\napp/components/article-list.js 12ms\\napp/components/article-share-menu.js 9ms\\napp/components/bear-list.js 17ms\\napp/components/loader.js 8ms\\napp/components/nav.js 8ms\\n\\uD83D\\uDD0D  Finding changed files since git revision 123456.\\n\\uD83C\\uDFAF  Found 0 changed files.\\n\\u2705  Everything is awesome!\\nOn branch master\\nYour branch is ahead of 'origin/master' by 1 commit.\\n  (use \\\"git push\\\" to publish your local commits)\\n</code></pre></div>\\n\\n\\n\\n<h2>\\n  <a name=\\\"conclusion\\\" href=\\\"#conclusion\\\" class=\\\"anchor\\\">\\n  </a>\\n  Conclusion\\n</h2>\\n\\n<p>Prettier, husky and pretty-quick can improve your workflow by formatting your JavaScript files before every commit. If you want to learn more about how to use <a href=\\\"https://www.npmjs.com/package/lint-staged?activeTab=dependencies\\\">link-staged</a>.</p>\\n\\n<p>Check out full repo on the <a href=\\\"https://github.com/shijiezhou1/Ember-Blog\\\">link</a> to see how easy it is.</p>\\n\\n\",\n    social_image: null,\n    text: \"Whether you work in a company, a big team or by yourself, having consistently formatted code is significant for maintainability and readability. Also, there are tons of ways and this is the standard way and most developers should look into it.\\n\\n## Too Long; Didn\\u2019t Read\\n\\nMost developers know the tool of [Prettier](https://www.npmjs.com/package/prettier) because it is very easy to use and it makes sense to run the command.\\n\\n```\\nnpm run prettier -g\\n```\\n\\nHowever, we will forget or sometimes when you push to pipeline, you realize the problem that you didn\\u2019t run the prettier before you commit. Or sometimes, the VPS you used does not have prettier or nothing like linter install. That means it will make your pipeline fail.\\n\\nCheck out the Emberjs Application [repo](https://github.com/shijiezhou1/Ember-Blog):\\n\\n\\nThe major issue is that you forget to format the Ember Code, it can create the mess that other developers may have a problem reading the code. See. e.g.\\n\\n```\\nimport Ember from 'ember';\\nimport config from './config/environment';\\n\\nconst Router = Ember.Router\\n  .extend(  {\\n            location: config.locationType,\\n     rootURL: config.rootURL\\n} );\\n\\nRouter\\n    .map(function() {\\n});\\n\\nexport default Router;\\n```\\n\\nAs you can see, the code above does not make use to read easily, and you do not want to run `npm prettier` every single time.\\n\\n## Format Code Like Pro:\\n\\nIs that an easier way to format your code without using any IDE like VS Code, IntelliJ, NetBeans, or Eclipse when you commit your project to Github/GitLab/Bitbucket? Of course, that can be as simple as it is.\\n\\nSo, there are three packages you need to install before :\\n\\n```\\nnpm i husky prettier pretty-quick --save-dev\\n```\\n\\nNow you should see the package that installs on your Emberjs:\\n\\n```\\n\\\"husky\\\": \\\"^3.1.0\\\",\\n\\\"prettier\\\": \\\"^1.19.1\\\",\\n\\\"pretty-quick\\\": \\\"^2.0.1\\\"\\n```\\n\\nOnce you have all those packages installed, there is one last step before you will make your commit much efficient.\\n\\n### First Step:\\n\\n```\\n// package.json\\n\\\"scripts\\\": {\\n  prettier\\\": \\\"prettier --write \\\\\\\"app/*/*.js\\\\\\\"\\\"\\n}\\n```\\n\\n### Second Step:\\n\\n\\n```\\n// package.json\\n\\\"husky\\\": {\\n  \\\"hooks\\\": { \\n    \\\"pre-commit\\\": \\\"npm run prettier && pretty-quick --staged && git add .\\\"\\n  }\\n}\\n```\\n\\nNow you are all set up! Test out by running git command on your ember project.\\n\\n```\\ngit add .\\ngit commit -m 'automation format'\\n// output\\napp/adapters/application.js 42ms\\napp/components/article-body.js 24ms\\napp/components/article-list.js 12ms\\napp/components/article-share-menu.js 9ms\\napp/components/bear-list.js 17ms\\napp/components/loader.js 8ms\\napp/components/nav.js 8ms\\n\\uD83D\\uDD0D  Finding changed files since git revision 123456.\\n\\uD83C\\uDFAF  Found 0 changed files.\\n\\u2705  Everything is awesome!\\nOn branch master\\nYour branch is ahead of 'origin/master' by 1 commit.\\n  (use \\\"git push\\\" to publish your local commits)\\n```\\n\\n## Conclusion\\n\\nPrettier, husky and pretty-quick can improve your workflow by formatting your JavaScript files before every commit. If you want to learn more about how to use [link-staged](https://www.npmjs.com/package/lint-staged?activeTab=dependencies).\\n\\nCheck out full repo on the [link](https://github.com/shijiezhou1/Ember-Blog) to see how easy it is.\",\n    canonical_url: null,\n    show_comments: true,\n    img_background_hex_color: \"#dddddd\",\n    published_from_feed: false,\n    comments_count: 0,\n    video: null,\n    video_code: null,\n    video_source_url: null,\n    video_thumbnail_url: null,\n    video_closed_caption_track_url: null,\n    feed_source_url: null,\n    positive_reactions_count: 4,\n    edited_at: null,\n    crossposted_at: null,\n    language: \"en\",\n    cached_tag_list: \"javascript, typescript, ember, node\",\n    path: \"/shijiezhou/using-prettier-and-husky-to-make-your-emberjs-great-again-5790\",\n    cached_user_name: \"Jay Chow\",\n    cached_user_username: \"shijiezhou\",\n    last_comment_at: \"2019-12-22T04:24:10.248Z\"\n  }];\n  _exports.default = _default;\n});","define(\"ember-blog/mirage/scenarios/default\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = _default;\n\n  function _default(server) {\n    server.loadFixtures(\"categories\", \"posts\"); // server.createList('category', 5);\n    // server.createList('post', 150)\n  }\n});","define(\"ember-blog/mirage/serializers/application\", [\"exports\", \"ember-cli-mirage\"], function (_exports, _emberCliMirage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  // import { JSONAPISerializer } from 'ember-cli-mirage';\n  // import { Serializer } from 'ember-cli-mirage';\n  var _default = _emberCliMirage.RestSerializer;\n  _exports.default = _default;\n});","define(\"ember-blog/mixins/transition-mixin\", [\"exports\", \"ember-css-transitions/mixins/transition-mixin\"], function (_exports, _transitionMixin) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _transitionMixin.default;\n    }\n  });\n});","define(\"ember-blog/models/category\", [\"exports\", \"ember-data\"], function (_exports, _emberData) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var Model = _emberData.default.Model;\n\n  var _default = Model.extend({\n    title: _emberData.default.attr(\"string\")\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/models/home\", [\"exports\", \"ember-data\"], function (_exports, _emberData) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var Model = _emberData.default.Model;\n\n  var _default = Model.extend({\n    title: _emberData.default.attr()\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/models/post\", [\"exports\", \"ember-data\"], function (_exports, _emberData) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var Model = _emberData.default.Model;\n\n  var _default = Model.extend({\n    title: _emberData.default.attr(\"string\"),\n    text: _emberData.default.attr(\"string\"),\n    img: _emberData.default.attr(\"string\"),\n    url: _emberData.default.attr(\"string\"),\n    iconButtonList: _emberData.default.attr(),\n    categoryList: _emberData.default.attr(),\n    viewCount: _emberData.default.attr(),\n    likes: _emberData.default.attr(\"number\")\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/modifiers/did-insert\", [\"exports\", \"@ember/render-modifiers/modifiers/did-insert\"], function (_exports, _didInsert) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _didInsert.default;\n    }\n  });\n});","define(\"ember-blog/modifiers/did-update\", [\"exports\", \"@ember/render-modifiers/modifiers/did-update\"], function (_exports, _didUpdate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _didUpdate.default;\n    }\n  });\n});","define(\"ember-blog/modifiers/will-destroy\", [\"exports\", \"@ember/render-modifiers/modifiers/will-destroy\"], function (_exports, _willDestroy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _willDestroy.default;\n    }\n  });\n});","define(\"ember-blog/resolver\", [\"exports\", \"ember-resolver\"], function (_exports, _emberResolver) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = _emberResolver.default;\n  _exports.default = _default;\n});","define(\"ember-blog/router\", [\"exports\", \"ember-blog/config/environment\"], function (_exports, _environment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var Router = Ember.Router.extend({\n    location: _environment.default.locationType,\n    rootURL: _environment.default.rootURL\n  });\n  Router.map(function () {\n    this.route('post', {\n      path: '/post/:post_id'\n    });\n    this.route('home');\n    this.route('self');\n    this.route('tech');\n    this.route('heated');\n    this.route('design');\n    this.route('category');\n  });\n  Router.reopen({\n    location: 'hash'\n  });\n  var _default = Router;\n  _exports.default = _default;\n});","define(\"ember-blog/routes/application\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Route.extend({\n    model: function model() {\n      return true;\n    },\n    setupController: function setupController(controller) {\n      this._super.apply(this, arguments);\n\n      controller.set(\"category\", this.store.findAll(\"category\"));\n      this.transitionTo(\"home\");\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/routes/category\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Route.extend({});\n\n  _exports.default = _default;\n});","define(\"ember-blog/routes/design\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Route.extend({\n    model: function model() {\n      return [{\n        name: \"Grizzly\"\n      }, {\n        name: \"Gobi\"\n      }, {\n        name: \"Atlas\"\n      }, {\n        name: \"Polar\"\n      }, {\n        name: \"Brown\"\n      }, {\n        name: \"American Black\"\n      }, {\n        name: \"Asian Black\"\n      }, {\n        name: \"Bergmans\"\n      }, {\n        name: \"Blue\"\n      }, {\n        name: \"Cinnamon\"\n      }, {\n        name: \"Kermode\"\n      }, {\n        name: \"Formosan\"\n      }, {\n        name: \"Himalayan\"\n      }, {\n        name: \"Kodiak\"\n      }, {\n        name: \"Marsican\"\n      }, {\n        name: \"Sri Lankan\"\n      }, {\n        name: \"Ursid\"\n      }, {\n        name: \"Spectacled\"\n      }, {\n        name: \"Giant Panda\"\n      }, {\n        name: \"Sloth Bear\"\n      }, {\n        name: \"Sun Bear\"\n      }];\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/routes/heated\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Route.extend({});\n\n  _exports.default = _default;\n});","define(\"ember-blog/routes/home\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Route.extend({\n    model: function model() {// TODO it needs a sorting list because it cache last record\n    },\n    actions: {\n      refreshModel: function refreshModel() {\n        this.refresh();\n      },\n      updateLike: function updateLike(likeId) {\n        var record = this.store.peekRecord(\"post\", likeId); // retrieve record\n\n        record.incrementProperty(\"like\");\n        record.save();\n      }\n    } // renderTemplate() {\n    //   this.render('home', {\n    //     into: 'application',\n    //     outlet: 'onlyApp'\n    //   });\n    // }\n\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/routes/home/view\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Route.extend({\n    model: function model(params) {\n      this.store.findRecord('home', params.home_id);\n    },\n    setupController: function setupController(controller, model) {\n      controller.set('model', model);\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/routes/post\", [\"exports\", \"showdown\", \"ember-blog/extensions/showdown\"], function (_exports, _showdown, _showdown2) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Route.extend({\n    beforeModel: function beforeModel() {// const currentPost = this.store.peekRecord('post', param.post_id);\n      // currentPost.incrementProperty('viewCount');\n      // currentPost.save();\n    },\n    model: function model(param) {\n      this.set(\"postID\", param.post_id);\n      return this.store.findRecord(\"post\", param.post_id);\n    },\n    afterModel: function afterModel() {\n      // UPDATE VIEW COUNTs\n      var currRecord = this.store.peekRecord(\"post\", this.get(\"postID\"));\n      currRecord.incrementProperty(\"viewCount\");\n      currRecord.save();\n    },\n    setupController: function setupController(controller, model) {\n      _showdown.default.setFlavor(\"github\");\n\n      var converter = new _showdown.default.Converter();\n      converter.useExtension(_showdown2.default);\n      var html = converter.makeHtml(model.text); // // SETTING RESULT FOR RENDER\n\n      controller.set(\"model\", model);\n      controller.set(\"currentMarkdown\", html.source); // // SETTING INDEX FOR RENDER\n\n      controller.set(\"hello\", html.catalog);\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/routes/self\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Route.extend({\n    model: function model() {\n      return new Promise(function (resolve) {\n        setTimeout(resolve, 1000);\n      });\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/routes/tech\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  /**\n   * The route for the tech page\n   *\n   * @module\n   * @namespace Route\n   * @class tech\n   * @extends ember/routing/route\n   */\n  var _default = Ember.Route.extend({\n    model: function model() {// return this.store.findAll('tech');\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/serializers/-default\", [\"exports\", \"@ember-data/serializer/json\"], function (_exports, _json) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _json.default;\n    }\n  });\n});","define(\"ember-blog/serializers/-json-api\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonApi.default;\n    }\n  });\n});","define(\"ember-blog/serializers/-rest\", [\"exports\", \"@ember-data/serializer/rest\"], function (_exports, _rest) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _rest.default;\n    }\n  });\n});","define(\"ember-blog/services/constants\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.Service.extend({\n    sniffer: Ember.inject.service('sniffer'),\n    webkit: Ember.computed(function () {\n      return /webkit/i.test(this.get('sniffer.vendorPrefix'));\n    }),\n    vendorProperty: function vendorProperty(name) {\n      return this.get('webkit') ? \"-webkit-\".concat(name.charAt(0)).concat(name.substring(1)) : name;\n    },\n    CSS: Ember.computed('webkit', function () {\n      var webkit = this.get('webkit');\n      return {\n        /* Constants */\n        TRANSITIONEND: \"transitionend\".concat(webkit ? ' webkitTransitionEnd' : ''),\n        ANIMATIONEND: \"animationend\".concat(webkit ? ' webkitAnimationEnd' : ''),\n        TRANSFORM: this.vendorProperty('transform'),\n        TRANSFORM_ORIGIN: this.vendorProperty('transformOrigin'),\n        TRANSITION: this.vendorProperty('transition'),\n        TRANSITION_DURATION: this.vendorProperty('transitionDuration'),\n        ANIMATION_PLAY_STATE: this.vendorProperty('animationPlayState'),\n        ANIMATION_DURATION: this.vendorProperty('animationDuration'),\n        ANIMATION_NAME: this.vendorProperty('animationName'),\n        ANIMATION_TIMING: this.vendorProperty('animationTimingFunction'),\n        ANIMATION_DIRECTION: this.vendorProperty('animationDirection')\n      };\n    }),\n    KEYCODE: Ember.Object.create({\n      ENTER: 13,\n      ESCAPE: 27,\n      SPACE: 32,\n      LEFT_ARROW: 37,\n      UP_ARROW: 38,\n      RIGHT_ARROW: 39,\n      DOWN_ARROW: 40,\n      TAB: 9\n    }),\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    MEDIA: {\n      'xs': '(max-width: 599px)',\n      'gt-xs': '(min-width: 600px)',\n      'sm': '(min-width: 600px) and (max-width: 959px)',\n      'gt-sm': '(min-width: 960px)',\n      'md': '(min-width: 960px) and (max-width: 1279px)',\n      'gt-md': '(min-width: 1280px)',\n      'lg': '(min-width: 1280px) and (max-width: 1919px)',\n      'gt-lg': '(min-width: 1920px)',\n      'xl': '(min-width: 1920px)',\n      'print': 'print'\n    },\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    MEDIA_PRIORITY: ['xl', 'gt-lg', 'lg', 'gt-md', 'md', 'gt-sm', 'sm', 'gt-xs', 'xs', 'print']\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/services/in-viewport\", [\"exports\", \"ember-in-viewport/services/in-viewport\"], function (_exports, _inViewport) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _inViewport.default;\n    }\n  });\n});","define(\"ember-blog/services/infinity\", [\"exports\", \"ember-infinity/services/infinity\"], function (_exports, _infinity) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _infinity.default;\n    }\n  });\n});","define(\"ember-blog/services/paper-sidenav\", [\"exports\", \"ember-paper/services/paper-sidenav\"], function (_exports, _paperSidenav) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperSidenav.default;\n    }\n  });\n});","define(\"ember-blog/services/paper-theme\", [\"exports\", \"ember-paper/services/paper-theme\"], function (_exports, _paperTheme) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperTheme.default;\n    }\n  });\n});","define(\"ember-blog/services/paper-toaster\", [\"exports\", \"ember-paper/services/paper-toaster\"], function (_exports, _paperToaster) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _paperToaster.default;\n    }\n  });\n});","define(\"ember-blog/services/sniffer\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var isString = function isString(value) {\n    return typeof value === 'string';\n  };\n\n  var lowercase = function lowercase(string) {\n    return isString(string) ? string.toLowerCase() : string;\n  };\n\n  var toInt = function toInt(str) {\n    return parseInt(str, 10);\n  };\n\n  var _default = Ember.Service.extend({\n    vendorPrefix: '',\n    transitions: false,\n    animations: false,\n    _document: null,\n    _window: null,\n    android: Ember.computed('', function () {\n      return toInt((/android (\\d+)/.exec(lowercase((this.get('_window').navigator || {}).userAgent)) || [])[1]);\n    }),\n    init: function init() {\n      this._super.apply(this, arguments);\n\n      if (typeof FastBoot !== 'undefined') {\n        return;\n      }\n\n      var _document = document;\n      var _window = window;\n      this.setProperties({\n        _document: _document,\n        _window: _window\n      });\n      var bodyStyle = _document.body && _document.body.style;\n      var vendorPrefix, match;\n      var vendorRegex = /^(Moz|webkit|ms)(?=[A-Z])/;\n      var transitions = false;\n      var animations = false;\n\n      if (bodyStyle) {\n        for (var prop in bodyStyle) {\n          match = vendorRegex.exec(prop);\n\n          if (match) {\n            vendorPrefix = match[0];\n            vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1);\n            break;\n          }\n        }\n\n        if (!vendorPrefix) {\n          vendorPrefix = 'WebkitOpacity' in bodyStyle && 'webkit';\n        }\n\n        transitions = !!('transition' in bodyStyle || \"\".concat(vendorPrefix, \"Transition\") in bodyStyle);\n        animations = !!('animation' in bodyStyle || \"\".concat(vendorPrefix, \"Animation\") in bodyStyle);\n\n        if (this.get('android') && (!transitions || !animations)) {\n          transitions = isString(bodyStyle.webkitTransition);\n          animations = isString(bodyStyle.webkitAnimation);\n        }\n      }\n\n      this.set('transitions', transitions);\n      this.set('animations', animations);\n      this.set('vendorPrefix', vendorPrefix);\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/services/store\", [\"exports\", \"ember-data/store\"], function (_exports, _store) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _store.default;\n    }\n  });\n});","define(\"ember-blog/services/text-measurer\", [\"exports\", \"ember-text-measurer/services/text-measurer\"], function (_exports, _textMeasurer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _textMeasurer.default;\n    }\n  });\n});","define(\"ember-blog/templates/application\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"6ii9enIr\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,0,0,0,[31,31,3,[27,[26,1,\\\"CallHead\\\"],[]],null,[[\\\"onRoute\\\"],[[31,44,6,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,0],[]],\\\"onRoute\\\"],null]]]]],[1,1,0,0,\\\"\\\\n\\\"],[1,0,0,0,[31,66,12,[27,[26,3,\\\"CallHead\\\"],[]],null,[[\\\"category\\\"],[[27,[26,2,\\\"Expression\\\"],[]]]]]],[1,1,0,0,\\\"\\\\n\\\\n\\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"application_container layout-row layout-align-center\\\",null],[10],[1,1,0,0,\\\"\\\\n  \\\"],[1,0,0,0,[31,0,0,[27,[26,5,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,4,\\\"CallHead\\\"],[]],null,null]],null]],[1,1,0,0,\\\"\\\\n\\\"],[11]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"action\\\",\\\"nav\\\",\\\"category\\\",\\\"sidebar-left\\\",\\\"-outlet\\\",\\\"component\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/application.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/callback\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"WnM9KZWh\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],null,null]],null]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"-outlet\\\",\\\"component\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/callback.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/category\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"FTekrKs0\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],null,null]],null]]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"-outlet\\\",\\\"component\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/category.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/article-body\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"lXsrcR3y\",\n    \"block\": \"{\\\"symbols\\\":[\\\"value\\\"],\\\"statements\\\":[[5,[27,[26,7,\\\"BlockHead\\\"],[]],[[27,[26,6,\\\"Expression\\\"],[]]],null,[[\\\"default\\\",\\\"else\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"  \\\"],[1,0,0,0,[27,[26,5,\\\"AppendSingleId\\\"],[]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,1,0,0,\\\"  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"flex-container demo-items\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,3,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,2,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,2,\\\"CallHead\\\"],[]],[[27,[26,1,\\\"Expression\\\"],[]]],null]],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,127,12,[27,[26,0,\\\"CallHead\\\"],[]],null,[[\\\"value\\\"],[[27,[24,1],[]]]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n    \\\"],[1,0,0,0,[31,183,15,[27,[26,4,\\\"CallHead\\\"],[]],null,[[\\\"infinityModel\\\",\\\"loadingText\\\",\\\"loadedText\\\"],[[27,[26,1,\\\"Expression\\\"],[]],\\\"Loading Contents...\\\",\\\"All Results Loaded...\\\"]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"article-list\\\",\\\"posts\\\",\\\"-track-array\\\",\\\"each\\\",\\\"infinity-loader\\\",\\\"content-load\\\",\\\"isLoading\\\",\\\"if\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/article-body.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/article-list\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"aswpyNFU\",\n    \"block\": \"{\\\"symbols\\\":[\\\"card\\\",\\\"title\\\",\\\"text\\\"],\\\"statements\\\":[[5,[27,[26,11,\\\"BlockHead\\\"],[]],null,[[\\\"class\\\"],[[27,[26,10,\\\"Expression\\\"],[]]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"  \\\"],[9,\\\"a\\\",true],[12,\\\"class\\\",\\\"postCardStyle\\\",null],[13,\\\"href\\\",[31,84,7,[27,[26,9,\\\"CallHead\\\"],[]],[\\\"post\\\",[27,[26,0,\\\"Expression\\\"],[\\\"id\\\"]]],null],null],[10],[1,1,0,0,\\\"\\\\n    \\\"],[1,0,0,0,[31,0,0,[27,[26,8,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,7,\\\"CallHead\\\"],[]],[[27,[24,1],[\\\"image\\\"]],\\\"expected `card.image` to be a contextual component but found a string. Did you mean `(component card.image)`? ('ember-blog/templates/components/article-list.hbs' @ L3:C6) \\\"],null]],[[\\\"src\\\",\\\"alt\\\",\\\"title\\\"],[[27,[26,0,\\\"Expression\\\"],[\\\"img\\\"]],[27,[26,0,\\\"Expression\\\"],[\\\"title\\\"]],[27,[26,0,\\\"Expression\\\"],[\\\"title\\\"]]]]]],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,8,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,7,\\\"CallHead\\\"],[]],[[27,[24,1],[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('ember-blog/templates/components/article-list.hbs' @ L4:C7) \\\"],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[5,[27,[26,8,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,7,\\\"CallHead\\\"],[]],[[27,[24,2],[\\\"text\\\"]],\\\"expected `title.text` to be a contextual component but found a string. Did you mean `(component title.text)`? ('ember-blog/templates/components/article-list.hbs' @ L5:C9) \\\"],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"        \\\"],[5,[27,[26,8,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,7,\\\"CallHead\\\"],[]],[[27,[24,3],[\\\"headline\\\"]],\\\"expected `text.headline` to be a contextual component but found a string. Did you mean `(component text.headline)`? ('ember-blog/templates/components/article-list.hbs' @ L6:C11) \\\"],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,0,0,0,[27,[26,0,\\\"Expression\\\"],[\\\"title\\\"]]]],\\\"parameters\\\":[]}]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]}]]]],\\\"parameters\\\":[2]}]]],[5,[27,[26,8,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,7,\\\"CallHead\\\"],[]],[[27,[24,1],[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('ember-blog/templates/components/article-list.hbs' @ L9:C7) \\\"],null]],[[\\\"class\\\"],[\\\"postCardContentStyle\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,403,13,[27,[26,6,\\\"CallHead\\\"],[]],[[27,[26,0,\\\"Expression\\\"],[\\\"text\\\"]]],[[\\\"limit\\\"],[140]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,8,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,7,\\\"CallHead\\\"],[]],[[27,[24,1],[\\\"actions\\\"]],\\\"expected `card.actions` to be a contextual component but found a string. Did you mean `(component card.actions)`? ('ember-blog/templates/components/article-list.hbs' @ L13:C5) \\\"],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[5,[27,[26,5,\\\"BlockHead\\\"],[]],null,[[\\\"iconButton\\\",\\\"onClick\\\"],[true,[31,685,12,[27,[26,4,\\\"CallHead\\\"],[]],[\\\"updateLike\\\",[27,[26,0,\\\"Expression\\\"],[\\\"id\\\"]]],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,731,10,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[26,3,\\\"Expression\\\"],[]]],null]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]],[5,[27,[26,5,\\\"BlockHead\\\"],[]],null,[[\\\"iconButton\\\"],[true]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,824,10,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[26,0,\\\"Expression\\\"],[\\\"iconButtonList\\\",\\\"share\\\"]]],null]],[1,1,0,0,\\\"\\\\n      \\\"],[1,0,0,0,[31,872,18,[27,[26,2,\\\"CallHead\\\"],[]],null,[[\\\"url\\\",\\\"quote\\\",\\\"text\\\",\\\"imageUrl\\\"],[[27,[26,0,\\\"Expression\\\"],[\\\"url\\\"]],[27,[26,0,\\\"Expression\\\"],[\\\"title\\\"]],[27,[26,0,\\\"Expression\\\"],[\\\"text\\\"]],[27,[26,0,\\\"Expression\\\"],[\\\"img\\\"]]]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]]],\\\"parameters\\\":[]}]]]],\\\"parameters\\\":[1]}]]]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"value\\\",\\\"paper-icon\\\",\\\"article-share-menu\\\",\\\"oneTimeIcon\\\",\\\"route-action\\\",\\\"paper-button\\\",\\\"truncate-text\\\",\\\"-assert-implicit-component-helper-argument\\\",\\\"component\\\",\\\"href-to\\\",\\\"mdWhiteframe_10dp\\\",\\\"paper-card\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/article-list.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/article-share-menu\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"2Mc89R9Q\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[5,[27,[26,9,\\\"BlockHead\\\"],[]],null,[[\\\"event\\\"],[\\\"click\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"  \\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"url\\\",\\\"quote\\\"],[[27,[26,1,\\\"Expression\\\"],[]],[27,[26,0,\\\"Expression\\\"],[]]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"Share\\\"]],\\\"parameters\\\":[]}]]],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"\\\\n  \\\"],[5,[27,[26,3,\\\"BlockHead\\\"],[]],null,[[\\\"url\\\",\\\"title\\\",\\\"via\\\"],[[27,[26,1,\\\"Expression\\\"],[]],[27,[26,0,\\\"Expression\\\"],[]],[27,[26,1,\\\"Expression\\\"],[]]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"Tweet\\\"]],\\\"parameters\\\":[]}]]],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"\\\\n  \\\"],[5,[27,[26,6,\\\"BlockHead\\\"],[]],null,[[\\\"title\\\",\\\"text\\\",\\\"image\\\"],[[27,[26,0,\\\"Expression\\\"],[]],[27,[26,5,\\\"Expression\\\"],[]],[27,[26,4,\\\"Expression\\\"],[]]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"Share\\\"]],\\\"parameters\\\":[]}]]],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"\\\\n  \\\"],[5,[27,[26,7,\\\"BlockHead\\\"],[]],null,[[\\\"title\\\",\\\"text\\\"],[[27,[26,0,\\\"Expression\\\"],[]],[27,[26,5,\\\"Expression\\\"],[]]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"Share\\\"]],\\\"parameters\\\":[]}]]],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"\\\\n  \\\"],[5,[27,[26,8,\\\"BlockHead\\\"],[]],null,[[\\\"title\\\",\\\"url\\\"],[[27,[26,0,\\\"Expression\\\"],[]],[27,[26,1,\\\"Expression\\\"],[]]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"Share\\\"]],\\\"parameters\\\":[]}]]],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"quote\\\",\\\"url\\\",\\\"fb-share-button\\\",\\\"twitter-share-button\\\",\\\"imageUrl\\\",\\\"text\\\",\\\"linkedin-share-button\\\",\\\"email-share-button\\\",\\\"reddit-share-button\\\",\\\"ember-popover\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/article-share-menu.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/bear-list\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"+CQwWxGe\",\n    \"block\": \"{\\\"symbols\\\":[\\\"bear\\\"],\\\"statements\\\":[[9,\\\"div\\\",true],[10],[1,1,0,0,\\\"\\\\n  Bear -\\\\n  (\\\\n  \\\"],[1,0,0,0,[27,[26,2,\\\"AppendSingleId\\\"],[]]],[1,1,0,0,\\\"\\\\n  )\\\\n\\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[9,\\\"div\\\",true],[10],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"ul\\\",true],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,5,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,4,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,4,\\\"CallHead\\\"],[]],[[27,[26,3,\\\"Expression\\\"],[]]],null]],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[9,\\\"li\\\",false],[23,\\\"role\\\",\\\"button\\\",null],[3,0,0,[27,[26,0,\\\"ModifierHead\\\"],[]],[[27,[24,0],[]],\\\"favorite\\\",[27,[24,1],[]]],null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,1,\\\"BlockHead\\\"],[]],[[27,[24,1],[\\\"favorited\\\"]]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"          🥁\\\\n\\\"]],\\\"parameters\\\":[]}]]],[1,1,0,0,\\\"        \\\"],[1,0,0,0,[27,[24,1],[\\\"name\\\"]]],[1,1,0,0,\\\"\\\\n      \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"button\\\",false],[3,0,0,[27,[26,0,\\\"ModifierHead\\\"],[]],[[27,[24,0],[]],\\\"showMore\\\"],null],[10],[1,1,0,0,\\\"\\\\n    Show more\\\\n  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"button\\\",false],[3,0,0,[27,[26,0,\\\"ModifierHead\\\"],[]],[[27,[24,0],[]],\\\"checkModel\\\"],null],[10],[1,1,0,0,\\\"\\\\n    check Model\\\\n  \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[11],[1,1,0,0,\\\"\\\\n\\\\n\\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"\\\\n\\\\nYou have favorited \\\"],[1,0,0,0,[27,[26,6,\\\"AppendSingleId\\\"],[]]],[1,1,0,0,\\\" Bears\\\"]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"action\\\",\\\"if\\\",\\\"totalBears\\\",\\\"bears\\\",\\\"-track-array\\\",\\\"each\\\",\\\"favoritedBears\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/bear-list.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/content-load\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"pXnBMs4P\",\n    \"block\": \"{\\\"symbols\\\":[\\\"placeholder\\\",\\\"placeholder\\\",\\\"placeholder\\\",\\\"placeholder\\\",\\\"placeholder\\\",\\\"placeholder\\\",\\\"placeholder\\\",\\\"placeholder\\\"],\\\"statements\\\":[[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"flex-container demo-items\\\",null],[10],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"loadingStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"className\\\"],[\\\"\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,8],[\\\"heading\\\"]],\\\"expected `placeholder.heading` to be a contextual component but found a string. Did you mean `(component placeholder.heading)`? ('ember-blog/templates/components/content-load.hbs' @ L4:C8) \\\"],null]],[[\\\"img\\\"],[true]]]],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,8],[\\\"text\\\"]],\\\"expected `placeholder.text` to be a contextual component but found a string. Did you mean `(component placeholder.text)`? ('ember-blog/templates/components/content-load.hbs' @ L4:C40) \\\"],null]],[[\\\"lines\\\"],[13]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"loadingStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"className\\\"],[\\\"\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,7],[\\\"heading\\\"]],\\\"expected `placeholder.heading` to be a contextual component but found a string. Did you mean `(component placeholder.heading)`? ('ember-blog/templates/components/content-load.hbs' @ L9:C8) \\\"],null]],[[\\\"img\\\"],[true]]]],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,7],[\\\"text\\\"]],\\\"expected `placeholder.text` to be a contextual component but found a string. Did you mean `(component placeholder.text)`? ('ember-blog/templates/components/content-load.hbs' @ L9:C40) \\\"],null]],[[\\\"lines\\\"],[13]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"loadingStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"className\\\"],[\\\"\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,6],[\\\"heading\\\"]],\\\"expected `placeholder.heading` to be a contextual component but found a string. Did you mean `(component placeholder.heading)`? ('ember-blog/templates/components/content-load.hbs' @ L14:C8) \\\"],null]],[[\\\"img\\\"],[true]]]],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,6],[\\\"text\\\"]],\\\"expected `placeholder.text` to be a contextual component but found a string. Did you mean `(component placeholder.text)`? ('ember-blog/templates/components/content-load.hbs' @ L14:C40) \\\"],null]],[[\\\"lines\\\"],[13]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"loadingStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"className\\\"],[\\\"\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,5],[\\\"heading\\\"]],\\\"expected `placeholder.heading` to be a contextual component but found a string. Did you mean `(component placeholder.heading)`? ('ember-blog/templates/components/content-load.hbs' @ L19:C8) \\\"],null]],[[\\\"img\\\"],[true]]]],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,5],[\\\"text\\\"]],\\\"expected `placeholder.text` to be a contextual component but found a string. Did you mean `(component placeholder.text)`? ('ember-blog/templates/components/content-load.hbs' @ L19:C40) \\\"],null]],[[\\\"lines\\\"],[13]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n   \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"loadingStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"className\\\"],[\\\"\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,4],[\\\"heading\\\"]],\\\"expected `placeholder.heading` to be a contextual component but found a string. Did you mean `(component placeholder.heading)`? ('ember-blog/templates/components/content-load.hbs' @ L24:C8) \\\"],null]],[[\\\"img\\\"],[true]]]],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,4],[\\\"text\\\"]],\\\"expected `placeholder.text` to be a contextual component but found a string. Did you mean `(component placeholder.text)`? ('ember-blog/templates/components/content-load.hbs' @ L24:C40) \\\"],null]],[[\\\"lines\\\"],[13]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"loadingStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"className\\\"],[\\\"\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,3],[\\\"heading\\\"]],\\\"expected `placeholder.heading` to be a contextual component but found a string. Did you mean `(component placeholder.heading)`? ('ember-blog/templates/components/content-load.hbs' @ L29:C8) \\\"],null]],[[\\\"img\\\"],[true]]]],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,3],[\\\"text\\\"]],\\\"expected `placeholder.text` to be a contextual component but found a string. Did you mean `(component placeholder.text)`? ('ember-blog/templates/components/content-load.hbs' @ L29:C40) \\\"],null]],[[\\\"lines\\\"],[13]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"loadingStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"className\\\"],[\\\"\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,2],[\\\"heading\\\"]],\\\"expected `placeholder.heading` to be a contextual component but found a string. Did you mean `(component placeholder.heading)`? ('ember-blog/templates/components/content-load.hbs' @ L34:C8) \\\"],null]],[[\\\"img\\\"],[true]]]],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,2],[\\\"text\\\"]],\\\"expected `placeholder.text` to be a contextual component but found a string. Did you mean `(component placeholder.text)`? ('ember-blog/templates/components/content-load.hbs' @ L34:C40) \\\"],null]],[[\\\"lines\\\"],[13]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"loadingStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"className\\\"],[\\\"\\\"]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,1],[\\\"heading\\\"]],\\\"expected `placeholder.heading` to be a contextual component but found a string. Did you mean `(component placeholder.heading)`? ('ember-blog/templates/components/content-load.hbs' @ L39:C8) \\\"],null]],[[\\\"img\\\"],[true]]]],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,1],[\\\"text\\\"]],\\\"expected `placeholder.text` to be a contextual component but found a string. Did you mean `(component placeholder.text)`? ('ember-blog/templates/components/content-load.hbs' @ L39:C40) \\\"],null]],[[\\\"lines\\\"],[13]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[11]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"-assert-implicit-component-helper-argument\\\",\\\"component\\\",\\\"content-placeholders\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/content-load.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/infinity-loader\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"T+/mPWTe\",\n    \"block\": \"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[5,[27,[26,3,\\\"BlockHead\\\"],[]],[[28,[24,1]]],null,[[\\\"default\\\",\\\"else\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"  \\\"],[16,1,[[27,[26,4,\\\"Expression\\\"],[]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[5,[27,[26,3,\\\"BlockHead\\\"],[]],[[27,[26,2,\\\"Expression\\\"],[]]],null,[[\\\"default\\\",\\\"else\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    \\\"],[9,\\\"span\\\",true],[10],[1,0,0,0,[27,[26,1,\\\"AppendSingleId\\\"],[]]],[11],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,1,0,0,\\\"    \\\"],[9,\\\"span\\\",true],[10],[1,0,0,0,[27,[26,0,\\\"AppendSingleId\\\"],[]]],[11],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]]],\\\"parameters\\\":[]}]]]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"loadingText\\\",\\\"loadedText\\\",\\\"isDoneLoading\\\",\\\"if\\\",\\\"infinityModelContent\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/infinity-loader.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/loader\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"Wr8iyF/Y\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,0,0,0,[31,2,21,[27,[26,1,\\\"CallHead\\\"],[]],null,[[\\\"accent\\\",\\\"value\\\"],[true,[27,[26,0,\\\"Expression\\\"],[]]]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"determinateValue\\\",\\\"paper-progress-linear\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/loader.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/loading\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"e1WSwUIg\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,1,0,0,\\\"I am loading from component...\\\"]],\\\"hasEval\\\":false,\\\"upvars\\\":[]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/loading.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/nav\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"MpWT0LMQ\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"layout-row layout-align-space-around-center\\\",null],[10],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"flex\\\",null],[10],[1,1,0,0,\\\"\\\\n    \\\"],[9,\\\"img\\\",true],[12,\\\"class\\\",\\\"application_tmp_img\\\",null],[12,\\\"alt\\\",\\\"blog\\\",null],[12,\\\"src\\\",\\\"https://www.shijiezhou.com/images/newlogo.png\\\",null],[12,\\\"style\\\",\\\"padding:2px;\\\",null],[10],[11],[1,1,0,0,\\\"\\\\n\\\\n  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"flex-50\\\",null],[10],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"flex\\\",null],[10],[1,1,0,0,\\\"\\\\n    \\\"],[9,\\\"i\\\",true],[12,\\\"class\\\",\\\"material-icons\\\",null],[10],[1,1,0,0,\\\"\\\\n      search\\\\n    \\\"],[11],[1,1,0,0,\\\"\\\\n    \\\"],[9,\\\"i\\\",true],[12,\\\"class\\\",\\\"material-icons\\\",null],[10],[1,1,0,0,\\\"\\\\n      notification_important\\\\n    \\\"],[11],[1,1,0,0,\\\"\\\\n    \\\"],[9,\\\"img\\\",true],[12,\\\"src\\\",\\\"https://cdn-images-1.medium.com/fit/c/64/64/0*b90Ej2bAcyCdYYuY\\\",null],[12,\\\"alt\\\",\\\"user image\\\",null],[12,\\\"width\\\",\\\"30px\\\",null],[12,\\\"height\\\",\\\"30px\\\",null],[12,\\\"style\\\",\\\"padding:2px;\\\",null],[10],[11],[1,1,0,0,\\\"\\\\n\\\\n  \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"menu-list-items layout-row layout-align-center\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"onClick\\\"],[[31,749,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],[27,[26,0,\\\"Expression\\\"],[]],\\\"home\\\"],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    HOME\\\\n\\\"]],\\\"parameters\\\":[]}]]],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"onClick\\\"],[[31,830,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],[27,[26,0,\\\"Expression\\\"],[]],\\\"self\\\"],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    SELF\\\\n\\\"]],\\\"parameters\\\":[]}]]],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"onClick\\\"],[[31,911,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],[27,[26,0,\\\"Expression\\\"],[]],\\\"tech\\\"],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    TECH\\\\n\\\"]],\\\"parameters\\\":[]}]]],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"onClick\\\"],[[31,992,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],[27,[26,0,\\\"Expression\\\"],[]],\\\"heated\\\"],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    HEATED\\\\n\\\"]],\\\"parameters\\\":[]}]]],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"onClick\\\"],[[31,1077,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],[27,[26,0,\\\"Expression\\\"],[]],\\\"design\\\"],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    DESIGN\\\\n\\\"]],\\\"parameters\\\":[]}]]],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,[[\\\"onClick\\\"],[[31,1162,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],[27,[26,0,\\\"Expression\\\"],[]],\\\"more\\\"],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    MORE\\\\n\\\"]],\\\"parameters\\\":[]}]]],[11]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"onRoute\\\",\\\"action\\\",\\\"paper-button\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/nav.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/sidebar-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"XDcxW5Z+\",\n    \"block\": \"{\\\"symbols\\\":[\\\"cat\\\"],\\\"statements\\\":[[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"sidebar-index\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,7,\\\"BlockHead\\\"],[]],null,null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    \\\"],[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"Navigation\\\"]],\\\"parameters\\\":[]}]]],[1,1,0,0,\\\"\\\\n    \\\"],[1,0,0,0,[27,[26,3,\\\"AppendSingleId\\\"],[]]],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,6,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,5,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,5,\\\"CallHead\\\"],[]],[[27,[26,4,\\\"Expression\\\"],[]]],null]],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[5,[27,[26,1,\\\"BlockHead\\\"],[]],null,[[\\\"class\\\",\\\"onClick\\\"],[\\\"md-body-2\\\",[31,279,6,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,0],[]],\\\"setCategory\\\",[27,[24,1],[\\\"title\\\"]]],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"        \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"md-list-item-text\\\",null],[10],[1,1,0,0,\\\"\\\\n          \\\"],[9,\\\"div\\\",true],[10],[1,1,0,0,\\\"\\\\n            # \\\"],[1,0,0,0,[27,[24,1],[\\\"title\\\"]]],[1,1,0,0,\\\"\\\\n          \\\"],[11],[1,1,0,0,\\\"\\\\n        \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]]],\\\"parameters\\\":[1]}]]]],\\\"parameters\\\":[]}]]],[11]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"action\\\",\\\"paper-item\\\",\\\"paper-subheader\\\",\\\"paper-divider\\\",\\\"category\\\",\\\"-track-array\\\",\\\"each\\\",\\\"paper-list\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/sidebar-left.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/sidebar-right\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"6Kf/bVgL\",\n    \"block\": \"{\\\"symbols\\\":[\\\"item\\\",\\\"idx\\\",\\\"&default\\\"],\\\"statements\\\":[[1,1,0,0,\\\"\\\\n\\\"],[1,1,0,0,\\\"\\\\n\\\"],[9,\\\"ul\\\",true],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,3,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,2,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,2,\\\"CallHead\\\"],[]],[[27,[26,1,\\\"Expression\\\"],[]]],null]],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"  \\\"],[9,\\\"li\\\",false],[23,\\\"class\\\",\\\"directionStyle\\\",null],[23,\\\"role\\\",\\\"link\\\",null],[3,0,0,[27,[26,0,\\\"ModifierHead\\\"],[]],[[27,[24,0],[]],\\\"scrollTopPos\\\",[27,[24,2],[]]],null],[10],[1,1,0,0,[27,[24,1],[]]],[11],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]}]]],[11],[1,1,0,0,\\\"\\\\n\\\\n\\\"],[5,[27,[26,4,\\\"BlockHead\\\"],[]],[[28,[24,3]]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"  \\\"],[16,3,null],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"action\\\",\\\"hello\\\",\\\"-track-array\\\",\\\"each\\\",\\\"if\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/sidebar-right.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/components/sidebar-wrap-left\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"BjtcNy2T\",\n    \"block\": \"{\\\"symbols\\\":[\\\"card\\\",\\\"title\\\"],\\\"statements\\\":[[5,[27,[26,2,\\\"BlockHead\\\"],[]],null,null,[[\\\"default\\\"],[{\\\"statements\\\":[[5,[27,[26,1,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,1],[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('ember-blog/templates/components/sidebar-wrap-left.hbs' @ L2:C5) \\\"],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    \\\"],[1,0,0,0,[31,0,0,[27,[26,1,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,2],[\\\"media\\\"]],\\\"expected `title.media` to be a contextual component but found a string. Did you mean `(component title.media)`? ('ember-blog/templates/components/sidebar-wrap-left.hbs' @ L7:C6) \\\"],null]],[[\\\"size\\\",\\\"src\\\",\\\"alt\\\",\\\"title\\\"],[\\\"lg\\\",\\\"http://miguelcobain.github.io/ember-paper/tomster-9918e85a7f1a28c78b484c34cbe88579.png\\\",\\\"Tomster\\\",\\\"Tomster\\\"]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]}]]]],\\\"parameters\\\":[1]}]]]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"-assert-implicit-component-helper-argument\\\",\\\"component\\\",\\\"paper-card\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/components/sidebar-wrap-left.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/design\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"WertukPl\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[9,\\\"h3\\\",true],[10],[1,1,0,0,\\\"\\\\n  Design\\\\n\\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[1,0,0,0,[31,22,9,[27,[26,1,\\\"CallHead\\\"],[]],null,[[\\\"model\\\"],[[27,[26,0,\\\"Expression\\\"],[]]]]]]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"model\\\",\\\"bear-list\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/design.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/heated\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"3uNC4eJB\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"postContentStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[9,\\\"h3\\\",true],[10],[1,1,0,0,\\\"Introduction:\\\"],[11],[1,1,0,0,\\\"\\\\n\\\\n\\\"],[9,\\\"b\\\",true],[10],[1,1,0,0,\\\"Living life openly. This year I set the following goals. Below you can find\\\\n  the progress on each.\\\"],[11],[1,1,0,0,\\\"\\\\n\\\\n\\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"Software Engineer at MMSG\\\\n\\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"location\\\\n\\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"Salt Lake City\\\\n\\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"education\\\\n\\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"University of California, San Diego | B.A.\\\\n\\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"joined\\\\n\\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"Mar 21, 2019\\\\n\\\\n\\\"],[11]],\\\"hasEval\\\":false,\\\"upvars\\\":[]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/heated.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/home\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"h+kR4juV\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,0,0,0,[27,[26,0,\\\"AppendSingleId\\\"],[]]]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"article-body\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/home.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/post\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"cTCeH9ho\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[5,[27,[26,2,\\\"BlockHead\\\"],[]],[[27,[26,0,\\\"Expression\\\"],[]]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"  \\\"],[1,0,0,0,[31,18,13,[27,[26,1,\\\"CallHead\\\"],[]],null,[[\\\"class\\\",\\\"hello\\\"],[\\\"application_float_card_right md-padding md-whiteframe-1dp\\\",[27,[26,0,\\\"Expression\\\"],[]]]]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"postContentStyle\\\",null],[10],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"img\\\",true],[13,\\\"src\\\",[27,[26,3,\\\"AppendSingleId\\\"],[\\\"img\\\"]],null],[13,\\\"alt\\\",[27,[26,3,\\\"AppendSingleId\\\"],[\\\"title\\\"]],null],[12,\\\"draggable\\\",\\\"false\\\",null],[10],[11],[1,1,0,0,\\\"\\\\n  \\\"],[1,1,0,0,[27,[26,4,\\\"AppendSingleId\\\"],[]]],[1,1,0,0,\\\"\\\\n\\\"],[11]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"hello\\\",\\\"sidebar-right\\\",\\\"if\\\",\\\"model\\\",\\\"currentMarkdown\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/post.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/self-loading\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"k3x/2jan\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[1,1,0,0,\\\"It is loading self page...\\\"]],\\\"hasEval\\\":false,\\\"upvars\\\":[]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/self-loading.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/self\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"pr7+6IGJ\",\n    \"block\": \"{\\\"symbols\\\":[],\\\"statements\\\":[[9,\\\"iframe\\\",true],[12,\\\"class\\\",\\\"pdfSetting\\\",null],[12,\\\"src\\\",\\\"/assets/resume.pdf\\\",null],[12,\\\"frameborder\\\",\\\"0\\\",null],[10],[11]],\\\"hasEval\\\":false,\\\"upvars\\\":[]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/self.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/templates/tech\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n\n  var _default = Ember.HTMLBars.template({\n    \"id\": \"f+h3wq8R\",\n    \"block\": \"{\\\"symbols\\\":[\\\"value\\\",\\\"key\\\",\\\"size\\\"],\\\"statements\\\":[[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"\\\",null],[10],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"layout-row layout-align-center\\\",null],[10],[1,1,0,0,\\\"\\\\n    \\\"],[9,\\\"h3\\\",true],[10],[1,1,0,0,\\\"\\\\n      Tech\\\\n    \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[11],[1,1,0,0,\\\"\\\\n  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"layout-row layout-align-center\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,5,\\\"BlockHead\\\"],[]],null,[[\\\"options\\\",\\\"label\\\",\\\"required\\\",\\\"selected\\\",\\\"onChange\\\"],[[27,[26,4,\\\"Expression\\\"],[]],\\\"Size\\\",true,[27,[26,3,\\\"Expression\\\"],[]],[31,267,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],[31,275,3,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[26,3,\\\"Expression\\\"],[]]],null]],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      \\\"],[1,0,0,0,[27,[24,3],[]]],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,6,\\\"BlockHead\\\"],[]],[[27,[26,3,\\\"Expression\\\"],[]]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"layout-row layout-align-center\\\",null],[10],[1,1,0,0,\\\"\\\\n      CURRENT NUM:\\\\n      \\\"],[1,0,0,0,[27,[26,3,\\\"AppendSingleId\\\"],[]]],[1,1,0,0,\\\"\\\\n    \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]]],[5,[27,[26,9,\\\"BlockHead\\\"],[]],[[31,0,0,[27,[26,8,\\\"CallHead\\\"],[]],[[31,0,0,[27,[26,8,\\\"CallHead\\\"],[]],[[27,[26,7,\\\"Expression\\\"],[]]],null]],null]],null,[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"    \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"layout-row layout-align-center\\\",null],[10],[1,1,0,0,\\\"\\\\n      \\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"key === \\\"],[1,0,0,0,[27,[24,2],[]]],[1,1,0,0,\\\"\\\\n      \\\"],[9,\\\"br\\\",true],[10],[11],[1,1,0,0,\\\"value address === \\\"],[1,0,0,0,[27,[24,1],[\\\"address\\\"]]],[1,1,0,0,\\\"\\\\n      \\\"],[1,0,0,0,[31,650,11,[27,[26,2,\\\"CallHead\\\"],[]],null,[[\\\"label\\\",\\\"value\\\",\\\"onChange\\\",\\\"required\\\"],[[27,[24,1],[\\\"name\\\"]],[27,[24,1],[\\\"address\\\"]],[31,733,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],[31,741,3,[27,[26,0,\\\"CallHead\\\"],[]],[[27,[24,1],[\\\"address\\\"]]],null]],null],true]]]],[1,1,0,0,\\\"\\\\n    \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]}]]],[1,1,0,0,\\\"  \\\"],[9,\\\"div\\\",true],[12,\\\"class\\\",\\\"layout-row layout-align-center\\\",null],[10],[1,1,0,0,\\\"\\\\n\\\"],[5,[27,[26,10,\\\"BlockHead\\\"],[]],null,[[\\\"onClick\\\"],[[31,891,6,[27,[26,1,\\\"CallHead\\\"],[]],[[27,[24,0],[]],\\\"flatButton\\\"],null]]],[[\\\"default\\\"],[{\\\"statements\\\":[[1,1,0,0,\\\"      Button with action\\\\n\\\"]],\\\"parameters\\\":[]}]]],[1,1,0,0,\\\"  \\\"],[11],[1,1,0,0,\\\"\\\\n\\\"],[11]],\\\"hasEval\\\":false,\\\"upvars\\\":[\\\"mut\\\",\\\"action\\\",\\\"paper-input\\\",\\\"formSize\\\",\\\"sizes\\\",\\\"paper-select\\\",\\\"if\\\",\\\"formLists\\\",\\\"-track-array\\\",\\\"each\\\",\\\"paper-button\\\"]}\",\n    \"meta\": {\n      \"moduleName\": \"ember-blog/templates/tech.hbs\"\n    }\n  });\n\n  _exports.default = _default;\n});","define(\"ember-blog/tests/mirage/mirage.lint-test\", [], function () {\n  \"use strict\";\n\n  QUnit.module('ESLint | mirage');\n  QUnit.test('mirage/config.js', function (assert) {\n    assert.expect(1);\n    assert.ok(true, 'mirage/config.js should pass ESLint\\n\\n');\n  });\n  QUnit.test('mirage/fixtures/categories.js', function (assert) {\n    assert.expect(1);\n    assert.ok(true, 'mirage/fixtures/categories.js should pass ESLint\\n\\n');\n  });\n  QUnit.test('mirage/fixtures/posts-1.js', function (assert) {\n    assert.expect(1);\n    assert.ok(true, 'mirage/fixtures/posts-1.js should pass ESLint\\n\\n');\n  });\n  QUnit.test('mirage/fixtures/posts.js', function (assert) {\n    assert.expect(1);\n    assert.ok(true, 'mirage/fixtures/posts.js should pass ESLint\\n\\n');\n  });\n  QUnit.test('mirage/scenarios/default.js', function (assert) {\n    assert.expect(1);\n    assert.ok(true, 'mirage/scenarios/default.js should pass ESLint\\n\\n');\n  });\n  QUnit.test('mirage/serializers/application.js', function (assert) {\n    assert.expect(1);\n    assert.ok(true, 'mirage/serializers/application.js should pass ESLint\\n\\n');\n  });\n});","define(\"ember-blog/transforms/boolean\", [\"exports\", \"@ember-data/serializer/-private\"], function (_exports, _private) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _private.BooleanTransform;\n    }\n  });\n});","define(\"ember-blog/transforms/date\", [\"exports\", \"@ember-data/serializer/-private\"], function (_exports, _private) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _private.DateTransform;\n    }\n  });\n});","define(\"ember-blog/transforms/number\", [\"exports\", \"@ember-data/serializer/-private\"], function (_exports, _private) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _private.NumberTransform;\n    }\n  });\n});","define(\"ember-blog/transforms/string\", [\"exports\", \"@ember-data/serializer/-private\"], function (_exports, _private) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _private.StringTransform;\n    }\n  });\n});","define(\"ember-blog/utils/calculate-position\", [\"exports\", \"ember-basic-dropdown/utils/calculate-position\"], function (_exports, _calculatePosition) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _calculatePosition.default;\n    }\n  });\n});","define(\"ember-blog/utils/clamp\", [\"exports\", \"ember-paper/utils/clamp\"], function (_exports, _clamp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _clamp.default;\n    }\n  });\n});","\n","define('ember-blog/config/environment', [], function() {\n  var prefix = 'ember-blog';\ntry {\n  var metaName = prefix + '/config/environment';\n  var rawConfig = document.querySelector('meta[name=\"' + metaName + '\"]').getAttribute('content');\n  var config = JSON.parse(decodeURIComponent(rawConfig));\n\n  var exports = { 'default': config };\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n}\ncatch(err) {\n  throw new Error('Could not read config from meta tag with name \"' + metaName + '\".');\n}\n\n});\n","\n          if (!runningTests) {\n            require(\"ember-blog/app\")[\"default\"].create({\"name\":\"ember-blog\",\"version\":\"0.0.1+434e7c36\"});\n          }\n        \n"],"names":[],"mappings":"AAAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;","file":"ember-blog.js"}