diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..685c0635 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +charset = utf-8 +end_of_line = lf +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 + +# 2 space indentation +[*.yaml, *.yml] +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore index 0c7037ec..91b5e29e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ themes/grav/.sass-cache .DS_Store + +# Node Modules +**/node_modules/** diff --git a/admin.php b/admin.php index a44443d6..6c952952 100644 --- a/admin.php +++ b/admin.php @@ -571,7 +571,7 @@ class AdminPlugin extends Plugin $this->theme = $this->config->get('plugins.admin.theme', 'grav'); $assets = $this->grav['assets']; - $translations = 'if (!window.translations) window.translations = {}; ' . PHP_EOL . 'window.translations.PLUGIN_ADMIN = {};' . PHP_EOL; + $translations = 'this.GravAdmin = this.GravAdmin || {}; if (!this.GravAdmin.translations) this.GravAdmin.translations = {}; ' . PHP_EOL . 'this.GravAdmin.translations.PLUGIN_ADMIN = {'; // Enable language translations $translations_actual_state = $this->config->get('system.languages.translations'); @@ -597,13 +597,16 @@ class AdminPlugin extends Plugin 'DAYS', 'PAGE_MODES', 'PAGE_TYPES', - 'ACCESS_LEVELS' + 'ACCESS_LEVELS', + 'NOTHING_TO_SAVE' ]; foreach($strings as $string) { - $translations .= 'translations.PLUGIN_ADMIN.' . $string .' = "' . $this->admin->translate('PLUGIN_ADMIN.' . $string) . '"; ' . PHP_EOL;; + $separator = (end($strings) === $string) ? '' : ','; + $translations .= '"' . $string .'": "' . $this->admin->translate('PLUGIN_ADMIN.' . $string) . '"' . $separator; } + $translations .= '};'; // set the actual translations state back $this->config->set('system.languages.translations', $translations_actual_state); diff --git a/classes/controller.php b/classes/controller.php index 40f3bbbf..3982a843 100644 --- a/classes/controller.php +++ b/classes/controller.php @@ -447,6 +447,7 @@ class AdminController 'message' => $this->admin->translate('PLUGIN_ADMIN.YOUR_BACKUP_IS_READY_FOR_DOWNLOAD') . '. ' . $this->admin->translate('PLUGIN_ADMIN.DOWNLOAD_BACKUP') .'', 'toastr' => [ 'timeOut' => 0, + 'extendedTimeOut' => 0, 'closeButton' => true ] ]; @@ -576,7 +577,7 @@ class AdminController foreach ($page->media()->all() as $name => $media) { $media_list[$name] = ['url' => $media->cropZoom(150, 100)->url(), 'size' => $media->get('size')]; } - $this->admin->json_response = ['status' => 'ok', 'results' => $media_list]; + $this->admin->json_response = ['status' => 'success', 'results' => $media_list]; return true; } @@ -646,6 +647,7 @@ class AdminController return false; } + Cache::clearCache(); $this->admin->json_response = ['status' => 'success', 'message' => $this->admin->translate('PLUGIN_ADMIN.FILE_UPLOADED_SUCCESSFULLY')]; return true; @@ -675,6 +677,7 @@ class AdminController if (file_exists($targetPath)) { if (unlink($targetPath)) { + Cache::clearCache(); $this->admin->json_response = ['status' => 'success', 'message' => $this->admin->translate('PLUGIN_ADMIN.FILE_DELETED') . ': '.$filename]; } else { $this->admin->json_response = ['status' => 'error', 'message' => $this->admin->translate('PLUGIN_ADMIN.FILE_COULD_NOT_BE_DELETED') . ': '.$filename]; @@ -701,6 +704,7 @@ class AdminController } if ($deletedResponsiveImage) { + Cache::clearCache(); $this->admin->json_response = ['status' => 'success', 'message' => $this->admin->translate('PLUGIN_ADMIN.FILE_DELETED') . ': '.$filename]; } else { $this->admin->json_response = ['status' => 'error', 'message' => $this->admin->translate('PLUGIN_ADMIN.FILE_NOT_FOUND') . ': '.$filename]; @@ -887,9 +891,9 @@ class AdminController $result = \Grav\Plugin\Admin\Gpm::selfupgrade(); if ($result) { - $this->admin->json_response = ['status' => 'success', 'message' => $this->admin->translate('PLUGIN_ADMIN.GRAV_WAS_SUCCESSFULLY_UPDATED_TO') . ' ']; + $this->admin->json_response = ['status' => 'success', 'type' => 'updategrav', 'version' => GRAV_VERSION, 'message' => $this->admin->translate('PLUGIN_ADMIN.GRAV_WAS_SUCCESSFULLY_UPDATED_TO') . ' ' . GRAV_VERSION]; } else { - $this->admin->json_response = ['status' => 'error', 'message' => $this->admin->translate('PLUGIN_ADMIN.GRAV_UPDATE_FAILED') . '
' . Installer::lastErrorMsg()]; + $this->admin->json_response = ['status' => 'error', 'type' => 'updategrav', 'version' => GRAV_VERSION, 'message' => $this->admin->translate('PLUGIN_ADMIN.GRAV_UPDATE_FAILED') . '
' . Installer::lastErrorMsg()]; } return true; @@ -935,9 +939,9 @@ class AdminController if ($this->view === 'update') { if ($result) { - $this->admin->json_response = ['status' => 'success', 'message' => $this->admin->translate('PLUGIN_ADMIN.EVERYTHING_UPDATED')]; + $this->admin->json_response = ['status' => 'success', 'type' => 'update', 'message' => $this->admin->translate('PLUGIN_ADMIN.EVERYTHING_UPDATED')]; } else { - $this->admin->json_response = ['status' => 'error', 'message' => $this->admin->translate('PLUGIN_ADMIN.UPDATES_FAILED')]; + $this->admin->json_response = ['status' => 'error', 'type' => 'update', 'message' => $this->admin->translate('PLUGIN_ADMIN.UPDATES_FAILED')]; } } else { diff --git a/classes/popularity.php b/classes/popularity.php index e2a583e5..f56887c1 100644 --- a/classes/popularity.php +++ b/classes/popularity.php @@ -130,7 +130,7 @@ class Popularity $data[] = $count; } - return array('labels' => json_encode($labels), 'data' => json_encode($data)); + return array('labels' => $labels, 'data' => $data); } /** diff --git a/languages/en.yaml b/languages/en.yaml index 5d76495b..93303f13 100644 --- a/languages/en.yaml +++ b/languages/en.yaml @@ -467,11 +467,13 @@ PLUGIN_ADMIN: HIDE_HOME_IN_URLS: "Hide home route in URLs" HIDE_HOME_IN_URLS_HELP: "Will ensure the default routes for any pages under home do not reference home's regular route" TWIG_FIRST: "Process Twig First" - TWIG_FIRST_HELP: "If you enabled Twig page processing, then you can configure Twig to process before or after markdown" + TWIG_FIRST_HELP: "If you enabled Twig page processing, then you can configure Twig to process before or after markdown" SESSION_SECURE: "Secure" SESSION_SECURE_HELP: "If true, indicates that communication for this cookie must be over an encrypted transmission. WARNING: Enable this only on sites that run exclusively on HTTPS" SESSION_HTTPONLY: "HTTP Only" SESSION_HTTPONLY_HELP: "If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed" REVERSE_PROXY: "Reverse Proxy" REVERSE_PROXY_HELP: "Enable this if you are behind a reverse proxy and you are having trouble with URLs containing incorrect ports" - INVALID_FRONTMATTER_COULD_NOT_SAVE: "Invalid frontmatter, could not save" \ No newline at end of file + INVALID_FRONTMATTER_COULD_NOT_SAVE: "Invalid frontmatter, could not save" + NOTHING_TO_SAVE: "Nothing to Save" + diff --git a/themes/grav/.eslintrc b/themes/grav/.eslintrc new file mode 100644 index 00000000..4f728439 --- /dev/null +++ b/themes/grav/.eslintrc @@ -0,0 +1,181 @@ +{ + "env": { + "browser": true, + "node": true + }, + + "ecmaFeatures": { + "arrowFunctions": true, + "destructuring": true, + "classes": true, + "defaultParams": true, + "blockBindings": true, + "modules": true, + "objectLiteralComputedProperties": true, + "objectLiteralShorthandMethods": true, + "objectLiteralShorthandProperties": true, + "restParams": true, + "spread": true, + "forOf": true, + "generators": true, + "templateStrings": true, + "superInFunctions": true, + "experimentalObjectRestSpread": true + }, + + "rules": { + "accessor-pairs": 2, + "array-bracket-spacing": 0, + "block-scoped-var": 0, + "brace-style": [2, "1tbs", { "allowSingleLine": true }], + "camelcase": 0, + "comma-dangle": [2, "never"], + "comma-spacing": [2, { "before": false, "after": true }], + "comma-style": [2, "last"], + "complexity": 0, + "computed-property-spacing": 0, + "consistent-return": 0, + "consistent-this": 0, + "constructor-super": 2, + "curly": [2, "multi-line"], + "default-case": 0, + "dot-location": [2, "property"], + "dot-notation": 0, + "eol-last": 2, + "eqeqeq": [2, "allow-null"], + "func-names": 0, + "func-style": 0, + "generator-star-spacing": [2, { "before": true, "after": true }], + "guard-for-in": 0, + "handle-callback-err": [2, "^(err|error)$" ], + "indent": [2, 4, { "SwitchCase": 1 }], + "key-spacing": [2, { "beforeColon": false, "afterColon": true }], + "linebreak-style": 0, + "lines-around-comment": 0, + "max-nested-callbacks": 0, + "new-cap": [2, { "newIsCap": true, "capIsNew": false }], + "new-parens": 2, + "newline-after-var": 0, + "no-alert": 0, + "no-array-constructor": 2, + "no-caller": 2, + "no-catch-shadow": 0, + "no-cond-assign": 2, + "no-console": 0, + "no-constant-condition": 0, + "no-continue": 0, + "no-control-regex": 2, + "no-debugger": 2, + "no-delete-var": 2, + "no-div-regex": 0, + "no-dupe-args": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-else-return": 0, + "no-empty": 0, + "no-empty-character-class": 2, + "no-empty-label": 2, + "no-eq-null": 0, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": 0, + "no-extra-semi": 0, + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-func-assign": 2, + "no-implied-eval": 2, + "no-inline-comments": 0, + "no-inner-declarations": [2, "functions"], + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-label-var": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-lonely-if": 0, + "no-loop-func": 0, + "no-mixed-requires": 0, + "no-mixed-spaces-and-tabs": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-multiple-empty-lines": [2, { "max": 1 }], + "no-native-reassign": 2, + "no-negated-in-lhs": 2, + "no-nested-ternary": 0, + "no-new": 2, + "no-new-func": 0, + "no-new-object": 2, + "no-new-require": 2, + "no-new-wrappers": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-octal-escape": 2, + "no-param-reassign": 0, + "no-path-concat": 0, + "no-process-env": 0, + "no-process-exit": 0, + "no-proto": 0, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-restricted-modules": 0, + "no-return-assign": 2, + "no-script-url": 0, + "no-self-compare": 2, + "no-sequences": 2, + "no-shadow": 0, + "no-shadow-restricted-names": 2, + "no-spaced-func": 2, + "no-sparse-arrays": 2, + "no-sync": 0, + "no-ternary": 0, + "no-this-before-super": 2, + "no-throw-literal": 2, + "no-trailing-spaces": 2, + "no-undef": 2, + "no-undef-init": 2, + "no-undefined": 0, + "no-underscore-dangle": 0, + "no-unexpected-multiline": 2, + "no-unneeded-ternary": 2, + "no-unreachable": 2, + "no-unused-expressions": 0, + "no-unused-vars": [2, { "vars": "all", "args": "none" }], + "no-use-before-define": 0, + "no-var": 0, + "no-void": 0, + "no-warning-comments": 0, + "no-with": 2, + "object-curly-spacing": 0, + "object-shorthand": 0, + "one-var": [2, { "initialized": "never" }], + "operator-assignment": 0, + "operator-linebreak": [2, "after", { "overrides": { "?": "before", ":": "before" } }], + "padded-blocks": 0, + "prefer-const": 0, + "quote-props": 0, + "quotes": [2, "single", "avoid-escape"], + "radix": 2, + "semi": [2, "always"], + "semi-spacing": 0, + "sort-vars": 0, + "space-after-keywords": [2, "always"], + "space-before-blocks": [2, "always"], + "space-before-function-paren": [2, "never"], + "space-in-parens": [2, "never"], + "space-infix-ops": 2, + "space-return-throw-case": 2, + "space-unary-ops": [2, { "words": true, "nonwords": false }], + "spaced-comment": [2, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!"] }], + "strict": 0, + "use-isnan": 2, + "valid-jsdoc": 0, + "valid-typeof": 2, + "vars-on-top": 0, + "wrap-iife": [2, "any"], + "wrap-regex": 0, + "yoda": [2, "never"] + } +} diff --git a/themes/grav/app/dashboard/backup.js b/themes/grav/app/dashboard/backup.js new file mode 100644 index 00000000..f7eaecb8 --- /dev/null +++ b/themes/grav/app/dashboard/backup.js @@ -0,0 +1,24 @@ +import $ from 'jquery'; +import { translations } from 'grav-config'; +import request from '../utils/request'; +import { Instances as Charts } from './chart'; + +$('[data-ajax*="task:backup"]').on('click', function() { + let element = $(this); + let url = element.data('ajax'); + + element + .attr('disabled', 'disabled') + .find('> .fa').removeClass('fa-database').addClass('fa-spin fa-refresh'); + + request(url, (/* response */) => { + if (Charts && Charts.backups) { + Charts.backups.updateData({ series: [0, 100] }); + Charts.backups.element.find('.numeric').html(`0 ${translations.PLUGIN_ADMIN.DAYS.toLowerCase()}`); + } + + element + .removeAttr('disabled') + .find('> .fa').removeClass('fa-spin fa-refresh').addClass('fa-database'); + }); +}); diff --git a/themes/grav/app/dashboard/cache.js b/themes/grav/app/dashboard/cache.js new file mode 100644 index 00000000..d454945e --- /dev/null +++ b/themes/grav/app/dashboard/cache.js @@ -0,0 +1,49 @@ +import $ from 'jquery'; +import { config } from 'grav-config'; +import request from '../utils/request'; + +const getUrl = (type = '') => { + if (type) { + type = `cleartype:${type}/`; + } + + return `${config.base_url_relative}/cache.json/task:clearCache/${type}admin-nonce:${config.admin_nonce}`; +}; + +export default class Cache { + constructor() { + this.element = $('[data-clear-cache]'); + $('body').on('click', '[data-clear-cache]', (event) => this.clear(event, event.target)); + } + + clear(event, element) { + let type = ''; + + if (event && event.preventDefault) { event.preventDefault(); } + if (typeof event === 'string') { type = event; } + + element = element ? $(element) : $(`[data-clear-cache-type="${type}"]`); + type = type || $(element).data('clear-cache-type') || ''; + let url = element.data('clearCache') || getUrl(event); + + this.disable(); + + request(url, () => this.enable()); + } + + enable() { + this.element + .removeAttr('disabled') + .find('> .fa').removeClass('fa-refresh fa-spin').addClass('fa-trash'); + } + + disable() { + this.element + .attr('disabled', 'disabled') + .find('> .fa').removeClass('fa-trash').addClass('fa-refresh fa-spin'); + } +} + +let Instance = new Cache(); + +export { Instance }; diff --git a/themes/grav/app/dashboard/chart.js b/themes/grav/app/dashboard/chart.js new file mode 100644 index 00000000..50fa8022 --- /dev/null +++ b/themes/grav/app/dashboard/chart.js @@ -0,0 +1,124 @@ +import $ from 'jquery'; +import chartist from 'chartist'; +import { translations } from 'grav-config'; +import { Instance as gpm } from '../utils/gpm'; +import { Instance as updates } from '../updates'; + +let isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; + +export const defaults = { + data: { + series: [100, 0] + }, + options: { + Pie: { + donut: true, + donutWidth: 10, + startAngle: 0, + total: 100, + showLabel: false, + height: 150, + chartPadding: !isFirefox ? 10 : 25 + }, + Bar: { + height: 164, + chartPadding: !isFirefox ? 5 : 25, + + axisX: { + showGrid: false, + labelOffset: { + x: 0, + y: 5 + } + }, + axisY: { + offset: 15, + showLabel: true, + showGrid: true, + labelOffset: { + x: 5, + y: 5 + }, + scaleMinSpace: 20 + } + } + } +}; + +export default class Chart { + constructor(element, options = {}, data = {}) { + this.element = $(element) || []; + if (!this.element[0]) { return; } + + let type = (this.element.data('chart-type') || 'pie').toLowerCase(); + this.type = type.charAt(0).toUpperCase() + type.substr(1).toLowerCase(); + + options = Object.assign({}, defaults.options[this.type], options); + data = Object.assign({}, defaults.data, data); + Object.assign(this, { + options, + data + }); + this.chart = chartist[this.type](this.element.find('.ct-chart')[0], this.data, this.options); + } + + updateData(data) { + Object.assign(this.data, data); + this.chart.update(this.data); + } +}; + +export class UpdatesChart extends Chart { + constructor(element, options = {}, data = {}) { + super(element, options, data); + + this.chart.on('draw', (data) => this.draw(data)); + + gpm.on('fetched', (response) => { + let payload = response.payload.grav; + let missing = (response.payload.resources.total + (payload.isUpdatable ? 1 : 0)) * 100 / (response.payload.installed + (payload.isUpdatable ? 1 : 0)); + let updated = 100 - missing; + + this.updateData({ series: [updated, missing] }); + + if (response.payload.resources.total) { + updates.maintenance('show'); + } + }); + } + + draw(data) { + if (data.index) { return; } + + let notice = translations.PLUGIN_ADMIN[data.value === 100 ? 'FULLY_UPDATED' : 'UPDATES_AVAILABLE']; + this.element.find('.numeric span').text(`${Math.round(data.value)}%`); + this.element.find('.js__updates-available-description').html(notice); + this.element.find('.hidden').removeClass('hidden'); + } + + updateData(data) { + super.updateData(data); + + // missing updates + if (this.data.series[0] < 100) { + this.element.closest('#updates').find('[data-maintenance-update]').fadeIn(); + } + } +} + +let charts = {}; + +$('[data-chart-name]').each(function() { + let element = $(this); + let name = element.data('chart-name') || ''; + let options = element.data('chart-options') || {}; + let data = element.data('chart-data') || {}; + + if (name === 'updates') { + charts[name] = new UpdatesChart(element, options, data); + } else { + charts[name] = new Chart(element, options, data); + } +}); + +export let Instances = charts; diff --git a/themes/grav/app/dashboard/index.js b/themes/grav/app/dashboard/index.js new file mode 100644 index 00000000..7adee0d9 --- /dev/null +++ b/themes/grav/app/dashboard/index.js @@ -0,0 +1,12 @@ +import Chart, { UpdatesChart, Instances } from './chart'; +import { Instance as Cache } from './cache'; +import './backup'; + +export default { + Chart: { + Chart, + UpdatesChart, + Instances + }, + Cache +}; diff --git a/themes/grav/app/dashboard/update.js b/themes/grav/app/dashboard/update.js new file mode 100644 index 00000000..acf1bb7e --- /dev/null +++ b/themes/grav/app/dashboard/update.js @@ -0,0 +1 @@ +// See ../updates/update.js diff --git a/themes/grav/app/forms/fields/array.js b/themes/grav/app/forms/fields/array.js new file mode 100644 index 00000000..caaf2b07 --- /dev/null +++ b/themes/grav/app/forms/fields/array.js @@ -0,0 +1,146 @@ +import $ from 'jquery'; + +let body = $('body'); + +class Template { + constructor(container) { + this.container = $(container); + + if (this.getName() === undefined) { + this.container = this.container.closest('[data-grav-array-name]'); + } + } + + getName() { + return this.container.data('grav-array-name') || ''; + } + + getKeyPlaceholder() { + return this.container.data('grav-array-keyname') || 'Key'; + } + + getValuePlaceholder() { + return this.container.data('grav-array-valuename') || 'Value'; + } + + isValueOnly() { + return this.container.find('[data-grav-array-mode="value_only"]:first').length || false; + } + + shouldBeDisabled() { + // check for toggleables, if field is toggleable and it's not enabled, render disabled + let toggle = this.container.closest('.form-field').find('[data-grav-field="toggleable"] input[type="checkbox"]'); + return toggle.length && toggle.is(':not(:checked)'); + } + + getNewRow() { + let tpl = ''; + + if (this.isValueOnly()) { + tpl += ` +
+ + `; + } else { + tpl += ` +
+ + + `; + } + + tpl += ` + + +
`; + + return tpl; + } +} + +export default class ArrayField { + constructor() { + body.on('input', '[data-grav-array-type="key"], [data-grav-array-type="value"]', (event) => this.actionInput(event)); + body.on('click touch', '[data-grav-array-action]', (event) => this.actionEvent(event)); + } + + actionInput(event) { + let element = $(event.target); + let type = element.data('grav-array-type'); + + this._setTemplate(element); + + let template = element.data('array-template'); + let keyElement = type === 'key' ? element : element.siblings('[data-grav-array-type="key"]:first'); + let valueElement = type === 'value' ? element : element.siblings('[data-grav-array-type="value"]:first'); + + let name = `${template.getName()}[${!template.isValueOnly() ? keyElement.val() : this.getIndexFor(element)}]`; + valueElement.attr('name', !valueElement.val() ? template.getName() : name); + + this.refreshNames(template); + } + + actionEvent(event) { + let element = $(event.target); + let action = element.data('grav-array-action'); + + this._setTemplate(element); + + this[`${action}Action`](element); + } + + addAction(element) { + let template = element.data('array-template'); + let row = element.closest('[data-grav-array-type="row"]'); + + row.after(template.getNewRow()); + } + + remAction(element) { + let template = element.data('array-template'); + let row = element.closest('[data-grav-array-type="row"]'); + let isLast = !row.siblings().length; + + if (isLast) { + let newRow = $(template.getNewRow()); + row.after(newRow); + newRow.find('[data-grav-array-type="value"]:last').attr('name', template.getName()); + } + + row.remove(); + this.refreshNames(template); + } + + refreshNames(template) { + if (!template.isValueOnly()) { return; } + + let row = template.container.find('> div > [data-grav-array-type="row"]'); + let inputs = row.find('[name]:not([name=""])'); + + inputs.each((index, input) => { + input = $(input); + let name = input.attr('name'); + name = name.replace(/\[\d+\]$/, `[${index}]`); + input.attr('name', name); + }); + + if (!inputs.length) { + row.find('[data-grav-array-type="value"]').attr('name', template.getName()); + } + } + + getIndexFor(element) { + let template = element.data('array-template'); + let row = element.closest('[data-grav-array-type="row"]'); + + return template.container.find(`${template.isValueOnly() ? '> div ' : ''} > [data-grav-array-type="row"]`).index(row); + } + + _setTemplate(element) { + if (!element.data('array-template')) { + element.data('array-template', new Template(element.closest('[data-grav-array-name]'))); + } + } +} + +export let Instance = new ArrayField(); diff --git a/themes/grav/app/forms/fields/collections.js b/themes/grav/app/forms/fields/collections.js new file mode 100644 index 00000000..1b812841 --- /dev/null +++ b/themes/grav/app/forms/fields/collections.js @@ -0,0 +1,98 @@ +import $ from 'jquery'; +import Sortable from 'sortablejs'; +import '../../utils/jquery-utils'; + +export default class CollectionsField { + constructor() { + this.lists = $(); + + $('[data-type="collection"]').each((index, list) => this.addList(list)); + $('body').on('mutation._grav', this._onAddedNodes.bind(this)); + + } + + addList(list) { + list = $(list); + this.lists = this.lists.add(list); + + list.on('click', '> .collection-actions [data-action="add"]', (event) => this.addItem(event)); + list.on('click', '> ul > li > .item-actions [data-action="delete"]', (event) => this.removeItem(event)); + + list.find('[data-collection-holder]').each((index, container) => { + container = $(container); + if (container.data('collection-sort')) { return; } + + container.data('collection-sort', new Sortable(container.get(0), { + forceFallback: true, + animation: 150, + onUpdate: () => this.reindex(container) + })); + }); + } + + addItem(event) { + let button = $(event.currentTarget); + let list = button.closest('[data-type="collection"]'); + let template = $(list.find('> [data-collection-template="new"]').data('collection-template-html')); + + list.find('> [data-collection-holder]').append(template); + this.reindex(list); + // button.data('key-index', keyIndex + 1); + + // process markdown editors + /* var field = template.find('[name]').filter('textarea'); + if (field.length && field.data('grav-mdeditor') && typeof MDEditors !== 'undefined') { + MDEditors.add(field); + }*/ + } + + removeItem(event) { + let button = $(event.currentTarget); + let item = button.closest('[data-collection-item]'); + let list = button.closest('[data-type="collection"]'); + + item.remove(); + this.reindex(list); + } + + reindex(list) { + list = $(list).closest('[data-type="collection"]'); + + let items = list.find('> ul > [data-collection-item]'); + + items.each((index, item) => { + item = $(item); + item.attr('data-collection-key', index); + + ['name', 'data-grav-field-name', 'id', 'for'].forEach((prop) => { + item.find('[' + prop + ']').each(function() { + let element = $(this); + let indexes = []; + element.parents('[data-collection-key]').map((idx, parent) => indexes.push($(parent).attr('data-collection-key'))); + indexes.reverse(); + + let replaced = element.attr(prop).replace(/\[(\d+|\*)\]/g, (/* str, p1, offset */) => { + return `[${indexes.shift()}]`; + }); + + element.attr(prop, replaced); + }); + }); + + }); + } + + _onAddedNodes(event, target/* , record, instance */) { + let collections = $(target).find('[data-type="collection"]'); + if (!collections.length) { return; } + + collections.each((index, collection) => { + collection = $(collection); + if (!~this.lists.index(collection)) { + this.addList(collection); + } + }); + } +} + +export let Instance = new CollectionsField(); diff --git a/themes/grav/app/forms/fields/index.js b/themes/grav/app/forms/fields/index.js new file mode 100644 index 00000000..9739ddf1 --- /dev/null +++ b/themes/grav/app/forms/fields/index.js @@ -0,0 +1,18 @@ +import SelectizeField, { Instance as SelectizeFieldInstance } from './selectize'; +import ArrayField, { Instance as ArrayFieldInstance } from './array'; +import CollectionsField, { Instance as CollectionsFieldInstance } from './collections'; + +export default { + SelectizeField: { + SelectizeField, + Instance: SelectizeFieldInstance + }, + ArrayField: { + ArrayField, + Instance: ArrayFieldInstance + }, + CollectionsField: { + CollectionsField, + Instance: CollectionsFieldInstance + } +}; diff --git a/themes/grav/app/forms/fields/selectize.js b/themes/grav/app/forms/fields/selectize.js new file mode 100644 index 00000000..5ad4d727 --- /dev/null +++ b/themes/grav/app/forms/fields/selectize.js @@ -0,0 +1,35 @@ +import $ from 'jquery'; +import 'selectize'; + +export default class SelectizeField { + constructor(options = {}) { + this.options = Object.assign({}, options); + this.elements = []; + + $('[data-grav-selectize]').each((index, element) => this.add(element)); + $('body').on('mutation._grav', this._onAddedNodes.bind(this)); + } + + add(element) { + element = $(element); + let tag = element.prop('tagName').toLowerCase(); + let isInput = tag === 'input' || tag === 'select'; + + let data = (isInput ? element.closest('[data-grav-selectize]') : element).data('grav-selectize') || {}; + let field = (isInput ? element : element.find('input, select')); + + if (!field.length || field.get(0).selectize) { return; } + field.selectize(data); + + this.elements.push(field.data('selectize')); + } + + _onAddedNodes(event, target/* , record, instance */) { + let fields = $(target).find('select.fancy, input.fancy'); + if (!fields.length) { return; } + + fields.each((index, field) => this.add(field)); + } +} + +export let Instance = new SelectizeField(); diff --git a/themes/grav/app/forms/form.js b/themes/grav/app/forms/form.js new file mode 100644 index 00000000..d101c469 --- /dev/null +++ b/themes/grav/app/forms/form.js @@ -0,0 +1,104 @@ +import $ from 'jquery'; +import toastr from '../utils/toastr'; +import { translations } from 'grav-config'; +import { Instance as FormState } from './state'; + +export default class Form { + constructor(form) { + this.form = $(form); + if (!this.form.length || this.form.prop('tagName').toLowerCase() !== 'form') { return; } + + this.form.on('submit', (event) => { + if (FormState.equals()) { + event.preventDefault(); + toastr.info(translations.PLUGIN_ADMIN.NOTHING_TO_SAVE); + } + }); + + this._attachShortcuts(); + this._attachToggleables(); + this._attachDisabledFields(); + + this.observer = new MutationObserver(this.addedNodes); + this.form.each((index, form) => this.observer.observe(form, { subtree: true, childList: true })); + } + + _attachShortcuts() { + // CTRL + S / CMD + S - shortcut for [Save] when available + let saveTask = $('[name="task"][value="save"]').filter(function(index, element) { + element = $(element); + return !(element.parents('.remodal-overlay').length); + }); + + if (saveTask.length) { + $(window).on('keydown', function(event) { + var key = String.fromCharCode(event.which).toLowerCase(); + if ((event.ctrlKey || event.metaKey) && key === 's') { + event.preventDefault(); + saveTask.click(); + } + }); + } + } + + _attachToggleables() { + let query = '[data-grav-field="toggleable"] input[type="checkbox"]'; + + this.form.on('change', query, (event) => { + let toggle = $(event.target); + let enabled = toggle.is(':checked'); + let parent = toggle.parents('.form-field'); + let label = parent.find('label.toggleable'); + let fields = parent.find('.form-data'); + let inputs = fields.find('input, select, textarea'); + + label.add(fields).css('opacity', enabled ? '' : 0.7); + inputs.map((index, input) => { + let isSelectize = input.selectize; + input = $(input); + + if (isSelectize) { + isSelectize[enabled ? 'enable' : 'disable'](); + } else { + input.prop('disabled', !enabled); + } + }); + }); + + this.form.find(query).trigger('change'); + } + + _attachDisabledFields() { + let prefix = '.form-field-toggleable .form-data'; + let query = []; + + ['input', 'select', 'label[for]', 'textarea', '.selectize-control'].forEach((item) => { + query.push(`${prefix} ${item}`); + }); + + this.form.on('mousedown', query.join(', '), (event) => { + let target = $(event.target); + let input = target; + let isFor = input.prop('for'); + let isSelectize = (input.hasClass('selectize-control') || input.parents('.selectize-control')).length; + + if (isFor) { input = $(`[id="${isFor}"]`); } + if (isSelectize) { input = input.closest('.selectize-control').siblings('select[name]'); } + + if (!input.prop('disabled')) { return true; } + + let toggle = input.closest('.form-field').find('[data-grav-field="toggleable"] input[type="checkbox"]'); + toggle.trigger('click'); + }); + } + + addedNodes(mutations) { + mutations.forEach((mutation) => { + if (mutation.type !== 'childList' || !mutation.addedNodes) { return; } + + $('body').trigger('mutation._grav', mutation.target, mutation, this); + }); + } +} + +export let Instance = new Form('form#blueprints'); diff --git a/themes/grav/app/forms/index.js b/themes/grav/app/forms/index.js new file mode 100644 index 00000000..604cf1be --- /dev/null +++ b/themes/grav/app/forms/index.js @@ -0,0 +1,16 @@ +import FormState, { Instance as FormStateInstance } from './state'; +import Form, { Instance as FormInstance } from './form'; + +import Fields from './fields'; + +export default { + Form: { + Form, + Instance: FormInstance + }, + Fields, + FormState: { + FormState, + Instance: FormStateInstance + } +}; diff --git a/themes/grav/app/forms/state.js b/themes/grav/app/forms/state.js new file mode 100644 index 00000000..268b708b --- /dev/null +++ b/themes/grav/app/forms/state.js @@ -0,0 +1,122 @@ +import $ from 'jquery'; +import Immutable from 'immutable'; +import '../utils/jquery-utils'; + +let FormLoadState = {}; + +const DOMBehaviors = { + attach() { + this.preventUnload(); + this.preventClickAway(); + }, + + preventUnload() { + if ($._data(window, 'events') && ($._data(window, 'events').beforeunload || []).filter((event) => event.namespace === '_grav')) { + return; + } + + // Catch browser uri change / refresh attempt and stop it if the form state is dirty + $(window).on('beforeunload._grav', () => { + if (Instance.equals() === false) { + return `You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes.`; + } + }); + }, + + preventClickAway() { + let selector = 'a[href]:not([href^=#])'; + + if ($._data($(selector).get(0), 'events') && ($._data($(selector).get(0), 'events').click || []).filter((event) => event.namespace === '_grav')) { + return; + } + + // Prevent clicking away if the form state is dirty + // instead, display a confirmation before continuing + $(selector).on('click._grav', function(event) { + let isClean = Instance.equals(); + if (isClean === null || isClean) { return true; } + + event.preventDefault(); + + let destination = $(this).attr('href'); + let modal = $('[data-remodal-id="changes"]'); + let lookup = $.remodal.lookup[modal.data('remodal')]; + let buttons = $('a.button', modal); + + let handler = function(event) { + event.preventDefault(); + let action = $(this).data('leave-action'); + + buttons.off('click', handler); + lookup.close(); + + if (action === 'continue') { + $(window).off('beforeunload'); + window.location.href = destination; + } + }; + + buttons.on('click', handler); + lookup.open(); + }); + } +}; + +export default class FormState { + constructor(options = { + ignore: [], + form_id: 'blueprints' + }) { + this.options = options; + this.refresh(); + + if (!this.form || !this.fields.length) { return; } + FormLoadState = this.collect(); + DOMBehaviors.attach(); + } + + refresh() { + this.form = $(`form#${this.options.form_id}`).filter(':noparents(.remodal)'); + this.fields = $(`form#${this.options.form_id} *, [form="${this.options.form_id}"]`).filter(':input:not(.no-form)').filter(':noparents(.remodal)'); + + return this; + } + + collect() { + if (!this.form || !this.fields.length) { return; } + + let values = {}; + this.refresh().fields.each((index, field) => { + field = $(field); + let name = field.prop('name'); + let type = field.prop('type'); + let value; + + switch (type) { + case 'checkbox': + case 'radio': + value = field.is(':checked'); + break; + default: + value = field.val(); + } + + if (name && !~this.options.ignore.indexOf(name)) { + values[name] = value; + } + }); + + return Immutable.OrderedMap(values); + } + + // When the form doesn't exist or there are no fields, `equals` returns `null` + // for this reason, _NEVER_ check with !Instance.equals(), use Instance.equals() === false + equals() { + if (!this.form || !this.fields.length) { return null; } + return Immutable.is(FormLoadState, this.collect()); + } +}; + +export let Instance = new FormState(); + +export { DOMBehaviors }; diff --git a/themes/grav/app/main.js b/themes/grav/app/main.js new file mode 100644 index 00000000..9b161b75 --- /dev/null +++ b/themes/grav/app/main.js @@ -0,0 +1,29 @@ +import GPM, { Instance as gpm } from './utils/gpm'; +import KeepAlive from './utils/keepalive'; +import Updates, { Instance as updates } from './updates'; +import Dashboard from './dashboard'; +import Pages from './pages'; +import Forms from './forms'; +import './plugins'; +import './themes'; + +// bootstrap jQuery extensions +import 'bootstrap/js/dropdown'; + +// starts the keep alive, auto runs every X seconds +KeepAlive.start(); + +export default { + GPM: { + GPM, + Instance: gpm + }, + KeepAlive, + Dashboard, + Pages, + Forms, + Updates: { + Updates, + Instance: updates + } +}; diff --git a/themes/grav/app/pages/filter.js b/themes/grav/app/pages/filter.js new file mode 100644 index 00000000..2b6fb117 --- /dev/null +++ b/themes/grav/app/pages/filter.js @@ -0,0 +1,134 @@ +import $ from 'jquery'; +import { config } from 'grav-config'; +import request from '../utils/request'; +import debounce from 'debounce'; +import { Instance as pagesTree } from './tree'; +import 'selectize'; + +/* @formatter:off */ +/* eslint-disable */ +const options = [ + { flag: 'Modular', key: 'Modular', cat: 'mode' }, + { flag: 'Visible', key: 'Visible', cat: 'mode' }, + { flag: 'Routable', key: 'Routable', cat: 'mode' }, + { flag: 'Published', key: 'Published', cat: 'mode' }, + { flag: 'Non-Modular', key: 'NonModular', cat: 'mode' }, + { flag: 'Non-Visible', key: 'NonVisible', cat: 'mode' }, + { flag: 'Non-Routable', key: 'NonRoutable', cat: 'mode' }, + { flag: 'Non-Published', key: 'NonPublished', cat: 'mode' } +]; +/* @formatter:on */ +/* eslint-enable */ + +export default class PagesFilter { + constructor(filters, search) { + this.filters = $(filters); + this.search = $(search); + this.options = options; + this.tree = pagesTree; + + if (!this.filters.length || !this.search.length) { return; } + + this.labels = this.filters.data('filter-labels'); + + this.search.on('input', debounce(() => this.filter(), 250)); + this.filters.on('change', () => this.filter()); + + this._initSelectize(); + } + + filter(value) { + let data = { flags: '', query: '' }; + + if (typeof value === 'object') { + Object.assign(data, value); + } + if (typeof value === 'string') { + data.query = value; + } + if (typeof value === 'undefined') { + data.flags = this.filters.val(); + data.query = this.search.val(); + } + + if (!Object.keys(data).filter((key) => data[key] !== '').length) { + this.resetValues(); + return; + } + + data.flags = data.flags.replace(/(\s{1,})?,(\s{1,})?/g, ','); + this.setValues({ flags: data.flags, query: data.query }, 'silent'); + + request(`${config.base_url_relative}/pages-filter.json/task${config.param_sep}filterPages`, { + method: 'post', + body: data + }, (response) => { + this.refreshDOM(response); + }); + } + + refreshDOM(response) { + let items = $('[data-nav-id]'); + + if (!response) { + items.removeClass('search-match').show(); + this.tree.restore(); + + return; + } + + items.removeClass('search-match').hide(); + + response.results.forEach((page) => { + let match = items.filter(`[data-nav-id="${page}"]`).addClass('search-match').show(); + match.parents('[data-nav-id]').addClass('search-match').show(); + + this.tree.expand(page, 'no-store'); + }); + } + + setValues({ flags = '', query = ''}, silent) { + let flagsArray = flags.replace(/(\s{1,})?,(\s{1,})?/g, ',').split(','); + if (this.filters.val() !== flags) { this.filters[0].selectize.setValue(flagsArray, silent); } + if (this.search.val() !== query) { this.search.val(query); } + } + + resetValues() { + this.setValues('', 'silent'); + this.refreshDOM(); + } + + _initSelectize() { + let extras = { + type: this.filters.data('filter-types') || {}, + access: this.filters.data('filter-access-levels') || {} + }; + + Object.keys(extras).forEach((cat) => { + Object.keys(extras[cat]).forEach((key) => { + this.options.push({ + cat, + key, + flag: extras[cat][key] + }); + }); + }); + + this.filters.selectize({ + maxItems: null, + valueField: 'key', + labelField: 'flag', + searchField: ['flag', 'key'], + options: this.options, + optgroups: this.labels, + optgroupField: 'cat', + optgroupLabelField: 'name', + optgroupValueField: 'id', + optgroupOrder: this.labels.map((item) => item.id), + plugins: ['optgroup_columns'] + }); + } +} + +let Instance = new PagesFilter('input[name="page-filter"]', 'input[name="page-search"]'); +export { Instance }; diff --git a/themes/grav/app/pages/index.js b/themes/grav/app/pages/index.js new file mode 100644 index 00000000..5859c29c --- /dev/null +++ b/themes/grav/app/pages/index.js @@ -0,0 +1,26 @@ +import $ from 'jquery'; +import Sortable from 'sortablejs'; +import PageFilters, { Instance as PageFiltersInstance } from './filter'; +import './page'; + +// Pages Ordering +let Ordering = null; +let orderingElement = $('#ordering'); +if (orderingElement.length) { + Ordering = new Sortable(orderingElement.get(0), { + filter: '.ignore', + onUpdate: function(event) { + let item = $(event.item); + let index = orderingElement.children().index(item) + 1; + $('[data-order]').val(index); + } + }); +} + +export default { + Ordering, + PageFilters: { + PageFilters, + Instance: PageFiltersInstance + } +}; diff --git a/themes/grav/app/pages/page/add.js b/themes/grav/app/pages/page/add.js new file mode 100644 index 00000000..3090fb9b --- /dev/null +++ b/themes/grav/app/pages/page/add.js @@ -0,0 +1,31 @@ +import $ from 'jquery'; + +let custom = false; +let folder = $('input[name="folder"]'); +let title = $('input[name="title"]'); + +title.on('input focus blur', () => { + if (custom) { return true; } + + let slug = $.slugify(title.val()); + folder.val(slug); +}); + +folder.on('input', () => { + let input = folder.get(0); + let value = folder.val(); + let selection = { + start: input.selectionStart, + end: input.selectionEnd + }; + + value = value.toLowerCase().replace(/\s/g, '-').replace(/[^a-z0-9_\-]/g, ''); + folder.val(value); + custom = !!value; + + // restore cursor position + input.setSelectionRange(selection.start, selection.end); + +}); + +folder.on('focus blur', () => title.trigger('input')); diff --git a/themes/grav/app/pages/page/delete.js b/themes/grav/app/pages/page/delete.js new file mode 100644 index 00000000..cc47ac9f --- /dev/null +++ b/themes/grav/app/pages/page/delete.js @@ -0,0 +1,15 @@ +import $ from 'jquery'; + +$('[data-remodal-target="delete"]').on('click', function() { + let confirm = $('[data-remodal-id="delete"] [data-delete-action]'); + let link = $(this).data('delete-url'); + + confirm.data('delete-action', link); +}); + +$('[data-delete-action]').on('click', function() { + let remodal = $.remodal.lookup[$('[data-remodal-id="delete"]').data('remodal')]; + + window.location.href = $(this).data('delete-action'); + remodal.close(); +}); diff --git a/themes/grav/app/pages/page/index.js b/themes/grav/app/pages/page/index.js new file mode 100644 index 00000000..ffb6ab61 --- /dev/null +++ b/themes/grav/app/pages/page/index.js @@ -0,0 +1,37 @@ +import $ from 'jquery'; +import './add'; +import './move'; +import './delete'; +import './media'; + +const switcher = $('input[type="radio"][name="mode-switch"]'); + +if (switcher) { + let link = switcher.closest(':checked').data('leave-url'); + let fakeLink = $(``); + + switcher.parent().append(fakeLink); + + switcher.siblings('label').on('mousedown touchdown', (event) => { + event.preventDefault(); + + // let remodal = $.remodal.lookup[$('[data-remodal-id="changes"]').data('remodal')]; + let confirm = $('[data-remodal-id="changes"] [data-leave-action="continue"]'); + + confirm.one('click', () => { + $(window).on('beforeunload._grav'); + fakeLink.off('click._grav'); + + $(event.target).trigger('click'); + }); + + fakeLink.trigger('click._grav'); + }); + + switcher.on('change', (event) => { + let radio = $(event.target); + link = radio.data('leave-url'); + + setTimeout(() => fakeLink.attr('href', link).get(0).click(), 5); + }); +} diff --git a/themes/grav/app/pages/page/media.js b/themes/grav/app/pages/page/media.js new file mode 100644 index 00000000..62513590 --- /dev/null +++ b/themes/grav/app/pages/page/media.js @@ -0,0 +1,380 @@ +import $ from 'jquery'; +import Dropzone from 'dropzone'; +import request from '../../utils/request'; +import { config } from 'grav-config'; + +Dropzone.autoDiscover = false; +Dropzone.options.gravPageDropzone = {}; +Dropzone.confirm = (question, accepted, rejected) => { + let doc = $(document); + let modalSelector = '[data-remodal-id="delete-media"]'; + + let removeEvents = () => { + doc.off('confirm', modalSelector, accept); + doc.off('cancel', modalSelector, reject); + }; + + let accept = () => { + accepted && accepted(); + removeEvents(); + }; + + let reject = () => { + rejected && rejected(); + removeEvents(); + }; + + $.remodal.lookup[$(modalSelector).data('remodal')].open(); + doc.on('confirmation', modalSelector, accept); + doc.on('cancellation', modalSelector, reject); +}; + +const DropzoneMediaConfig = { + createImageThumbnails: { thumbnailWidth: 150 }, + addRemoveLinks: false, + dictRemoveFileConfirmation: '[placeholder]', + previewTemplate: ` +
+
+
+
+ +
+
+
+
+
+
Delete + Insert +
`.trim() +}; + +export default class PageMedia { + constructor({form = '[data-media-url]', container = '#grav-dropzone', options = {}} = {}) { + this.form = $(form); + this.container = $(container); + if (!this.form.length || !this.container.length) { return; } + + this.options = Object.assign({}, DropzoneMediaConfig, { + url: `${this.form.data('media-url')}/task${config.param_sep}addmedia`, + acceptedFiles: this.form.data('media-types') + }, options); + + this.dropzone = new Dropzone(container, this.options); + this.dropzone.on('complete', this.onDropzoneComplete.bind(this)); + this.dropzone.on('success', this.onDropzoneSuccess.bind(this)); + this.dropzone.on('removedfile', this.onDropzoneRemovedFile.bind(this)); + this.dropzone.on('sending', this.onDropzoneSending.bind(this)); + + this.fetchMedia(); + } + + fetchMedia() { + let url = `${this.form.data('media-url')}/task${config.param_sep}listmedia/admin-nonce${config.param_sep}${config.admin_nonce}`; + + request(url, (response) => { + let results = response.results; + + Object.keys(results).forEach((name) => { + let data = results[name]; + let mock = { name, size: data.size, accepted: true, extras: data }; + + this.dropzone.files.push(mock); + this.dropzone.options.addedfile.call(this.dropzone, mock); + + if (name.match(/\.(jpg|jpeg|png|gif)$/i)) { + this.dropzone.options.thumbnail.call(this.dropzone, mock, data.url); + } + }); + + this.container.find('.dz-preview').prop('draggable', 'true'); + }); + } + + onDropzoneSending(file, xhr, formData) { + formData.append('admin-nonce', config.admin_nonce); + } + + onDropzoneSuccess(file, response, xhr) { + return this.handleError({ + file, + data: response, + mode: 'removeFile', + msg: `

An error occurred while trying to upload the file ${file.name}

+
${response.message}
` + }); + } + + onDropzoneComplete(file) { + if (!file.accepted) { + let data = { + status: 'error', + message: `Unsupported file type: ${file.name.match(/\..+/).join('')}` + }; + + return this.handleError({ + file, + data, + mode: 'removeFile', + msg: `

An error occurred while trying to add the file ${file.name}

+
${data.message}
` + }); + } + + // accepted + $('.dz-preview').prop('draggable', 'true'); + } + + onDropzoneRemovedFile(file, ...extra) { + if (!file.accepted || file.rejected) { return; } + let url = `${this.form.data('media-url')}/task${config.param_sep}delmedia`; + + request(url, { + method: 'post', + body: { + filename: file.name + } + }, (response) => { + return this.handleError({ + file, + data: response, + mode: 'addBack', + msg: `

An error occurred while trying to remove the file ${file.name}

+
${response.message}
` + }); + }); + } + + handleError(options) { + let { file, data, mode, msg } = options; + if (data.status !== 'error' && data.status !== 'unauthorized') { return ; } + + switch (mode) { + case 'addBack': + if (file instanceof File) { + this.dropzone.addFile(file); + } else { + this.dropzone.files.push(file); + this.dropzone.options.addedfile.call(this, file); + this.dropzone.options.thumbnail.call(this, file, file.extras.url); + } + + break; + case 'removeFile': + file.rejected = true; + this.dropzone.removeFile(file); + + break; + default: + } + + let modal = $('[data-remodal-id="generic"]'); + modal.find('.error-content').html(msg); + $.remodal.lookup[modal.data('remodal')].open(); + } +} + +export let Instance = new PageMedia(); + +// let container = $('[data-media-url]'); + +// if (container.length) { +/* let URI = container.data('media-url'); + let dropzone = new Dropzone('#grav-dropzone', { + url: `${URI}/task${config.param_sep}addmedia`, + createImageThumbnails: { thumbnailWidth: 150 }, + addRemoveLinks: false, + dictRemoveFileConfirmation: '[placeholder]', + acceptedFiles: container.data('media-types'), + previewTemplate: ` +
+
+
+
+ +
+
+
+
+
+ Delete + Insert +
` + });*/ + + /* $.get(URI + '/task{{ config.system.param_sep }}listmedia/admin-nonce{{ config.system.param_sep }}' + GravAdmin.config.admin_nonce, function(data) { + + $.proxy(modalError, this, { + data: data, + msg: '

An error occurred while trying to list files

'+data.message+'
' + })(); + + if (data.results) { + $.each(data.results, function(filename, data){ + var mockFile = { name: filename, size: data.size, accepted: true, extras: data }; + thisDropzone.files.push(mockFile); + thisDropzone.options.addedfile.call(thisDropzone, mockFile); + + if (filename.toLowerCase().match(/\.(jpg|jpeg|png|gif)$/)) { + thisDropzone.options.thumbnail.call(thisDropzone, mockFile, data.url); + } + }); + } + + $('.dz-preview').prop('draggable', 'true'); + });*/ + + // console.log(dropzone); +// } + +/* +*/ diff --git a/themes/grav/app/pages/page/move.js b/themes/grav/app/pages/page/move.js new file mode 100644 index 00000000..3ed7832a --- /dev/null +++ b/themes/grav/app/pages/page/move.js @@ -0,0 +1,13 @@ +import $ from 'jquery'; + +$('[data-page-move] button[name="task"][value="save"]').on('click', function() { + let route = $('form#blueprints:first select[name="route"]'); + let moveTo = $('[data-page-move] select').val(); + + if (route.length && route.val() !== moveTo) { + let selectize = route.data('selectize'); + route.val(moveTo); + + if (selectize) selectize.setValue(moveTo); + } +}); diff --git a/themes/grav/app/pages/tree.js b/themes/grav/app/pages/tree.js new file mode 100644 index 00000000..0d1afcf8 --- /dev/null +++ b/themes/grav/app/pages/tree.js @@ -0,0 +1,116 @@ +import $ from 'jquery'; + +const sessionKey = 'grav:admin:pages'; + +if (!sessionStorage.getItem(sessionKey)) { + sessionStorage.setItem(sessionKey, '{}'); +} + +export default class PagesTree { + constructor(elements) { + this.elements = $(elements); + this.session = JSON.parse(sessionStorage.getItem(sessionKey)); + + if (!this.elements.length) { return; } + + this.restore(); + + this.elements.find('.page-icon').on('click', (event) => this.toggle(event.target)); + + $('[data-page-toggleall]').on('click', (event) => { + let element = $(event.target).closest('[data-page-toggleall]'); + let action = element.data('page-toggleall'); + + this[action](); + }); + } + + toggle(elements, dontStore = false) { + if (typeof elements === 'string') { + elements = $(`[data-nav-id="${elements}"]`).find('[data-toggle="children"]'); + } + + elements = $(elements || this.elements); + elements.each((index, element) => { + element = $(element); + let state = this.getState(element.closest('[data-toggle="children"]')); + this[state.isOpen ? 'collapse' : 'expand'](state.id, dontStore); + }); + } + + collapse(elements, dontStore = false) { + if (typeof elements === 'string') { + elements = $(`[data-nav-id="${elements}"]`).find('[data-toggle="children"]'); + } + + elements = $(elements || this.elements); + elements.each((index, element) => { + element = $(element); + let state = this.getState(element); + + if (state.isOpen) { + state.children.hide(); + state.icon.removeClass('children-open').addClass('children-closed'); + if (!dontStore) { delete this.session[state.id]; } + } + }); + + if (!dontStore) { this.save(); } + } + + expand(elements, dontStore = false) { + if (typeof elements === 'string') { + let element = $(`[data-nav-id="${elements}"]`); + let parents = element.parents('[data-nav-id]'); + + // loop back through parents, we don't want to expand an hidden child + if (parents.length) { + parents = parents.find('[data-toggle="children"]:first'); + parents = parents.add(element.find('[data-toggle="children"]:first')); + return this.expand(parents, dontStore); + } + + elements = element.find('[data-toggle="children"]:first'); + } + + elements = $(elements || this.elements); + elements.each((index, element) => { + element = $(element); + let state = this.getState(element); + + if (!state.isOpen) { + state.children.show(); + state.icon.removeClass('children-closed').addClass('children-open'); + if (!dontStore) { this.session[state.id] = 1; } + } + }); + + if (!dontStore) { this.save(); } + } + + restore() { + this.collapse(null, true); + + Object.keys(this.session).forEach((key) => { + this.expand(key, 'no-store'); + }); + } + + save() { + return sessionStorage.setItem(sessionKey, JSON.stringify(this.session)); + } + + getState(element) { + element = $(element); + + return { + id: element.closest('[data-nav-id]').data('nav-id'), + children: element.closest('li.page-item').find('ul:first'), + icon: element.find('.page-icon'), + get isOpen() { return this.icon.hasClass('children-open'); } + }; + } +} + +let Instance = new PagesTree('[data-toggle="children"]'); +export { Instance }; diff --git a/themes/grav/app/plugins/index.js b/themes/grav/app/plugins/index.js new file mode 100644 index 00000000..276dd063 --- /dev/null +++ b/themes/grav/app/plugins/index.js @@ -0,0 +1,24 @@ +import $ from 'jquery'; + +// Plugins sliders details +$('.gpm-name, .gpm-actions').on('click', function(e) { + let element = $(this); + let target = $(e.target); + let tag = target.prop('tagName').toLowerCase(); + + if (tag === 'a' || element.parent('a').length) { return true; } + + let wrapper = element.siblings('.gpm-details').find('.table-wrapper'); + + wrapper.slideToggle({ + duration: 350, + complete: () => { + let visible = wrapper.is(':visible'); + wrapper + .closest('tr') + .find('.gpm-details-expand i') + .removeClass('fa-chevron-' + (visible ? 'down' : 'up')) + .addClass('fa-chevron-' + (visible ? 'up' : 'down')); + } + }); +}); diff --git a/themes/grav/app/themes/index.js b/themes/grav/app/themes/index.js new file mode 100644 index 00000000..8d174e2d --- /dev/null +++ b/themes/grav/app/themes/index.js @@ -0,0 +1,10 @@ +import $ from 'jquery'; + +// Themes Switcher Warning +$(document).on('mousedown', '[data-remodal-target="theme-switch-warn"]', (event) => { + let name = $(event.target).closest('[data-gpm-theme]').find('.gpm-name a:first').text(); + let remodal = $('.remodal.theme-switcher'); + + remodal.find('strong').text(name); + remodal.find('.button.continue').attr('href', $(event.target).attr('href')); +}); diff --git a/themes/grav/app/updates/check.js b/themes/grav/app/updates/check.js new file mode 100644 index 00000000..4991f021 --- /dev/null +++ b/themes/grav/app/updates/check.js @@ -0,0 +1,26 @@ +import $ from 'jquery'; +import { Instance as gpm } from '../utils/gpm'; +import { translations } from 'grav-config'; +import toastr from '../utils/toastr'; + +// Check for updates trigger +$('[data-gpm-checkupdates]').on('click', function() { + let element = $(this); + element.find('i').addClass('fa-spin'); + + gpm.fetch((response) => { + element.find('i').removeClass('fa-spin'); + let payload = response.payload; + + if (!payload) { return; } + if (!payload.grav.isUpdatable && !payload.resources.total) { + toastr.success(translations.PLUGIN_ADMIN.EVERYTHING_UP_TO_DATE); + } else { + var grav = payload.grav.isUpdatable ? 'Grav v' + payload.grav.available : ''; + var resources = payload.resources.total ? payload.resources.total + ' ' + translations.PLUGIN_ADMIN.UPDATES_ARE_AVAILABLE : ''; + + if (!resources) { grav += ' ' + translations.PLUGIN_ADMIN.IS_AVAILABLE_FOR_UPDATE; } + toastr.info(grav + (grav && resources ? ' ' + translations.PLUGIN_ADMIN.AND + ' ' : '') + resources); + } + }, true); +}); diff --git a/themes/grav/app/updates/index.js b/themes/grav/app/updates/index.js new file mode 100644 index 00000000..b15dbb3e --- /dev/null +++ b/themes/grav/app/updates/index.js @@ -0,0 +1,134 @@ +import $ from 'jquery'; +import { config, translations } from 'grav-config'; +import formatBytes from '../utils/formatbytes'; +import { Instance as gpm } from '../utils/gpm'; +import './check'; +import './update'; + +export default class Updates { + constructor(payload = {}) { + this.setPayload(payload); + this.task = `task${config.param_sep}`; + } + + setPayload(payload = {}) { + this.payload = payload; + + return this; + } + + fetch(force = false) { + gpm.fetch((response) => this.setPayload(response), force); + + return this; + } + + maintenance(mode = 'hide') { + let element = $('#updates [data-maintenance-update]'); + + element[mode === 'show' ? 'fadeIn' : 'fadeOut'](); + + if (mode === 'hide') { + $('.badges.with-updates').removeClass('with-updates').find('.badge.updates').remove(); + } + + return this; + } + + grav() { + let payload = this.payload.grav; + + if (payload.isUpdatable) { + let task = this.task; + let bar = ` + + Grav v${payload.available} ${translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE}! (${translations.PLUGIN_ADMIN.CURRENT}v${payload.version}) + `; + + if (!payload.isSymlink) { + bar += ``; + } else { + bar += ``; + } + + $('[data-gpm-grav]').addClass('grav').html(`

${bar}

`); + } + + $('#grav-update-button').on('click', function() { + $(this).html(`${translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT} ${formatBytes(payload.assets['grav-update'].size)}..`); + }); + + return this; + } + + resources() { + if (!this.payload.resources.total) { return this.maintenance('hide'); } + + let map = ['plugins', 'themes']; + let singles = ['plugin', 'theme']; + let task = this.task; + let { plugins, themes } = this.payload.resources; + + if (!this.payload.resources.total) { return this; } + + [plugins, themes].forEach(function(resources, index) { + if (!resources || Array.isArray(resources)) { return; } + let length = Object.keys(resources).length; + let type = map[index]; + + // sidebar + $(`#admin-menu a[href$="/${map[index]}"]`) + .find('.badges') + .addClass('with-updates') + .find('.badge.updates').text(length); + + // update all + let title = type.charAt(0).toUpperCase() + type.substr(1).toLowerCase(); + let updateAll = $(`.grav-update.${type}`); + updateAll.html(` +

+ + ${length} ${translations.PLUGIN_ADMIN.OF_YOUR} ${type} ${translations.PLUGIN_ADMIN.HAVE_AN_UPDATE_AVAILABLE} + ${translations.PLUGIN_ADMIN.UPDATE} All ${title} +

+ `); + + Object.keys(resources).forEach(function(item) { + // listing page + let element = $(`[data-gpm-${singles[index]}="${item}"] .gpm-name`); + let url = element.find('a'); + + if (type === 'plugins' && !element.find('.badge.update').length) { + element.append(`${translations.PLUGIN_ADMIN.UPDATE_AVAILABLE}!`); + } else if (type === 'themes') { + element.append(`
${translations.PLUGIN_ADMIN.UPDATE.toUpperCase()}
`); + } + + // details page + let details = $(`.grav-update.${singles[index]}`); + if (details.length) { + details.html(` +

+ + v${resources[item].available} ${translations.PLUGIN_ADMIN.OF_THIS} ${singles[index]} ${translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE}! + ${translations.PLUGIN_ADMIN.UPDATE} ${singles[index].charAt(0).toUpperCase() + singles[index].substr(1).toLowerCase()} +

+ `); + } + }); + }); + } +} + +let Instance = new Updates(); +export { Instance }; + +// automatically refresh UI for updates (graph, sidebar, plugin/themes pages) after every fetch +gpm.on('fetched', (response, raw) => { + Instance.setPayload(response.payload || {}); + Instance.grav().resources(); +}); + +if (config.enable_auto_updates_check === '1') { + gpm.fetch(); +} diff --git a/themes/grav/app/updates/update.js b/themes/grav/app/updates/update.js new file mode 100644 index 00000000..fa4da70d --- /dev/null +++ b/themes/grav/app/updates/update.js @@ -0,0 +1,19 @@ +import $ from 'jquery'; +import request from '../utils/request'; + +// Dashboard update and Grav update +$('body').on('click', '[data-maintenance-update]', function() { + let element = $(this); + let url = element.data('maintenanceUpdate'); + + element.attr('disabled', 'disabled').find('> .fa').removeClass('fa-cloud-download').addClass('fa-refresh fa-spin'); + + request(url, (response) => { + if (response.type === 'updategrav') { + $('[data-gpm-grav]').remove(); + $('#footer .grav-version').html(response.version); + } + + element.removeAttr('disabled').find('> .fa').removeClass('fa-refresh fa-spin').addClass('fa-cloud-download'); + }); +}); diff --git a/themes/grav/app/utils/formatbytes.js b/themes/grav/app/utils/formatbytes.js new file mode 100644 index 00000000..55cf34c0 --- /dev/null +++ b/themes/grav/app/utils/formatbytes.js @@ -0,0 +1,11 @@ +const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + +export default function formatBytes(bytes, decimals) { + if (bytes === 0) return '0 Byte'; + + let k = 1000; + let value = Math.floor(Math.log(bytes) / Math.log(k)); + let decimal = decimals + 1 || 3; + + return (bytes / Math.pow(k, value)).toPrecision(decimal) + ' ' + sizes[value]; +} diff --git a/themes/grav/app/utils/gpm.js b/themes/grav/app/utils/gpm.js new file mode 100644 index 00000000..e381e637 --- /dev/null +++ b/themes/grav/app/utils/gpm.js @@ -0,0 +1,58 @@ +import { parseJSON, parseStatus, userFeedbackError } from './response'; +import { config } from 'grav-config'; +import { EventEmitter } from 'events'; + +export default class GPM extends EventEmitter { + constructor(action = 'getUpdates') { + super(); + this.payload = {}; + this.raw = {}; + this.action = action; + } + + setPayload(payload = {}) { + this.payload = payload; + this.emit('payload', payload); + + return this; + } + + setAction(action = 'getUpdates') { + this.action = action; + this.emit('action', action); + + return this; + } + + fetch(callback = () => true, flush = false) { + let data = new FormData(); + data.append('task', 'GPM'); + data.append('action', this.action); + + if (flush) { + data.append('flush', true); + } + + this.emit('fetching', this); + + fetch(config.base_url_relative, { + credentials: 'same-origin', + method: 'post', + body: data + }).then((response) => { this.raw = response; return response; }) + .then(parseStatus) + .then(parseJSON) + .then((response) => this.response(response)) + .then((response) => callback(response, this.raw)) + .then((response) => this.emit('fetched', this.payload, this.raw, this)) + .catch(userFeedbackError); + } + + response(response) { + this.payload = response; + + return response; + } +} + +export let Instance = new GPM(); diff --git a/themes/grav/app/utils/jquery-utils.js b/themes/grav/app/utils/jquery-utils.js new file mode 100644 index 00000000..61242386 --- /dev/null +++ b/themes/grav/app/utils/jquery-utils.js @@ -0,0 +1,4 @@ +import $ from 'jquery'; + +// jQuery no parents filter +$.expr[':']['noparents'] = $.expr.createPseudo((text) => (element) => $(element).parents(text).length < 1); diff --git a/themes/grav/app/utils/keepalive.js b/themes/grav/app/utils/keepalive.js new file mode 100644 index 00000000..b99d9e13 --- /dev/null +++ b/themes/grav/app/utils/keepalive.js @@ -0,0 +1,32 @@ +import { config } from 'grav-config'; +import { userFeedbackError } from './response'; + +class KeepAlive { + constructor() { + this.active = false; + } + + start() { + let timeout = config.admin_timeout / 1.5 * 1000; + this.timer = setInterval(() => this.fetch(), timeout); + this.active = true; + } + + stop() { + clearInterval(this.timer); + this.active = false; + } + + fetch() { + let data = new FormData(); + data.append('admin-nonce', config.admin_nonce); + + fetch(`${config.base_url_relative}/task${config.param_sep}keepAlive`, { + credentials: 'same-origin', + method: 'post', + body: data + }).catch(userFeedbackError); + } +} + +export default new KeepAlive(); diff --git a/themes/grav/app/utils/request.js b/themes/grav/app/utils/request.js new file mode 100644 index 00000000..74065d13 --- /dev/null +++ b/themes/grav/app/utils/request.js @@ -0,0 +1,38 @@ +import { parseStatus, parseJSON, userFeedback, userFeedbackError } from './response'; +import { config } from 'grav-config'; + +let raw; +let request = function(url, options = {}, callback = () => true) { + if (typeof options === 'function') { + callback = options; + options = {}; + } + + if (options.method && options.method === 'post' && options.body) { + let data = new FormData(); + + options.body = Object.assign({ 'admin-nonce': config.admin_nonce }, options.body); + Object.keys(options.body).map((key) => data.append(key, options.body[key])); + options.body = data; + } + + options = Object.assign({ + credentials: 'same-origin', + headers: { + 'Accept': 'application/json' + } + }, options); + + return fetch(url, options) + .then((response) => { + raw = response; + return response; + }) + .then(parseStatus) + .then(parseJSON) + .then(userFeedback) + .then((response) => callback(response, raw)) + .catch(userFeedbackError); +}; + +export default request; diff --git a/themes/grav/app/utils/response.js b/themes/grav/app/utils/response.js new file mode 100644 index 00000000..a8829e80 --- /dev/null +++ b/themes/grav/app/utils/response.js @@ -0,0 +1,68 @@ +import toastr from './toastr'; +import { config } from 'grav-config'; + +let error = function(response) { + let error = new Error(response.statusText || response || ''); + error.response = response; + + return error; +}; + +export function parseStatus(response) { + if (response.status >= 200 && response.status < 300) { + return response; + } else { + throw error(response); + } +} + +export function parseJSON(response) { + return response.json(); +} + +export function userFeedback(response) { + let status = response.status; + let message = response.message || null; + let settings = response.toastr || null; + let backup; + + switch (status) { + case 'unauthenticated': + document.location.href = config.base_url_relative; + throw error('Logged out'); + case 'unauthorized': + status = 'error'; + message = message || 'Unauthorized.'; + break; + case 'error': + status = 'error'; + message = message || 'Unknown error.'; + break; + case 'success': + status = 'success'; + message = message || ''; + break; + default: + status = 'error'; + message = message || 'Invalid AJAX response.'; + break; + } + + if (settings) { + backup = Object.assign({}, toastr.options); + Object.keys(settings).forEach((key) => toastr.options[key] = settings[key]); + } + + if (message) { toastr[status === 'success' ? 'success' : 'error'](message); } + + if (settings) { + toastr.options = backup; + } + + return response; +} + +export function userFeedbackError(error) { + toastr.error(`Fetch Failed:
${error.message}
${error.stack}
`); + console.error(`${error.message} at ${error.stack}`); +} diff --git a/themes/grav/app/utils/toastr.js b/themes/grav/app/utils/toastr.js new file mode 100644 index 00000000..80109654 --- /dev/null +++ b/themes/grav/app/utils/toastr.js @@ -0,0 +1,6 @@ +import toastr from 'toastr'; + +toastr.options.positionClass = 'toast-top-right'; +toastr.options.preventDuplicates = true; + +export default toastr; diff --git a/themes/grav/css-compiled/template.css b/themes/grav/css-compiled/template.css index 7619f18a..a0005189 100644 --- a/themes/grav/css-compiled/template.css +++ b/themes/grav/css-compiled/template.css @@ -1,2 +1,2 @@ -@import url(//fonts.googleapis.com/css?family=Montserrat:400|Lato:300,400,700|Ubuntu+Mono:400,700);#admin-login,#admin-logo h3,#admin-main .titlebar h1,#admin-main .titlebar .button-bar,#admin-main .flush-bottom.button-bar .button,#admin-main .danger.button-bar .button,#admin-main .success.button-bar .button,#admin-dashboard #updates .numeric,#admin-dashboard #popularity .stat,#admin-topbar #admin-mode-toggle,#admin-topbar #admin-lang-toggle{position:relative;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.button{display:inline-block;padding:0.3rem 1.5rem;font-weight:300;-webkit-font-smoothing:auto;cursor:pointer;vertical-align:middle;font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}.button:active{margin:1px 0 -1px 0}.button i{margin-right:5px}.button-small.button{padding:2px 10px;font-size:1rem}.button-x-small.button{padding:2px 8px 2px 5px;font-size:0.9rem}html,body{height:100%}body{background:#314D5B;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:#0082BA}a:hover{color:#003b54}b,strong{font-weight:600}.bigger{font-size:1.2rem}.button-bar{text-align:right;float:right;z-index:2}.secondary-accent{background:#349886;color:#fff}.secondary-accent .button-bar{background:#349886}.secondary-accent .button{background:#41bea8}.tertiary-accent{background:#2693B7;color:#fff}.tertiary-accent .button-bar{background:#2693B7}.tertiary-accent .button{background:#2aa4cc;background:#3aafd6;color:rgba(255,255,255,0.85);border-radius:4px}.tertiary-accent .button:hover{background:#4fb8da;color:#fff}.tertiary-accent .button.dropdown-toggle{background:#4fb8da;border-left:1px solid #2aa4cc}.alert{font-size:1.1rem;padding:1rem 3rem}.info{background:#9055AF;color:#fff}.info a{color:#e6e6e6}.info a:hover{color:#fff}.info-reverse{color:#9055AF}.notice{background:#2693B7;color:#fff}.notice a{color:#e6e6e6}.notice a:hover{color:#fff}.error{background:#DA4B46;color:#fff}.error a{color:#e6e6e6}.error a:hover{color:#fff}.badge{display:inline-block;font-size:0.9rem;font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;font-weight:700;border-radius:10px;padding:0px 6px;min-width:20px;line-height:20px;text-align:center}.empty-state{margin:0 auto;text-align:center;padding-top:100px}@font-face{font-family:"rockettheme-apps";font-weight:normal;font-style:normal;src:url("../fonts/rockettheme-apps/rockettheme-apps.eot");src:url("../fonts/rockettheme-apps/rockettheme-apps.eot?#iefix") format("embedded-opentype"),url("../fonts/rockettheme-apps/rockettheme-apps.woff") format("woff"),url("../fonts/rockettheme-apps/rockettheme-apps.ttf") format("truetype"),url("../fonts/rockettheme-apps/rockettheme-apps.svg#rockettheme-apps") format("svg")}i.fa-grav,i.fa-grav-spaceman,i.fa-grav-text,i.fa-grav-full,i.fa-grav-logo,i.fa-grav-symbol,i.fa-grav-logo-both,i.fa-grav-both,i.fa-gantry,i.fa-gantry-logo,i.fa-gantry-symbol,i.fa-gantry-logo-both,i.fa-gantry-both{font-family:'rockettheme-apps';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-grav-logo:before,.fa-grav-text:before{content:"\61"}.fa-grav-symbol:before,.fa-grav:before,.fa-grav-spaceman:before{content:"\62"}.fa-grav-logo-both:before,.fa-grav-both:before,.fa-grav-full:before{content:"\66"}.fa-gantry-logo:before{content:"\64"}.fa-gantry:before,.fa-gantry-symbol:before{content:"\63"}.fa-gantry-logo-both:before,.fa-gantry-both:before{content:"\65"}.default-animation,.tab-bar span,.tab-bar a,.form-tabs>label{-webkit-transition:all 0.5s ease;-moz-transition:all 0.5s ease;transition:all 0.5s ease}.default-border-radius{border-radius:4px}.default-glow-shadow{box-shadow:0 0 20px rgba(0,0,0,0.2)}.default-box-shadow{box-shadow:0 10px 20px rgba(0,0,0,0.2)}.padding-horiz{padding-left:7rem;padding-right:7rem}@media only all and (max-width: 59.938em){.padding-horiz{padding-left:4rem;padding-right:4rem}}@media only all and (max-width: 47.938em){.padding-horiz{padding-left:1rem;padding-right:1rem}}.padding-vert{padding-top:3rem;padding-bottom:3rem}body{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif;font-weight:400;text-rendering:optimizeLegibility;letter-spacing:-0px}body.simple-fonts{font-family:'Helvetica Neue', Helvetica, Arial, sans-serif !important}body.simple-fonts h1,body.simple-fonts h2,body.simple-fonts h3,body.simple-fonts h4,body.simple-fonts h5,body.simple-fonts h6,body.simple-fonts #admin-menu li,body.simple-fonts .button,body.simple-fonts .tab-bar,body.simple-fonts .badge,body.simple-fonts #admin-main .grav-mdeditor-preview,body.simple-fonts .form .note,body.simple-fonts .form-tabs,body.simple-fonts input,body.simple-fonts select,body.simple-fonts textarea,body.simple-fonts button,body.simple-fonts .selectize-input,body.simple-fonts .form-order-wrapper ul#ordering li{font-family:'Helvetica Neue', Helvetica, Arial, sans-serif !important}h1{font-size:3.2rem}@media only all and (max-width: 47.938em){h1{font-size:2.5rem;line-height:1.2;margin-bottom:2.5rem}}@media only all and (min-width: 48em) and (max-width: 59.938em){h2{font-size:2.1rem}}@media only all and (max-width: 47.938em){h2{font-size:2rem}}@media only all and (min-width: 48em) and (max-width: 59.938em){h3{font-size:1.7rem}}@media only all and (max-width: 47.938em){h3{font-size:1.6rem}}@media only all and (min-width: 48em) and (max-width: 59.938em){h4{font-size:1.35rem}}@media only all and (max-width: 47.938em){h4{font-size:1.25rem}}h1{letter-spacing:-3px}h2{letter-spacing:-2px}h3{letter-spacing:-1px}blockquote{border-left:10px solid #F0F2F4}blockquote p{font-size:1.1rem;color:#999}blockquote cite{display:block;text-align:right;color:#666;font-size:1.2rem}blockquote>blockquote>blockquote{margin:0}blockquote>blockquote>blockquote p{padding:15px;display:block;font-size:1rem;margin-top:0rem;margin-bottom:0rem}blockquote>blockquote>blockquote>p{margin-left:-71px;border-left:10px solid #F0AD4E;background:#FCF8F2;color:#df8a13}blockquote>blockquote>blockquote>blockquote>p{margin-left:-94px;border-left:10px solid #D9534F;background:#FDF7F7;color:#b52b27}blockquote>blockquote>blockquote>blockquote>blockquote>p{margin-left:-118px;border-left:10px solid #5BC0DE;background:#F4F8FA;color:#28a1c5}blockquote>blockquote>blockquote>blockquote>blockquote>blockquote>p{margin-left:-142px;border-left:10px solid #5CB85C;background:#F1F9F1;color:#3d8b3d}code,kbd,pre,samp{font-family:"Ubuntu Mono",monospace}code{background:#f9f2f4;color:#9c1d3d}pre{padding:2rem;background:#f6f6f6;border:1px solid #ddd;border-radius:3px}pre code{color:#237794;background:inherit}hr{border-bottom:4px solid #F0F2F4}.label{vertical-align:middle;background:#0082BA;border-radius:100%;color:#fff;height:1rem;min-width:1rem;line-height:1rem;display:inline-block;text-align:center;font-size:0.7rem;font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif;margin-right:0.75rem}.switch-toggle a,.switch-light span span{display:none}@media only screen{.switch-light{display:inline-block;position:relative;overflow:visible;padding:0;margin-left:100px}.switch-light *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-light a{display:block;-webkit-transition:all 0.1s ease-out;-moz-transition:all 0.1s ease-out;transition:all 0.1s ease-out}.switch-light label,.switch-light>span{vertical-align:middle}.switch-light input:focus ~ a,.switch-light input:focus+label{outline:1px dotted #888}.switch-light label{position:relative;z-index:3;display:block;width:100%}.switch-light input{position:absolute;opacity:0;z-index:5}.switch-light input:checked ~ a{right:0%}.switch-light>span{position:absolute;left:-100px;width:100%;margin:0;padding-right:100px;text-align:left}.switch-light>span span{position:absolute;top:0;left:0;z-index:5;display:block;width:50%;margin-left:100px;text-align:center}.switch-light>span span:last-child{left:50%}.switch-light a{position:absolute;right:50%;top:0;z-index:4;display:block;width:50%;height:100%;padding:0}.switch-toggle{display:inline-block;position:relative;padding:0 !important}.switch-toggle *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-toggle a{display:block;-webkit-transition:all 0.1s ease-out;-moz-transition:all 0.1s ease-out;transition:all 0.1s ease-out}.switch-toggle label,.switch-toggle>span{vertical-align:middle}.switch-toggle input:focus ~ a,.switch-toggle input:focus+label{outline:1px dotted #888}.switch-toggle input{position:absolute;opacity:0}.switch-toggle input+label{position:relative;z-index:2;float:left;height:100%;margin:0;text-align:center}.switch-toggle a{position:absolute;top:0;left:0;padding:0;z-index:1;width:50%;height:100%}.switch-toggle input:last-of-type:checked ~ a{left:50%}.switch-toggle.switch-3 label,.switch-toggle.switch-3 a{width:33.33333%}.switch-toggle.switch-3 input:checked:nth-of-type(2) ~ a{left:33.33333%}.switch-toggle.switch-3 input:checked:last-of-type ~ a{left:66.66667%}.switch-toggle.switch-4 label,.switch-toggle.switch-4 a{width:25%}.switch-toggle.switch-4 input:checked:nth-of-type(2) ~ a{left:25%}.switch-toggle.switch-4 input:checked:nth-of-type(3) ~ a{left:50%}.switch-toggle.switch-4 input:checked:last-of-type ~ a{left:75%}.switch-toggle.switch-5 label,.switch-toggle.switch-5 a{width:20%}.switch-toggle.switch-5 input:checked:nth-of-type(2) ~ a{left:20%}.switch-toggle.switch-5 input:checked:nth-of-type(3) ~ a{left:40%}.switch-toggle.switch-5 input:checked:nth-of-type(4) ~ a{left:60%}.switch-toggle.switch-5 input:checked:last-of-type ~ a{left:80%}.switch-grav{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px}.switch-grav label{color:#737C81;-webkit-transition:color 0.2s ease-out;-moz-transition:color 0.2s ease-out;transition:color 0.2s ease-out;padding:5px 20px}.switch-grav>span span{opacity:0;-webkit-transition:all 0.1s;-moz-transition:all 0.1s;transition:all 0.1s}.switch-grav>span span:first-of-type{opacity:1}.switch-grav a{background:#777;border-radius:3px}.switch-grav.switch-toggle input.highlight:checked ~ a{background:#41bea8}.switch-grav.switch-light input:checked ~ a{background-color:#777}.switch-grav.switch-light input:checked ~ span span:first-of-type{opacity:0}.switch-grav.switch-light input:checked ~ span span:last-of-type{opacity:1}.switch-grav input:checked+label{color:#fff}}@media only screen and (-webkit-max-device-pixel-ratio: 2) and (max-device-width: 1280px){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix infinite 1s}}@-webkit-keyframes webkitSiblingBugfix{from{-webkit-transform:translate3d(0, 0, 0)}to{-webkit-transform:translate3d(0, 0, 0)}}form h1,form h3{color:#314D5B;padding:0 3rem 0.5rem;margin:0 0 1rem;border-bottom:3px solid #e1e1e1;font-size:1.5rem;text-align:left;letter-spacing:-1px}form p{padding:0 3rem}form pre{padding:1.5rem 3rem}form .note{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;color:#DA4B46}form .form-field{margin-bottom:1rem;padding-left:3rem}form .form-data{padding-right:3rem}form .required{color:#DA4B46;font-family:helvetica, arial;vertical-align:middle;line-height:1;font-size:30px;margin-left:5px}form label{padding:5px 0;font-weight:400;margin:0}form label.toggleable{display:inline}form input,form select,form textarea,form button,form .selectize-input{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;font-size:1rem;line-height:1.7;border-radius:4px;-webkit-font-smoothing:antialiased}form .selectize-dropdown{z-index:100000}form .form-column>.form-field.grid{display:block}form .form-column>.form-field.grid>.block{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;-webkit-flex:0;-moz-flex:0;-ms-flex:0;flex:0}form .grid.vertical{-webkit-flex-flow:column;-moz-flex-flow:column;flex-flow:column}form .form-select-wrapper,form .selectize-control.single .selectize-input{position:relative}form .form-select-wrapper:after,form .selectize-control.single .selectize-input:after{margin-top:0;border:0;position:absolute;content:'\f078';font-family:'FontAwesome';right:12px;top:50%;line-height:0;color:#9ba2a6;pointer-events:none}form .selectize-control{height:39px}form .selectize-input{box-shadow:none;color:#737C81;padding:5px 30px 5px 10px;margin:0}form .selectize-input>input{font-size:1rem;line-height:1.7}form .selectize-control.multi .selectize-input{padding:0.425rem 0.425rem}form .selectize-control.multi .selectize-input.has-items{padding-top:6px;padding-bottom:4px}form .selectize-control.multi .selectize-input>div{color:#737C81;border-radius:2px;line-height:1.5}form .selectize-control.multi .selectize-input>div.active{background:#d5d5d5}form .selectize-control.single .selectize-input:after{right:27px}form .selectize-control.single .selectize-input.dropdown-active:after{content:'\f077'}form .x-small{max-width:5rem !important}form .small{max-width:10rem !important}form .medium{max-width:20rem}form .medium textarea{height:7rem}form .large{max-width:30rem !important}form .large textarea{height:10rem}form select{width:100%;border:1px solid #d5d5d5;background:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:5px 30px 5px 10px;cursor:pointer;margin:0}form input[type=text],form input[type=password],form input[type=email],form input[type=date]{width:100%;border:1px solid #d5d5d5;background:#fff}form input[readonly=readonly]{background:#f2f2f2;font-weight:bold}form textarea{width:100%;border:1px solid #d5d5d5;background:#fff}form .form-frontmatter-wrapper{border:1px solid #d5d5d5;border-radius:4px}form .switch-toggle label{cursor:pointer}form .switch-toggle a,form .switch-toggle label{outline:none !important}form .dynfields input[type=text],form [data-grav-field="array"] input[type=text]{width:40%;float:left;margin:0 5px 5px 0}form .dynfields .form-row,form [data-grav-field="array"] .form-row{display:inline-block}form .dynfields .form-row span,form [data-grav-field="array"] .form-row span{padding:0.5rem;display:inline-block;line-height:1.7;cursor:pointer}form .dynfields .form-row.array-field-value_only,form [data-grav-field="array"] .form-row.array-field-value_only{width:100%}form .button-bar{margin-top:1rem;background:#e6e6e6;padding:1.2rem 3rem;width:100%;border-bottom-left-radius:5px;border-bottom-right-radius:5px}form .checkboxes{display:inline-block;padding:5px 0}form .checkboxes label{display:inline;cursor:pointer;position:relative;padding:0 0 0 2rem;margin-right:15px}form .checkboxes label:before{content:"";display:inline-block;width:1.5rem;height:1.5rem;top:50%;left:0;margin-top:-0.75rem;margin-right:10px;position:absolute;background:#fff;border:1px solid #d5d5d5;border-radius:4px}form .checkboxes input[type=checkbox]{display:none}form .checkboxes input[type=checkbox]:checked+label:before{content:"\f00c";font-family:"FontAwesome";font-size:1.2rem;line-height:1;text-align:center}form .checkboxes.toggleable label{margin-right:0}.form-display-wrapper p{padding-left:0;padding-right:0}.form-display-wrapper p:first-child{margin-top:0}.form-frontmatter-wrapper{margin-bottom:3rem}.form-frontmatter-wrapper .dragbar{height:4px;background:#d5d5d5;cursor:row-resize}#frontmatter+.CodeMirror{border-radius:4px;padding:10px;height:130px}.form-order-wrapper ul#ordering{list-style:none;margin:0;padding:0}.form-order-wrapper ul#ordering li{padding:0.2rem 1rem;border-radius:4px;border:1px solid #d5d5d5;background:#f8f8f8;color:#8d959a;margin:3px 0;position:relative;font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}.form-order-wrapper ul#ordering li.drag-handle{cursor:move;background:#fff;color:#5b6266}.form-order-wrapper ul#ordering li.drag-handle::after{content:'\f0c9';font-family:FontAwesome;position:absolute;right:10px}.form-list-wrapper ul[data-collection-holder]{list-style:none;margin:0;padding:0}.form-list-wrapper ul[data-collection-holder] li{cursor:move;padding:1rem;border-radius:4px;border:1px solid #d5d5d5;background:#f8f8f8;color:#8d959a;margin:3px 0;position:relative;font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}.form-list-wrapper ul[data-collection-holder] li .item-actions{position:absolute;right:10px;top:4px;color:#5b6266}.form-list-wrapper ul[data-collection-holder] li .item-actions .fa-trash-o{cursor:pointer}.form-list-wrapper .collection-actions{text-align:right}.form-label.block{z-index:10000}.form-label.block:hover{z-index:10005}#admin-main .admin-block h2{font-size:1.25rem;margin:0 0 .5rem;letter-spacing:normal}.form-fieldset{background-color:#f7f7f7;border:2px solid #e1e1e1;margin:1rem 2rem}.form-fieldset--label{background-color:#f3f3f3}.form-fieldset--label:hover,.form-fieldset input:checked+.form-fieldset--label{background-color:#eee}.form-fieldset--label label{display:table;font-size:1.25rem;padding:.5rem 1rem;width:100%}.form-fieldset--label h2{margin:0 !important}.form-fieldset--label .actions{font-size:initial;display:table-cell;text-align:right;vertical-align:middle}.form-fieldset--label+.form-data{margin-top:1rem;padding:0}.form-fieldset--cursor{cursor:pointer}.form-fieldset--info{font-size:small}.form-fieldset>input:checked ~ .form-data,.form-fieldset--collapsible .open,.form-fieldset input:checked ~ .form-label .form-fieldset--collapsible .close{display:block}.form-fieldset>.form-data,.form-fieldset--collapsible .close,.form-fieldset input:checked ~ .form-label .form-fieldset--collapsible .open{display:none}table,tbody,thead{display:inline-block;width:100%}.gpm-details{width:100%;-webkit-box-flex:auto;-moz-box-flex:auto;box-flex:auto;-webkit-flex:auto;-moz-flex:auto;-ms-flex:auto;flex:auto}td{border:0;border-bottom:1px solid #e1e1e1}tr{-webkit-transition:all 0.2s ease;-moz-transition:all 0.2s ease;transition:all 0.2s ease;display:-webkit-box;display:-moz-box;display:box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;box-lines:multiple;-webkit-flex-wrap:wrap;-moz-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}tr th{display:block;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1;font-weight:bold}tr th:first-child{padding-left:3rem}tr th:last-child{padding-right:3rem}tr td{display:block;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}tr td.double{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;-webkit-flex:2;-moz-flex:2;-ms-flex:2;flex:2}tr td:first-child{padding-left:3rem}@media only all and (max-width: 47.938em){tr td:first-child{padding-left:.5rem}tr td:first-child .plugin-update-button{float:left}}tr td:last-child,tr td.gpm-actions{padding-right:3rem}tr td.gpm-actions{line-height:1;text-align:right;position:relative}tr td.gpm-actions .gpm-details-expand{position:absolute;top:12px;right:12px}tr td.gpm-details{margin:0;padding:0;background-color:#f7f7f7}@media only all and (max-width: 47.938em){tr td.gpm-details{word-wrap:break-word}}tr td.gpm-details>.table-wrapper{display:none}tr td.gpm-details>.table-wrapper td{border-bottom:0}tr td.gpm-details tbody{width:100%}tr:last-child td{border-bottom:0}tr:hover{background:#f3f3f3}.k-calendar-container table,.k-calendar-container tbody,.k-calendar-container thead{width:100%}.k-calendar-container thead th:first-child{padding-left:0}.k-calendar-container thead th:last-child{padding-right:0.5rem}.button{background:#41bea8;color:rgba(255,255,255,0.85);border-radius:4px}.button:hover{background:#54c5b0;color:#fff}.button.dropdown-toggle{background:#54c5b0;border-left:1px solid #3bab97}.button.dropdown-toggle{border-left:1px solid #3bab97}.button.secondary{background:#2a7a6b;color:rgba(255,255,255,0.85);border-radius:4px}.button.secondary:hover{background:#318d7c;color:#fff}.button.secondary.dropdown-toggle{background:#318d7c;border-left:1px solid #23675a}.button.secondary.dropdown-toggle{border-left:1px solid #318d7c}.button-group{position:relative;display:inline-block;vertical-align:middle}.button-group>.button:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.button-group>.button:first-child{margin-left:0 !important}.button-group>.button{position:relative;float:left}.button-group>.button+.dropdown-toggle{text-align:center;padding-right:8px;padding-left:8px}.button-group>.button+.dropdown-toggle i{margin:0}.button-group>.button:last-child:not(:first-child),.button-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.button-group .button+.button,.button-group .button+.button-group,.button-group .button-group+.button,.button-group .button-group+.button-group{margin-left:-1px}.button-group .dropdown-menu{position:absolute;top:100%;left:0;right:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#41bea8;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #3bab97;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175)}.button-group .dropdown-menu.language-switcher{min-width:auto}.button-group .dropdown-menu.lang-switcher{min-width:150px;left:inherit}.button-group .dropdown-menu.lang-switcher button{width:100%}.button-group .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#349886}.button-group .dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#fff;white-space:nowrap}.button-group .dropdown-menu li>a:focus,.button-group .dropdown-menu li>a:hover{color:#fff;text-decoration:none;background-color:#349886}.button-group .dropdown-menu.language-switcher a.active{background-color:#349886}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#error{text-align:center;display:flex;align-items:center;justify-content:center;height:100%;padding-bottom:6rem}#error h1{font-size:5rem}#error p{margin:1rem 0}#admin-login{background:#253A47;max-width:24rem;margin:0 auto}#admin-login.wide{max-width:50rem}#admin-login.wide h1{height:100px}#admin-login.wide form>.padding{padding:3rem 2rem 8rem 2rem}#admin-login.wide form>.padding>div{width:50%;display:inline-block;margin-right:-2px}@media only all and (max-width: 47.938em){#admin-login.wide form>.padding>div{width:100%;margin-right:0}}#admin-login.wide form>.padding .form-field{padding:0 1rem}#admin-login.wide form label{padding:0}#admin-login.wide form input{margin-bottom:1rem;text-align:left}#admin-login.wide form input::-webkit-input-placeholder{color:#83949d;font-size:1rem;line-height:2rem}#admin-login.wide form input::-moz-placeholder{color:#83949d;font-size:1rem;line-height:2rem}#admin-login.wide form input:-moz-placeholder{color:#83949d;font-size:1rem;line-height:2rem}#admin-login.wide form input:-ms-input-placeholder{color:#83949d;font-size:1rem;line-height:2rem}#admin-login.wide .grid{display:block}#admin-login.wide .form-label,#admin-login.wide .form-data{display:block;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}#admin-login .form-field{padding-left:0;margin-bottom:0}#admin-login .form-label{display:none}#admin-login .form-data{padding-right:0}#admin-login .wrapper-spacer{width:100% !important;display:block !important;padding:0 1rem}#admin-login .wrapper-spacer h3{padding-left:1rem;color:rgba(255,255,255,0.4);border-bottom:3px solid rgba(255,255,255,0.1)}#admin-login .instructions{display:block;padding:2rem 3rem 0;margin:0;font-size:1.3rem;color:rgba(255,255,255,0.8)}#admin-login .instructions p{margin:0}#admin-login h1{background:#21333e url(../images/logo.png) 50% 50% no-repeat;font-size:0;color:transparent;height:216px;margin:0}#admin-login form{position:relative}#admin-login form .padding{padding:3rem 3rem 6rem 3rem}#admin-login form input{margin-bottom:2rem;background:#314D5B;color:#fff;font-size:1.4rem;line-height:1.5;text-align:center;font-weight:300;-webkit-font-smoothing:auto;border:1px solid #1e2e39}#admin-login form input::-webkit-input-placeholder{color:#83949d}#admin-login form input::-moz-placeholder{color:#83949d}#admin-login form input:-moz-placeholder{color:#83949d}#admin-login form input:-ms-input-placeholder{color:#83949d}#admin-login form .form-actions{display:block !important;width:100% !important;text-align:center;position:absolute;bottom:0;left:0;right:0;padding:1.5rem 3rem}#admin-login form .form-actions button:first-child{margin-right:1rem}#admin-login .alert{text-align:center;padding:1rem 3rem}#admin-sidebar{position:absolute;left:0;top:0;bottom:0;width:20%;background:#253A47}@media only all and (max-width: 47.938em){#admin-sidebar{display:none;width:75%;z-index:999999}}#admin-sidebar a{color:#ccc}#admin-sidebar a:hover{color:#fff}#admin-logo{background:#21333e;height:4.2rem}#admin-logo h3{text-transform:uppercase;margin:0;text-align:center;font-size:1.2rem}#admin-logo h3 i{font-size:1rem;vertical-align:middle;margin-top:-1px}#admin-user-details,.admin-user-details{padding:2rem;border-bottom:1px solid #21333e;overflow:hidden}#admin-user-details img,.admin-user-details img{-webkit-transition:all 0.5s ease;-moz-transition:all 0.5s ease;transition:all 0.5s ease;border-radius:100%;float:left}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-user-details img,.admin-user-details img{float:none}}#admin-user-details:hover img,.admin-user-details:hover img{box-shadow:0px 0px 0 50px #2a4251}#admin-user-details .admin-user-names,.admin-user-details .admin-user-names{margin-left:45px}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-user-details .admin-user-names,.admin-user-details .admin-user-names{margin-left:0}}#admin-user-details .admin-user-names h4,#admin-user-details .admin-user-names h5,.admin-user-details .admin-user-names h4,.admin-user-details .admin-user-names h5{color:#e6e6e6;margin:0;font-size:1rem;line-height:1.3}#admin-user-details .admin-user-names h5,.admin-user-details .admin-user-names h5{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;color:#afc7d5;font-size:0.9rem}#admin-menu{display:block;margin:0;padding:0;list-style:none}#admin-menu li{font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif}#admin-menu li .badges{float:right;margin-right:1rem}#admin-menu li .badges .badge{display:inline-block;margin-right:-5px;color:#e6e6e6}#admin-menu li .badges .count{background-color:#365569}#admin-menu li .badges .updates{background-color:#2693B7;display:none}#admin-menu li .badges.with-updates .count{border-bottom-left-radius:0;border-top-left-radius:0}#admin-menu li .badges.with-updates .updates{border-bottom-right-radius:0;border-top-right-radius:0;display:inline-block}#admin-menu li a{-webkit-transition:all 0.2s ease;-moz-transition:all 0.2s ease;transition:all 0.2s ease;display:block;padding-left:25px;padding-top:0.7rem;padding-bottom:0.7rem;color:#d1dee7}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-menu li a{padding-left:20px}}#admin-menu li a i{-webkit-transition:all 0.2s ease;-moz-transition:all 0.2s ease;transition:all 0.2s ease;color:#afc7d5;margin-right:8px}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-menu li a i{display:none}}#admin-menu li a:hover{background:#21333e;color:#fff}#admin-menu li a:hover i{font-size:1.2rem}#admin-menu li.selected a{background:#314D5B;color:#fff;padding-left:16px;border-left:9px solid #349886}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-menu li.selected a{padding-left:11px}}#admin-menu li.selected a i{color:#e1eaf0}#admin-main{margin-left:20%}@media only all and (max-width: 47.938em){#admin-main{width:100%;margin-left:0}}#admin-main .hint:after,#admin-main [data-hint]:after{font-size:0.9rem;width:400px;line-height:inherit;white-space:normal}#admin-main h1{margin:0;font-size:1.5rem;text-align:left;letter-spacing:-1px}#admin-main .padding{padding:3rem}#admin-main .titlebar{position:relative;height:4.2rem;padding:0 3rem}@media only all and (max-width: 47.938em){#admin-main .titlebar{height:7.2rem;margin-top:-5.5rem;position:relative}}@media only all and (max-width: 47.938em){#admin-main .titlebar h1{transform:inherit;top:5px;font-size:1.2rem;display:block;text-align:center;padding:20px 0px;margin-top:-90px;z-index:2}#admin-main .titlebar h1>i:first-child:before{content:"\f0c9"}}@media only all and (max-width: 381px){#admin-main .titlebar h1{margin-top:-138px}}@media only all and (max-width: 47.938em){#admin-main .titlebar h1 .fa-th{cursor:pointer;float:left}}#admin-main .titlebar .button-bar{padding:0}@media only all and (max-width: 47.938em){#admin-main .titlebar .button-bar{text-align:center;display:block;float:none;margin:5rem auto 0px;padding-top:70px}}#admin-main .titlebar .preview{color:#fff;font-size:90%}#admin-main .titlebar .button{padding:0.3rem 0.6rem}@media only all and (max-width: 47.938em){#admin-main .titlebar .button{padding:0.2rem 0.5rem;font-size:0.9rem}}#admin-main .titlebar .button i{font-size:13px}#admin-main .admin-block .grav-update,#admin-main .admin-block .alert{margin-top:-2rem;margin-bottom:2rem}#admin-main .grav-update{padding:0 3rem;margin-top:-3rem;background:#9055AF;color:#fff}#admin-main .grav-update:after{content:"";display:table;clear:both}#admin-main .grav-update.plugins{padding-right:1rem}#admin-main .grav-update .button{float:right;margin-top:0.6rem;margin-left:1rem;line-height:1.5;background:#73448c;color:rgba(255,255,255,0.85);border-radius:4px}#admin-main .grav-update .button:hover{background:#814c9d;color:#fff}#admin-main .grav-update .button.dropdown-toggle{background:#814c9d;border-left:1px solid #653c7b}#admin-main .grav-update p{line-height:3rem;margin:0}#admin-main .grav-update i{padding-right:0.5rem}#admin-main .grav-update .less{color:rgba(255,255,255,0.75)}#admin-main .grav-update.grav{margin-top:0;-webkit-transition:margin-top 0.15s ease-out;-moz-transition:margin-top 0.15s ease-out;transition:margin-top 0.15s ease-out}@media only all and (max-width: 47.938em){#admin-main .grav-update.grav{position:absolute;z-index:9;bottom:0;width:100%}#admin-main .grav-update.grav p *{display:none}#admin-main .grav-update.grav p{font-size:0}#admin-main .grav-update.grav p button{width:95%;display:inherit;position:absolute;top:0;left:0;margin-left:2.5%;margin-right:2.5%;padding-left:0}}#admin-main .grav-update.grav+.content-padding{top:7.2rem;-webkit-transition:top 0.15s ease-out;-moz-transition:top 0.15s ease-out;transition:top 0.15s ease-out}@media only all and (max-width: 47.938em){#admin-main .grav-update.grav+.content-padding{top:7.2rem;padding-bottom:8rem;padding-top:0rem}}#admin-main .content-padding{position:absolute;top:4.2rem;bottom:0;left:20%;right:0;overflow-y:auto;padding:2.5rem}@media only all and (max-width: 47.938em){#admin-main .content-padding{top:7.2rem;left:0}}#admin-main .admin-block{background:#eee;color:#737C81;padding:2rem 0}#admin-main .admin-block h1{color:#314D5B;padding:0 3rem 0.5rem;margin:0 0 1rem;border-bottom:3px solid #e1e1e1}@media only all and (max-width: 47.938em){#admin-main .admin-block h1{padding:0 0 0.5rem;margin:0 0 1rem !important;text-indent:3rem}}#admin-main .admin-block h1.no_underline{border-bottom:0}#admin-main .admin-block .button-bar{margin-right:3rem}@media only all and (max-width: 47.938em){#admin-main .admin-block .button-bar{width:100%;margin:-.5rem 0 1rem 0;text-align:center}#admin-main .admin-block .button-bar .button{width:100%}}#admin-main .flush-bottom.button-bar{margin:1rem -2rem -1rem;height:70px;padding:0 1rem;float:none}@media only all and (max-width: 47.938em){#admin-main .flush-bottom.button-bar{height:auto;padding:2rem 1rem 0rem 1rem}}@media only all and (max-width: 47.938em){#admin-main .flush-bottom.button-bar .button{margin-left:0 !important;margin-bottom:.5rem;width:100%}}#admin-main .danger,#admin-main .success{position:relative}#admin-main .danger.button-bar,#admin-main .success.button-bar{margin:2rem 0 -2rem;height:70px;padding:1rem;float:none;background:#e9e9e9}#admin-main .danger.button-bar .button{background:#DA4B46;color:rgba(255,255,255,0.85);border-radius:4px}#admin-main .danger.button-bar .button:hover{background:#de605b;color:#fff}#admin-main .danger.button-bar .button.dropdown-toggle{background:#de605b;border-left:1px solid #d63631}#admin-dashboard:after{content:"";display:table;clear:both}#admin-dashboard .dashboard-item{float:left;width:50%;margin-bottom:2.5rem}@media only all and (max-width: 47.938em){#admin-dashboard .dashboard-item{width:100%}}#admin-dashboard .dashboard-item>div{padding:1rem 2rem}#admin-dashboard .dashboard-left{padding-right:1.25rem}@media only all and (max-width: 47.938em){#admin-dashboard .dashboard-left{padding-right:0rem}}#admin-dashboard .dashboard-right{padding-left:1.25rem}@media only all and (max-width: 47.938em){#admin-dashboard .dashboard-right{padding-left:0rem}}#admin-dashboard #updates p{text-align:center;color:rgba(255,255,255,0.96);margin:0}#admin-dashboard #updates .updates-chart{width:50%;float:left}#admin-dashboard #updates .chart-wrapper{position:relative}#admin-dashboard #updates .backups-chart{position:relative;width:50%;float:left}#admin-dashboard #updates .numeric{display:block;position:absolute;width:100%;text-align:center;font-size:1.7rem;line-height:1}#admin-dashboard #updates .numeric em{display:block;font-style:normal;font-size:1rem;color:rgba(255,255,255,0.85)}#admin-dashboard #updates .admin-update-charts{min-height:191px}#admin-dashboard #updates .admin-update-charts:after{content:"";display:table;clear:both}#admin-dashboard #updates .button{margin-left:0.5rem}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-dashboard #updates .button{width:49%;padding:.3rem 0rem;margin-left:0}}#admin-dashboard #popularity p{text-align:center;color:rgba(255,255,255,0.95);margin:0}#admin-dashboard #popularity .button-bar{height:100px;padding:0 1rem}#admin-dashboard #popularity .stat{display:block;float:left;width:33%;text-align:center}#admin-dashboard #popularity .stat b{display:block;font-size:2.5rem;line-height:1;font-weight:300}#admin-dashboard #popularity .stat i{display:block;font-style:normal;color:rgba(255,255,255,0.75)}#admin-dashboard .tertiary-accent{background-color:#2693B7;background-image:-webkit-linear-gradient(#2693B7,#64c0df);background-image:linear-gradient(#2693B7,#64c0df)}#admin-dashboard .secondary-accent{background-color:#349886;background-image:-webkit-linear-gradient(#349886,#67cbb9);background-image:linear-gradient(#349886,#67cbb9)}.no-flick,.card-item{-webkit-transform:translate3d(0, 0, 0)}.card-row{-webkit-box-pack:justify;-moz-box-pack:justify;box-pack:justify;-webkit-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-ms-flex-pack:justify}.card-item{overflow:hidden;padding:1rem;margin:0;position:relative;width:31%;border:1px solid #e1e1e1;background:#fff;margin-bottom:2rem}@media only all and (min-width: 48em) and (max-width: 59.938em){.card-item{width:48%}}@media only all and (max-width: 47.938em){.card-item{width:100%}}.card-item h4{font-size:1.2rem;line-height:1.2}.user-details{text-align:center}.user-details img{border-radius:100%}.user-details h2{margin:0;font-size:1.8rem}.user-details h5{color:#8d959a;font-size:1.1rem;margin:0}#footer{text-align:center;padding:3rem 0 1rem}.ct-chart .ct-series .ct-bar{stroke-width:20px}.ct-chart .ct-series.ct-series-a .ct-bar{stroke:rgba(255,255,255,0.85) !important}.ct-chart .ct-series.ct-series-a .ct-slice-donut{stroke:#fff !important}.ct-chart .ct-series.ct-series-b .ct-slice-donut{stroke:rgba(255,255,255,0.2) !important}#popularity .ct-chart{margin:0 -10px -10px}#popularity .ct-chart .ct-chart-bar{padding:10px}#latest .page-title,#latest .page-route{overflow:auto}#latest .last-modified{padding-left:10px}#overlay{position:fixed;width:25%;height:100%;z-index:999999;left:75%;top:0;display:none}.gpm-item-info+#blueprints .block-tabs{padding-top:16px}.pages-list{list-style:none;margin:0;padding:0;border-top:1px solid #e1e1e1}.pages-list ul{list-style:none;margin:0;padding:0}.pages-list li{margin:0;padding:0}.pages-list .row{-webkit-transition:all 0.2s ease;-moz-transition:all 0.2s ease;transition:all 0.2s ease;border-bottom:1px solid #e1e1e1;line-height:2.5rem;padding-right:3rem}.pages-list .row:hover{background:#f3f3f3}.pages-list .row p.page-route{display:block;margin:-10px 0 5px 25px;line-height:1;font-size:0.9rem;color:#888;text-shadow:1px 1px 0 #fff}.pages-list .row p.page-route .spacer{color:#d5d5d5;display:inline-block;margin:0 0.3rem}.pages-list .row .hint--bottom:before,.pages-list .row .hint--bottom:after{left:4px}.pages-list .row .hint:after,.pages-list .row [data-hint]:after{border-radius:2px}.pages-list .row .badge.lang{background-color:#aaa;color:white;margin-left:8px}.pages-list .row .badge.lang.info{background-color:#9055AF}.pages-list .page-tools{display:inline-block;float:right;font-size:1.4rem}.pages-list .page-tools i{margin-left:10px}.pages-list .page-home{font-size:1.4rem;margin-left:10px;color:#bbb;vertical-align:middle}.pages-list .page-info{font-size:1.1rem;margin-left:10px;color:#bbb;vertical-align:middle}.pages-list .page-icon{color:#0082BA;font-weight:700}.pages-list .page-icon.children-open:before{content:'\f056'}.pages-list .page-icon.children-closed:before{content:'\f055'}.pages-list .page-icon.not-routable{color:#CE431D}.pages-list .page-icon.not-visible{color:#999}.pages-list .page-icon.modular{color:#9055AF}#page-filtering{margin:-2rem 3rem 1rem}#page-filtering:after{content:"";display:table;clear:both}#page-filtering .page-filters{width:60%;float:left}@media only all and (max-width: 47.938em){#page-filtering .page-filters{width:100%}}#page-filtering .page-search{position:relative;width:40%;float:left;padding-left:2rem;text-indent:2.5rem}#page-filtering .page-search:after{position:absolute;right:15px;top:10px;content:'\f002';font-family:'FontAwesome'}@media only all and (max-width: 47.938em){#page-filtering .page-search{width:100%;padding-top:1rem;padding-left:0rem}#page-filtering .page-search:after{top:1.5rem}}#page-filtering .page-shortcuts{clear:both;padding-top:5px}#page-filtering .page-shortcuts:after{content:"";display:table;clear:both}#page-filtering .page-shortcuts .button{background:#aaa;color:rgba(255,255,255,0.85);border-radius:4px}#page-filtering .page-shortcuts .button:hover{background:#b7b7b7;color:#fff}#page-filtering .page-shortcuts .button.dropdown-toggle{background:#b7b7b7;border-left:1px solid #9d9d9d}#page-filtering .selectize-control.multi .selectize-input{padding:0.425rem 0.425rem}#page-filtering .selectize-control.multi .selectize-input.has-items{padding-top:6px;padding-bottom:4px}#page-filtering .selectize-control.multi .selectize-input input{font-size:1rem;line-height:1.7}#page-filtering .selectize-control.multi .selectize-input>div,#page-filtering .selectize-control.multi .selectize-input>div.active{color:#777;padding:2px 10px}#page-filtering .selectize-control.multi .selectize-input>div[data-value='Routable'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='Routable']{background:#CE431D;color:#fff}#page-filtering .selectize-control.multi .selectize-input>div[data-value='NonRoutable'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='NonRoutable']{color:#CE431D}#page-filtering .selectize-control.multi .selectize-input>div[data-value='Visible'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='Visible']{background:#71B15E;color:#fff}#page-filtering .selectize-control.multi .selectize-input>div[data-value='NonVisible'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='NonVisible']{color:#71B15E}#page-filtering .selectize-control.multi .selectize-input>div[data-value='Modular'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='Modular']{background:#9055AF;color:#fff}#page-filtering .selectize-control.multi .selectize-input>div[data-value='NonModular'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='NonModular']{color:#9055AF}#page-filtering .selectize-control.multi .selectize-input>div[data-value='Published'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='Published']{background:#0093B8;color:#fff}#page-filtering .selectize-control.multi .selectize-input>div[data-value='NonPublished'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='NonPublished']{color:#0093B8}.admin-form-wrapper{position:relative}#admin-topbar{position:absolute;right:0.5rem;height:3.5rem}@media only all and (max-width: 47.938em){#admin-topbar{width:100%;right:0;top:.25rem;padding:0 .5rem}}#admin-topbar #admin-mode-toggle,#admin-topbar #admin-lang-toggle{height:37px;display:inline-block;vertical-align:inherit}#admin-topbar #admin-lang-toggle{z-index:10}#admin-topbar #admin-lang-toggle button{background:#73448c;color:rgba(255,255,255,0.85);border-radius:4px}#admin-topbar #admin-lang-toggle button:hover{background:#814c9d;color:#fff}#admin-topbar #admin-lang-toggle button.dropdown-toggle{background:#814c9d;border-left:1px solid #653c7b}#admin-topbar #admin-lang-toggle .dropdown-menu{background:#9055AF}#admin-topbar #admin-lang-toggle .dropdown-menu button{background:transparent;color:#fff;width:100%}#admin-topbar .switch-grav{border:0;background-color:#365569}@media only all and (max-width: 47.938em){#admin-topbar .switch-toggle{width:100%}}#admin-topbar .switch-toggle input:checked+label{color:#fff}#admin-topbar .switch-toggle input+label{color:#d1dee7}#admin-topbar .switch-toggle input.highlight:checked ~ a{background:#3aafd6}body .selectize-dropdown .optgroup-header{color:#000;border-bottom:1px solid #eee;background-color:#fafafa}.depth-0 .row{padding-left:3rem}.depth-1 .row{padding-left:6rem}.depth-2 .row{padding-left:9rem}.depth-3 .row{padding-left:12rem}.depth-4 .row{padding-left:15rem}.depth-5 .row{padding-left:18rem}.depth-6 .row{padding-left:21rem}.depth-7 .row{padding-left:24rem}.depth-8 .row{padding-left:27rem}.depth-9 .row{padding-left:30rem}.hidden{display:none !important}.switch-toggle input[type="radio"]{display:none !important}html.remodal_lock,body.remodal_lock{overflow:hidden}.remodal,[data-remodal-id]{visibility:hidden}.remodal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;display:none;overflow:auto;-webkit-overflow-scrolling:touch;text-align:center}.remodal-overlay:after{display:inline-block;height:100%;margin-left:-0.05em;content:''}.remodal-overlay>*{-webkit-transform:translateZ(0px)}.remodal{position:relative;display:inline-block;text-align:left}.remodal-bg{-webkit-transition-property:filter;-moz-transition-property:filter;transition-property:filter;-webkit-transition-duration:0.2s;-moz-transition-duration:0.2s;transition-duration:0.2s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear;transition-timing-function:linear}.remodal-overlay{opacity:0;background:rgba(33,36,46,0.8);-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;transition:opacity 0.2s linear}body.remodal_active .remodal-overlay{opacity:1}.remodal{width:100%;min-height:100%;padding-top:2rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:16px;background:#eee;background-clip:padding-box;color:#737C81;box-shadow:0 10px 20px rgba(0,0,0,0.5);-webkit-transform:scale(0.95);-moz-transform:scale(0.95);-ms-transform:scale(0.95);-o-transform:scale(0.95);transform:scale(0.95);-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;transition-property:transform;-webkit-transition-duration:0.2s;-moz-transition-duration:0.2s;transition-duration:0.2s;-webkit-transition-timing-function:linear;-moz-transition-timing-function:linear;transition-timing-function:linear}body.remodal_active .remodal{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.remodal,.remodal-overlay:after{vertical-align:middle}.remodal-close{position:absolute;top:10px;right:10px;color:#737C81;text-decoration:none;text-align:center;-webkit-transition:background 0.2s linear;-moz-transition:background 0.2s linear;transition:background 0.2s linear}.remodal-close:after{display:block;font-family:FontAwesome;content:"\f00d";font-size:28px;line-height:28px;cursor:pointer;text-decoration:none}.remodal-close:hover,.remodal-close:active{color:#43484b}@media only screen and (min-width: 40.063em){.remodal{max-width:700px;margin:20px auto;min-height:0;border-radius:6px}}.tab-bar{background:#253A47;margin:0;padding:0;list-style:none;font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif}.tab-bar:after{content:"";display:table;clear:both}.tab-bar li{display:block;float:left;height:3.5em}.tab-bar li.active span,.tab-bar li.active a{background:#eee;color:#737C81}@media only all and (max-width: 47.938em){.tab-bar li{width:100%}.tab-bar li span,.tab-bar li a{width:100%;text-align:center}}.tab-bar span,.tab-bar a{display:inline-block;padding:0 4rem;line-height:3.5em;color:#d1dee7}.tab-bar span:hover,.tab-bar a:hover{color:#fff;background:#141f25}@-webkit-keyframes show{from{opacity:0}to{opacity:1}}@-moz-keyframes show{from{opacity:0}to{opacity:1}}@keyframes show{from{opacity:0}to{opacity:1}}.form-tabs{background:#253A47;font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif;margin-top:-4rem}@media only all and (max-width: 47.938em){.form-tabs{padding-top:4rem}}.form-tabs>input[type=radio]{display:none}.form-tabs>input[type=radio]:checked+label{background:#eee;color:#737C81}.form-tabs>label{display:inline-block;cursor:pointer;color:#d1dee7;height:3.5em;text-align:center;line-height:3.5em;padding:0 2rem}@media only all and (max-width: 47.938em){.form-tabs>label{width:100%}}.form-tabs>label:last-of-type{border-bottom:none}.form-tabs>label:hover{color:#fff;background:#2a4251}.tab-body{position:absolute;top:-9999px;opacity:0;width:100%}.tab-body-wrapper{padding-top:3.5em;background:#eee}#tab1:checked ~ .tab-body-wrapper #tab-body-1,#tab2:checked ~ .tab-body-wrapper #tab-body-2,#tab3:checked ~ .tab-body-wrapper #tab-body-3,#tab4:checked ~ .tab-body-wrapper #tab-body-4,#tab5:checked ~ .tab-body-wrapper #tab-body-5,#tab6:checked ~ .tab-body-wrapper #tab-body-6,#tab7:checked ~ .tab-body-wrapper #tab-body-7,#tab8:checked ~ .tab-body-wrapper #tab-body-8,#tab9:checked ~ .tab-body-wrapper #tab-body-9,#tab10:checked ~ .tab-body-wrapper #tab-body-10{position:relative;top:0px;opacity:1}.grav-mdeditor .CodeMirror-scroll{margin-right:-36px;padding-bottom:36px}.grav-mdeditor-fullscreen{position:fixed;top:0;left:0;bottom:0;right:0;z-index:99999}.grav-mdeditor-fullscreen .grav-mdeditor-content,.grav-mdeditor-fullscreen .grav-mdeditor-code,.grav-mdeditor-fullscreen .CodeMirror-wrap,.grav-mdeditor-fullscreen .grav-mdeditor-preview{height:100% !important}.grav-mdeditor-fullscreen .grav-mdeditor-navbar,.grav-mdeditor-fullscreen .grav-mdeditor-navbar ul li:first-child a,.grav-mdeditor-fullscreen .grav-mdeditor-navbar-flip ul li:last-child a{border-radius:0}.grav-mdeditor-navbar{border:1px solid #d5d5d5;border-top-right-radius:4px;border-top-left-radius:4px;background:#fbfbfb}.grav-mdeditor-navbar:after{content:"";display:table;clear:both}.grav-mdeditor-navbar ul{list-style:none;margin:0;padding:0}.grav-mdeditor-navbar ul li{float:left;padding:inherit !important;margin:inherit !important;border-radius:inherit !important;border:inherit !important}.grav-mdeditor-navbar ul li:first-child a{border-top-left-radius:4px}.grav-mdeditor-navbar ul .mdeditor-active a{background:white;cursor:auto;border-left:1px solid #d5d5d5;border-right:1px solid #d5d5d5}.grav-mdeditor-navbar ul .mdeditor-active a:hover{background:#fff}.grav-mdeditor-navbar ul a{display:block;cursor:pointer;line-height:3rem;height:3rem;padding:0 1rem;color:#737C81}.grav-mdeditor-navbar ul a:hover{background:#f3f3f3;color:#5b6266}.grav-mdeditor-navbar-nav{float:left}.grav-mdeditor-navbar-flip{float:right}.grav-mdeditor-navbar-flip ul li:last-child a{border-top-right-radius:4px}.grav-mdeditor-content{cursor:text;border:1px solid #d5d5d5;border-top:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.grav-mdeditor-content:after{content:"";display:table;clear:both}.grav-mdeditor-code .CodeMirror{padding:10px 20px 20px 20px;border-bottom-left-radius:4px}.grav-mdeditor-preview{padding:20px;overflow-y:scroll;position:relative;background:#fbfbfb;border-bottom-right-radius:4px}.grav-mdeditor-navbar p{margin-top:10px;margin-bottom:10px;padding-left:20px}#admin-main .grav-mdeditor-preview{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}#admin-main .grav-mdeditor-preview h1,#admin-main .grav-mdeditor-preview h2,#admin-main .grav-mdeditor-preview h3,#admin-main .grav-mdeditor-preview h4,#admin-main .grav-mdeditor-preview h5,#admin-main .grav-mdeditor-preview h6{color:#5b6266}#admin-main .grav-mdeditor-preview h1{font-size:2rem;border:0}#admin-main .grav-mdeditor-preview h2{font-size:1.6rem}#admin-main .grav-mdeditor-preview h3{font-size:1.4rem}#admin-main .grav-mdeditor-preview h4{font-size:1.2rem}#admin-main .grav-mdeditor-preview h5{font-size:1.1rem}#admin-main .grav-mdeditor-preview p,#admin-main .grav-mdeditor-preview h1{padding:0}[data-mode=tab][data-active-tab=code] .grav-mdeditor-preview,[data-mode=tab][data-active-tab=preview] .grav-mdeditor-code{display:none}[data-mode=split] .grav-mdeditor-button-code,[data-mode=split] .grav-mdeditor-button-preview{display:none}[data-mode=split] .grav-mdeditor-code{border-right:1px solid #d5d5d5}[data-mode=split] .grav-mdeditor-code,[data-mode=split] .grav-mdeditor-code .grav-mdeditor-preview{float:left;width:50%}.cm-s-paper.CodeMirror{color:#676f74;font-size:14px;line-height:1.4}.cm-s-paper.CodeMirror pre{font-family:"DejaVu Sans Mono", Menlo, Monaco, Consolas, Courier, monospace}.cm-s-paper .cm-link{color:#005e87}.cm-s-paper .cm-comment{color:#80898e}.cm-s-paper .cm-header{color:#4f5559}.cm-s-paper .cm-strong{color:#5b6266}.cm-s-paper .cm-em{color:#4f5559}.cm-s-paper .cm-string{color:#0082BA}.cm-s-paper .cm-tag{color:#349886}.cm-s-paper .cm-bracket{color:#41bea8}.cm-s-paper .cm-variable{color:#4f5559}.cm-s-paper .cm-variable-2{color:#80898e}.cm-s-paper .cm-variable-3{color:#8d959a}.cm-s-paper .cm-hr{color:#d1d4d6;font-weight:bold}.cm-s-paper .cm-keyword{color:#0082BA}.cm-s-paper .cm-atom{color:#9055AF}.cm-s-paper .cm-meta{color:#676f74}.cm-s-paper .cm-number{color:#7f8c8d}.cm-s-paper .cm-def{color:#00f}.cm-s-paper .cm-variable{color:black}.cm-s-paper .cm-variable-2{color:#555}.cm-s-paper .cm-variable-3{color:#085}.cm-s-paper .cm-property{color:black}.cm-s-paper .cm-operator{color:black}.cm-s-paper .cm-string-2{color:#f50}.cm-s-paper .cm-meta{color:#555}.cm-s-paper .cm-error{color:#f00}.cm-s-paper .cm-qualifier{color:#555}.cm-s-paper .cm-builtin{color:#555}.cm-s-paper .cm-attribute{color:#7f8c8d}.cm-s-paper .cm-quote{color:#888}.cm-s-paper .cm-header-1{font-size:140%}.cm-s-paper .cm-header-2{font-size:120%}.cm-s-paper .cm-header-3{font-size:110%}.cm-s-paper .cm-negative{color:#d44}.cm-s-paper .cm-positive{color:#292}.cm-s-paper .cm-header,.cm-s-paper .cm-strong{font-weight:bold}.cm-s-paper .cm-em{font-style:italic}.cm-s-paper .cm-link{text-decoration:underline}.cm-s-paper .cm-invalidchar{color:#f00}.form-uploads-wrapper h3{font-size:1rem;margin:2rem 0 0.5rem 0}.dropzone{position:relative;border:1px #d5d5d5 solid;border-radius:4px;min-height:4rem;background:#fff}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-drag-hover{border-color:rgba(0,0,0,0.15);background:rgba(0,0,0,0.04)}.dropzone.dz-started .dz-message{display:none}.dropzone .dz-message{opacity:1;-ms-filter:none;filter:none}.dropzone .dz-preview{position:relative;display:inline-block;margin:1rem;vertical-align:top}.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail]{display:none}.dropzone .dz-preview.dz-error .dz-error-mark{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{color:#fff;font-family:FontAwesome;display:none;position:absolute;width:22px;height:22px;font-size:18px;line-height:25px;border-radius:100%;text-align:center;right:2px;top:2px}.dropzone .dz-preview .dz-success-mark span,.dropzone .dz-preview .dz-error-mark span{display:none}.dropzone .dz-preview:hover .dz-success-mark,.dropzone .dz-preview:hover .dz-error-mark{display:none}.dropzone .dz-preview .dz-success-mark{background-color:#41bea8}.dropzone .dz-preview .dz-success-mark::after{content:'\f00c'}.dropzone .dz-preview .dz-error-mark{background-color:#D55A4E}.dropzone .dz-preview .dz-error-mark::after{content:'\f12a'}.dropzone .dz-preview .dz-progress{position:absolute;top:100px;left:0px;right:0px;height:4px;background:#d7d7d7;display:none}.dropzone .dz-preview .dz-progress .dz-upload{display:block;position:absolute;top:0;bottom:0;left:0;width:0%;background-color:#41bea8}.dropzone .dz-preview .dz-error-message{display:none;position:absolute;top:0;left:0;right:0;font-size:0.9rem;line-height:1.2;padding:8px 10px;background:#f6f6f6;color:#D55A4E;z-index:500}.dropzone .dz-preview.dz-processing .dz-progress{display:block}.dropzone .dz-preview:hover:not(.hide-backface) .dz-details img{display:none}.dropzone .dz-preview:hover.dz-error .dz-error-message{display:block}.dropzone .dz-preview .dz-remove,.dropzone .dz-preview .dz-insert{display:none}.dropzone .dz-preview:hover .dz-remove,.dropzone .dz-preview:hover .dz-insert{display:block;position:absolute;left:0;right:0;bottom:22px;border:1px solid #e1e1e1;width:50%;text-align:center;cursor:pointer;font-size:0.8rem}.dropzone .dz-preview:hover .dz-remove:hover,.dropzone .dz-preview:hover .dz-insert:hover{background:#eee}.dropzone .dz-preview:hover .dz-remove{left:inherit;border-left:0}.dropzone .dz-preview:hover .dz-insert{right:inherit}.dropzone .dz-preview.dz-processing .dz-details{overflow:hidden}.dropzone .dz-preview.dz-processing .dz-details img{position:absolute;left:50%;top:50%;height:auto;width:100%;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.dropzone .dz-preview .dz-details{width:150px;height:100px;position:relative;background:#f6f6f6;border:1px solid #e1e1e1;font-size:0.8rem;padding:5px;margin-bottom:22px}.dropzone .dz-preview .dz-details .dz-filename{line-height:1.2;overflow:hidden;height:100%}.dropzone .dz-preview .dz-details img{position:absolute;top:0;left:0;width:150px;height:100px}.dropzone .dz-preview .dz-details .dz-size{position:absolute;bottom:-28px;left:0;right:0;text-align:center;font-size:0.8rem;height:28px;line-height:28px}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message span{cursor:pointer;color:#c3c7ca;text-align:center;font-size:1.4rem;line-height:4rem}.dropzone *{cursor:default}.toast-title{font-weight:bold}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#ffffff}.toast-message a:hover{color:#cccccc;text-decoration:none}.toast-close-button{position:relative;right:-0.3em;top:-0.3em;float:right;font-size:20px;font-weight:bold;color:#ffffff;-webkit-text-shadow:0 1px 0 #ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:hover,.toast-close-button:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-right{top:5rem;right:1.5rem}#toast-container{position:fixed;z-index:999999}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;color:#ffffff;opacity:0.9;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=90);filter:alpha(opacity=90)}#toast-container>:hover{opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important}#toast-container.toast-top-center>div,#toast-container.toast-bottom-center>div{width:300px;margin:auto}#toast-container.toast-top-full-width>div,#toast-container.toast-bottom-full-width>div{width:96%;margin:auto}.toast{background-color:#030303}.toast-success{background-color:#9055AF}.toast-success .button{background:#9b66b7;background:#a778bf;color:rgba(255,255,255,0.85);border-radius:4px}.toast-success .button:hover{background:#b289c7;color:#fff}.toast-success .button.dropdown-toggle{background:#b289c7;border-left:1px solid #9b66b7}.toast-error{background-color:#DA4B46}.toast-error .button{background-color:#c62d28;background:#9b231f;color:rgba(255,255,255,0.85);border-radius:4px}.toast-error .button:hover{background:#b02823;color:#fff}.toast-error .button.dropdown-toggle{background:#b02823;border-left:1px solid #861e1b}.toast-info{background-color:#2693B7}.toast-info .button{background-color:#1d718d;background:#144f63;color:rgba(255,255,255,0.85);border-radius:4px}.toast-info .button:hover{background:#196078;color:#fff}.toast-info .button.dropdown-toggle{background:#196078;border-left:1px solid #103e4d}.toast-warning{background-color:#f89406}.toast-warning .button{background-color:#c67605;background:#945904;color:rgba(255,255,255,0.85);border-radius:4px}.toast-warning .button:hover{background:#ad6704;color:#fff}.toast-warning .button.dropdown-toggle{background:#ad6704;border-left:1px solid #7c4a03}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000000;opacity:0.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width: 240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width: 241px) and (max-width: 480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width: 481px) and (max-width: 768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}.gpm>table>tbody>tr{border-bottom:1px solid #e1e1e1}.gpm td{border:0}.gpm .gpm-name{white-space:nowrap;color:#b6bbbe}.gpm .gpm-version{padding-left:0.5rem;color:#8d959a;font-size:0.9rem}.gpm .gpm-update .gpm-name{color:#349886}.gpm .gpm-actions .enabled,.gpm .gpm-actions .disabled{font-size:1.6rem}.gpm .gpm-actions .disabled{color:#8d959a}.gpm .gpm-item-info{position:relative;border-bottom:3px solid #e1e1e1;padding-bottom:1rem;margin-bottom:3rem;overflow:hidden}@media only all and (max-width: 47.938em){.gpm .gpm-item-info{word-wrap:break-word}}.gpm .gpm-item-info .gpm-item-icon{color:#e6e6e6;position:absolute;right:3rem;font-size:20rem}.gpm .gpm-item-info table{position:relative}.gpm .gpm-item-info td{border:0;text-align:left !important}.gpm .gpm-item-info td:first-child{color:#9ba2a6;white-space:nowrap;width:25%}.gpm .gpm-item-info tr:hover{background:inherit}.gpm .badge.update{display:inline-block;background:#9055AF;border-radius:4px;padding:2px 10px;color:#fff;margin-left:1rem}.gpm .gpm-ribbon{background-color:#9055AF;overflow:hidden;white-space:nowrap;position:absolute;top:1rem;right:-2rem;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gpm .gpm-ribbon a{color:#fff;display:block;font-weight:bold;font-size:0.9rem;padding:5px 40px;text-align:center}.gpm .themes{padding:3rem}.gpm .themes .gpm-name{margin-bottom:0.5rem}.gpm .themes .gpm-actions{background:#e9e9e9;margin:1rem -1rem -1rem -1rem;height:4rem;text-align:center;padding:1rem;font-size:1rem;font-weight:bold}.gpm .themes .active-theme .gpm-actions,.gpm .themes.inactive-theme .gpm-actions{line-height:2rem}.gpm .themes .active-theme{border:1px solid #349886}.gpm .themes .active-theme .gpm-actions{background:#349886;color:#eee}.gpm .themes .inactive-theme .gpm-actions{display:block;color:#a2a2a2;font-weight:normal}#phpinfo img{display:none}#phpinfo table{margin:1rem 0 0}#phpinfo tr:hover{background:transparent}#phpinfo th{background:#d9d9d9}#phpinfo td{word-wrap:break-word}#phpinfo td h1{margin:0rem -3rem 0rem !important}#phpinfo td:first-child{color:#349886}#phpinfo hr{border-bottom:0}#phpinfo h1{font-size:2.3rem}#phpinfo h2{font-size:1.7rem;margin:3rem 3rem 0rem !important} +@import url(//fonts.googleapis.com/css?family=Montserrat:400|Lato:300,400,700|Ubuntu+Mono:400,700);#admin-login,#admin-logo h3,#admin-main .titlebar h1,#admin-main .titlebar .button-bar,#admin-main .flush-bottom.button-bar .button,#admin-main .danger.button-bar .button,#admin-main .success.button-bar .button,#admin-dashboard #updates .numeric,#admin-dashboard #popularity .stat,#admin-topbar #admin-mode-toggle,#admin-topbar #admin-lang-toggle{position:relative;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-o-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.button{display:inline-block;padding:0.3rem 1.5rem;font-weight:300;-webkit-font-smoothing:auto;cursor:pointer;vertical-align:middle;font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}.button:active{margin:1px 0 -1px 0}.button i{margin-right:5px}.button-small.button{padding:2px 10px;font-size:1rem}.button-x-small.button{padding:2px 8px 2px 5px;font-size:0.9rem}html,body{height:100%}body{background:#314D5B;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:#0082BA}a:hover{color:#003b54}b,strong{font-weight:600}.bigger{font-size:1.2rem}.button-bar{text-align:right;float:right;z-index:2}.secondary-accent{background:#349886;color:#fff}.secondary-accent .button-bar{background:#349886}.secondary-accent .button{background:#41bea8}.tertiary-accent{background:#2693B7;color:#fff}.tertiary-accent .button-bar{background:#2693B7}.tertiary-accent .button{background:#2aa4cc;background:#3aafd6;color:rgba(255,255,255,0.85);border-radius:4px}.tertiary-accent .button:hover{background:#4fb8da;color:#fff}.tertiary-accent .button.dropdown-toggle{background:#4fb8da;border-left:1px solid #2aa4cc}.alert{font-size:1.1rem;padding:1rem 3rem}.info{background:#9055AF;color:#fff}.info a{color:#e6e6e6}.info a:hover{color:#fff}.info-reverse{color:#9055AF}.notice{background:#2693B7;color:#fff}.notice a{color:#e6e6e6}.notice a:hover{color:#fff}.error{background:#DA4B46;color:#fff}.error a{color:#e6e6e6}.error a:hover{color:#fff}.badge{display:inline-block;font-size:0.9rem;font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;font-weight:700;border-radius:10px;padding:0px 6px;min-width:20px;line-height:20px;text-align:center}.empty-state{margin:0 auto;text-align:center;padding-top:100px}@font-face{font-family:"rockettheme-apps";font-weight:normal;font-style:normal;src:url("../fonts/rockettheme-apps/rockettheme-apps.eot");src:url("../fonts/rockettheme-apps/rockettheme-apps.eot?#iefix") format("embedded-opentype"),url("../fonts/rockettheme-apps/rockettheme-apps.woff") format("woff"),url("../fonts/rockettheme-apps/rockettheme-apps.ttf") format("truetype"),url("../fonts/rockettheme-apps/rockettheme-apps.svg#rockettheme-apps") format("svg")}i.fa-grav,i.fa-grav-spaceman,i.fa-grav-text,i.fa-grav-full,i.fa-grav-logo,i.fa-grav-symbol,i.fa-grav-logo-both,i.fa-grav-both,i.fa-gantry,i.fa-gantry-logo,i.fa-gantry-symbol,i.fa-gantry-logo-both,i.fa-gantry-both{font-family:'rockettheme-apps';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-grav-logo:before,.fa-grav-text:before{content:"\61"}.fa-grav-symbol:before,.fa-grav:before,.fa-grav-spaceman:before{content:"\62"}.fa-grav-logo-both:before,.fa-grav-both:before,.fa-grav-full:before{content:"\66"}.fa-gantry-logo:before{content:"\64"}.fa-gantry:before,.fa-gantry-symbol:before{content:"\63"}.fa-gantry-logo-both:before,.fa-gantry-both:before{content:"\65"}.default-animation,.tab-bar span,.tab-bar a,.form-tabs>label{-webkit-transition:all 0.5s ease;-moz-transition:all 0.5s ease;transition:all 0.5s ease}.default-border-radius{border-radius:4px}.default-glow-shadow{box-shadow:0 0 20px rgba(0,0,0,0.2)}.default-box-shadow{box-shadow:0 10px 20px rgba(0,0,0,0.2)}.padding-horiz{padding-left:7rem;padding-right:7rem}@media only all and (max-width: 59.938em){.padding-horiz{padding-left:4rem;padding-right:4rem}}@media only all and (max-width: 47.938em){.padding-horiz{padding-left:1rem;padding-right:1rem}}.padding-vert{padding-top:3rem;padding-bottom:3rem}body{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;font-weight:400}h1,h2,h3,h4,h5,h6{font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif;font-weight:400;text-rendering:optimizeLegibility;letter-spacing:-0px}body.simple-fonts{font-family:'Helvetica Neue', Helvetica, Arial, sans-serif !important}body.simple-fonts h1,body.simple-fonts h2,body.simple-fonts h3,body.simple-fonts h4,body.simple-fonts h5,body.simple-fonts h6,body.simple-fonts #admin-menu li,body.simple-fonts .button,body.simple-fonts .tab-bar,body.simple-fonts .badge,body.simple-fonts #admin-main .grav-mdeditor-preview,body.simple-fonts .form .note,body.simple-fonts .form-tabs,body.simple-fonts input,body.simple-fonts select,body.simple-fonts textarea,body.simple-fonts button,body.simple-fonts .selectize-input,body.simple-fonts .form-order-wrapper ul#ordering li{font-family:'Helvetica Neue', Helvetica, Arial, sans-serif !important}h1{font-size:3.2rem}@media only all and (max-width: 47.938em){h1{font-size:2.5rem;line-height:1.2;margin-bottom:2.5rem}}@media only all and (min-width: 48em) and (max-width: 59.938em){h2{font-size:2.1rem}}@media only all and (max-width: 47.938em){h2{font-size:2rem}}@media only all and (min-width: 48em) and (max-width: 59.938em){h3{font-size:1.7rem}}@media only all and (max-width: 47.938em){h3{font-size:1.6rem}}@media only all and (min-width: 48em) and (max-width: 59.938em){h4{font-size:1.35rem}}@media only all and (max-width: 47.938em){h4{font-size:1.25rem}}h1{letter-spacing:-3px}h2{letter-spacing:-2px}h3{letter-spacing:-1px}blockquote{border-left:10px solid #F0F2F4}blockquote p{font-size:1.1rem;color:#999}blockquote cite{display:block;text-align:right;color:#666;font-size:1.2rem}blockquote>blockquote>blockquote{margin:0}blockquote>blockquote>blockquote p{padding:15px;display:block;font-size:1rem;margin-top:0rem;margin-bottom:0rem}blockquote>blockquote>blockquote>p{margin-left:-71px;border-left:10px solid #F0AD4E;background:#FCF8F2;color:#df8a13}blockquote>blockquote>blockquote>blockquote>p{margin-left:-94px;border-left:10px solid #D9534F;background:#FDF7F7;color:#b52b27}blockquote>blockquote>blockquote>blockquote>blockquote>p{margin-left:-118px;border-left:10px solid #5BC0DE;background:#F4F8FA;color:#28a1c5}blockquote>blockquote>blockquote>blockquote>blockquote>blockquote>p{margin-left:-142px;border-left:10px solid #5CB85C;background:#F1F9F1;color:#3d8b3d}code,kbd,pre,samp{font-family:"Ubuntu Mono",monospace}code{background:#f9f2f4;color:#9c1d3d}pre{padding:2rem;background:#f6f6f6;border:1px solid #ddd;border-radius:3px}pre code{color:#237794;background:inherit}hr{border-bottom:4px solid #F0F2F4}.label{vertical-align:middle;background:#0082BA;border-radius:100%;color:#fff;height:1rem;min-width:1rem;line-height:1rem;display:inline-block;text-align:center;font-size:0.7rem;font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif;margin-right:0.75rem}.switch-toggle a,.switch-light span span{display:none}@media only screen{.switch-light{display:inline-block;position:relative;overflow:visible;padding:0;margin-left:100px}.switch-light *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-light a{display:block;-webkit-transition:all 0.1s ease-out;-moz-transition:all 0.1s ease-out;transition:all 0.1s ease-out}.switch-light label,.switch-light>span{vertical-align:middle}.switch-light input:focus ~ a,.switch-light input:focus+label{outline:1px dotted #888}.switch-light label{position:relative;z-index:3;display:block;width:100%}.switch-light input{position:absolute;opacity:0;z-index:5}.switch-light input:checked ~ a{right:0%}.switch-light>span{position:absolute;left:-100px;width:100%;margin:0;padding-right:100px;text-align:left}.switch-light>span span{position:absolute;top:0;left:0;z-index:5;display:block;width:50%;margin-left:100px;text-align:center}.switch-light>span span:last-child{left:50%}.switch-light a{position:absolute;right:50%;top:0;z-index:4;display:block;width:50%;height:100%;padding:0}.switch-toggle{display:inline-block;position:relative;padding:0 !important}.switch-toggle *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.switch-toggle a{display:block;-webkit-transition:all 0.1s ease-out;-moz-transition:all 0.1s ease-out;transition:all 0.1s ease-out}.switch-toggle label,.switch-toggle>span{vertical-align:middle}.switch-toggle input:focus ~ a,.switch-toggle input:focus+label{outline:1px dotted #888}.switch-toggle input{position:absolute;opacity:0}.switch-toggle input+label{position:relative;z-index:2;float:left;height:100%;margin:0;text-align:center}.switch-toggle a{position:absolute;top:0;left:0;padding:0;z-index:1;width:50%;height:100%}.switch-toggle input:last-of-type:checked ~ a{left:50%}.switch-toggle.switch-3 label,.switch-toggle.switch-3 a{width:33.33333%}.switch-toggle.switch-3 input:checked:nth-of-type(2) ~ a{left:33.33333%}.switch-toggle.switch-3 input:checked:last-of-type ~ a{left:66.66667%}.switch-toggle.switch-4 label,.switch-toggle.switch-4 a{width:25%}.switch-toggle.switch-4 input:checked:nth-of-type(2) ~ a{left:25%}.switch-toggle.switch-4 input:checked:nth-of-type(3) ~ a{left:50%}.switch-toggle.switch-4 input:checked:last-of-type ~ a{left:75%}.switch-toggle.switch-5 label,.switch-toggle.switch-5 a{width:20%}.switch-toggle.switch-5 input:checked:nth-of-type(2) ~ a{left:20%}.switch-toggle.switch-5 input:checked:nth-of-type(3) ~ a{left:40%}.switch-toggle.switch-5 input:checked:nth-of-type(4) ~ a{left:60%}.switch-toggle.switch-5 input:checked:last-of-type ~ a{left:80%}.switch-grav{background-color:#fff;border:1px solid #d5d5d5;border-radius:4px}.switch-grav label{color:#737C81;-webkit-transition:color 0.2s ease-out;-moz-transition:color 0.2s ease-out;transition:color 0.2s ease-out;padding:5px 20px}.switch-grav>span span{opacity:0;-webkit-transition:all 0.1s;-moz-transition:all 0.1s;transition:all 0.1s}.switch-grav>span span:first-of-type{opacity:1}.switch-grav a{background:#777;border-radius:3px}.switch-grav.switch-toggle input.highlight:checked ~ a{background:#41bea8}.switch-grav.switch-light input:checked ~ a{background-color:#777}.switch-grav.switch-light input:checked ~ span span:first-of-type{opacity:0}.switch-grav.switch-light input:checked ~ span span:last-of-type{opacity:1}.switch-grav input:checked+label{color:#fff}}@media only screen and (-webkit-max-device-pixel-ratio: 2) and (max-device-width: 1280px){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix infinite 1s}}@-webkit-keyframes webkitSiblingBugfix{from{-webkit-transform:translate3d(0, 0, 0)}to{-webkit-transform:translate3d(0, 0, 0)}}form h1,form h3{color:#314D5B;padding:0 3rem 0.5rem;margin:0 0 1rem;border-bottom:3px solid #e1e1e1;font-size:1.5rem;text-align:left;letter-spacing:-1px}form p{padding:0 3rem}form pre{padding:1.5rem 3rem}form .note{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;color:#DA4B46}form .form-field{margin-bottom:1rem;padding-left:3rem}form .form-data{padding-right:3rem}form .required{color:#DA4B46;font-family:helvetica, arial;vertical-align:middle;line-height:1;font-size:30px;margin-left:5px}form label{padding:5px 0;font-weight:400;margin:0}form label.toggleable{display:inline}form input,form select,form textarea,form button,form .selectize-input{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;font-size:1rem;line-height:1.7;border-radius:4px;-webkit-font-smoothing:antialiased}form .selectize-dropdown{z-index:100000}form .form-column>.form-field.grid{display:block}form .form-column>.form-field.grid>.block{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;-webkit-flex:0;-moz-flex:0;-ms-flex:0;flex:0}form .grid.vertical{-webkit-flex-flow:column;-moz-flex-flow:column;flex-flow:column}form .form-select-wrapper,form .selectize-control.single .selectize-input{position:relative}form .form-select-wrapper:after,form .selectize-control.single .selectize-input:after{margin-top:0;border:0;position:absolute;content:'\f078';font-family:'FontAwesome';right:12px;top:50%;line-height:0;color:#9ba2a6;pointer-events:none}form .selectize-control{height:39px}form .selectize-input{box-shadow:none;color:#737C81;padding:5px 30px 5px 10px;margin:0}form .selectize-input>input{font-size:1rem;line-height:1.7}form .selectize-control.multi .selectize-input{padding:0.425rem 0.425rem}form .selectize-control.multi .selectize-input.has-items{padding-top:6px;padding-bottom:4px}form .selectize-control.multi .selectize-input>div{color:#737C81;border-radius:2px;line-height:1.5}form .selectize-control.multi .selectize-input>div.active{background:#d5d5d5}form .selectize-control.single .selectize-input:after{right:27px}form .selectize-control.single .selectize-input.dropdown-active:after{content:'\f077'}form .x-small{max-width:5rem !important}form .small{max-width:10rem !important}form .medium{max-width:20rem}form .medium textarea{height:7rem}form .large{max-width:30rem !important}form .large textarea{height:10rem}form select{width:100%;border:1px solid #d5d5d5;background:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:5px 30px 5px 10px;cursor:pointer;margin:0}form input[type=text],form input[type=password],form input[type=email],form input[type=date]{width:100%;border:1px solid #d5d5d5;background:#fff}form input[readonly=readonly]{background:#f2f2f2;font-weight:bold}form textarea{width:100%;border:1px solid #d5d5d5;background:#fff}form .form-frontmatter-wrapper{border:1px solid #d5d5d5;border-radius:4px}form .switch-toggle label{cursor:pointer}form .switch-toggle a,form .switch-toggle label{outline:none !important}form .dynfields input[type=text],form [data-grav-field="array"] input[type=text]{width:40%;float:left;margin:0 5px 5px 0}form .dynfields .form-row,form [data-grav-field="array"] .form-row{display:inline-block}form .dynfields .form-row span,form [data-grav-field="array"] .form-row span{padding:0.5rem;display:inline-block;line-height:1.7;cursor:pointer}form .dynfields .form-row.array-field-value_only,form [data-grav-field="array"] .form-row.array-field-value_only{width:100%}form .button-bar{margin-top:1rem;background:#e6e6e6;padding:1.2rem 3rem;width:100%;border-bottom-left-radius:5px;border-bottom-right-radius:5px}form .checkboxes{display:inline-block;padding:5px 0}form .checkboxes label{display:inline;cursor:pointer;position:relative;padding:0 0 0 2rem;margin-right:15px}form .checkboxes label:before{content:"";display:inline-block;width:1.5rem;height:1.5rem;top:50%;left:0;margin-top:-0.75rem;margin-right:10px;position:absolute;background:#fff;border:1px solid #d5d5d5;border-radius:4px}form .checkboxes input[type=checkbox]{display:none}form .checkboxes input[type=checkbox]:checked+label:before{content:"\f00c";font-family:"FontAwesome";font-size:1.2rem;line-height:1;text-align:center}form .checkboxes.toggleable label{margin-right:0}.form-display-wrapper p{padding-left:0;padding-right:0}.form-display-wrapper p:first-child{margin-top:0}.form-frontmatter-wrapper{margin-bottom:3rem}.form-frontmatter-wrapper .dragbar{height:4px;background:#d5d5d5;cursor:row-resize}#frontmatter+.CodeMirror{border-radius:4px;padding:10px;height:130px}.form-order-wrapper ul#ordering{list-style:none;margin:0;padding:0}.form-order-wrapper ul#ordering li{padding:0.2rem 1rem;border-radius:4px;border:1px solid #d5d5d5;background:#f8f8f8;color:#8d959a;margin:3px 0;position:relative;font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}.form-order-wrapper ul#ordering li.drag-handle{cursor:move;background:#fff;color:#5b6266}.form-order-wrapper ul#ordering li.drag-handle::after{content:'\f0c9';font-family:FontAwesome;position:absolute;right:10px}.form-list-wrapper ul[data-collection-holder]{list-style:none;margin:0;padding:0}.form-list-wrapper ul[data-collection-holder] li{cursor:move;padding:1rem;border-radius:4px;border:1px solid #d5d5d5;background:#f8f8f8;color:#8d959a;margin:3px 0;position:relative;font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}.form-list-wrapper ul[data-collection-holder] li .item-actions{position:absolute;right:10px;top:4px;color:#5b6266}.form-list-wrapper ul[data-collection-holder] li .item-actions .fa-trash-o{cursor:pointer}.form-list-wrapper .collection-actions{text-align:right}.form-label.block{z-index:10000}.form-label.block:hover{z-index:10005}#admin-main .admin-block h2{font-size:1.25rem;margin:0 0 .5rem;letter-spacing:normal}.form-fieldset{background-color:#f7f7f7;border:2px solid #e1e1e1;margin:1rem 2rem}.form-fieldset--label{background-color:#f3f3f3}.form-fieldset--label:hover,.form-fieldset input:checked+.form-fieldset--label{background-color:#eee}.form-fieldset--label label{display:table;font-size:1.25rem;padding:.5rem 1rem;width:100%}.form-fieldset--label h2{margin:0 !important}.form-fieldset--label .actions{font-size:initial;display:table-cell;text-align:right;vertical-align:middle}.form-fieldset--label+.form-data{margin-top:1rem;padding:0}.form-fieldset--cursor{cursor:pointer}.form-fieldset--info{font-size:small}.form-fieldset>input:checked ~ .form-data,.form-fieldset--collapsible .open,.form-fieldset input:checked ~ .form-label .form-fieldset--collapsible .close{display:block}.form-fieldset>.form-data,.form-fieldset--collapsible .close,.form-fieldset input:checked ~ .form-label .form-fieldset--collapsible .open{display:none}table,tbody,thead{display:inline-block;width:100%}.gpm-details{width:100%;-webkit-box-flex:auto;-moz-box-flex:auto;box-flex:auto;-webkit-flex:auto;-moz-flex:auto;-ms-flex:auto;flex:auto}td{border:0;border-bottom:1px solid #e1e1e1}tr{-webkit-transition:all 0.2s ease;-moz-transition:all 0.2s ease;transition:all 0.2s ease;display:-webkit-box;display:-moz-box;display:box;display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-lines:multiple;-moz-box-lines:multiple;box-lines:multiple;-webkit-flex-wrap:wrap;-moz-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}tr th{display:block;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1;font-weight:bold}tr th:first-child{padding-left:3rem}tr th:last-child{padding-right:3rem}tr td{display:block;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}tr td.double{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;-webkit-flex:2;-moz-flex:2;-ms-flex:2;flex:2}tr td:first-child{padding-left:3rem}@media only all and (max-width: 47.938em){tr td:first-child{padding-left:.5rem}tr td:first-child .plugin-update-button{float:left}}tr td:last-child,tr td.gpm-actions{padding-right:3rem}tr td.gpm-actions{line-height:1;text-align:right;position:relative}tr td.gpm-actions .gpm-details-expand{position:absolute;top:12px;right:12px}tr td.gpm-details{margin:0;padding:0;background-color:#f7f7f7}@media only all and (max-width: 47.938em){tr td.gpm-details{word-wrap:break-word}}tr td.gpm-details>.table-wrapper{display:none}tr td.gpm-details>.table-wrapper td{border-bottom:0}tr td.gpm-details tbody{width:100%}tr:last-child td{border-bottom:0}tr:hover{background:#f3f3f3}.k-calendar-container table,.k-calendar-container tbody,.k-calendar-container thead{width:100%}.k-calendar-container thead th:first-child{padding-left:0}.k-calendar-container thead th:last-child{padding-right:0.5rem}.button{background:#41bea8;color:rgba(255,255,255,0.85);border-radius:4px}.button:hover{background:#54c5b0;color:#fff}.button.dropdown-toggle{background:#54c5b0;border-left:1px solid #3bab97}.button.dropdown-toggle{border-left:1px solid #3bab97}.button.secondary{background:#2a7a6b;color:rgba(255,255,255,0.85);border-radius:4px}.button.secondary:hover{background:#318d7c;color:#fff}.button.secondary.dropdown-toggle{background:#318d7c;border-left:1px solid #23675a}.button.secondary.dropdown-toggle{border-left:1px solid #318d7c}.button-group{position:relative;display:inline-block;vertical-align:middle}.button-group>.button:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.button-group>.button:first-child{margin-left:0 !important}.button-group>.button{position:relative;float:left}.button-group>.button+.dropdown-toggle{text-align:center;padding-right:8px;padding-left:8px}.button-group>.button+.dropdown-toggle i{margin:0}.button-group>.button:last-child:not(:first-child),.button-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.button-group .button+.button,.button-group .button+.button-group,.button-group .button-group+.button,.button-group .button-group+.button-group{margin-left:-1px}.button-group .dropdown-menu{position:absolute;top:100%;left:0;right:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#41bea8;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #3bab97;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175)}.button-group .dropdown-menu.language-switcher{min-width:auto}.button-group .dropdown-menu.lang-switcher{min-width:150px;left:inherit}.button-group .dropdown-menu.lang-switcher button{width:100%}.button-group .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#349886}.button-group .dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#fff;white-space:nowrap}.button-group .dropdown-menu li>a:focus,.button-group .dropdown-menu li>a:hover{color:#fff;text-decoration:none;background-color:#349886}.button-group .dropdown-menu.language-switcher a.active{background-color:#349886}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#error{text-align:center;display:flex;align-items:center;justify-content:center;height:100%;padding-bottom:6rem}#error h1{font-size:5rem}#error p{margin:1rem 0}#admin-login{background:#253A47;max-width:24rem;margin:0 auto}#admin-login.wide{max-width:50rem}#admin-login.wide h1{height:100px}#admin-login.wide form>.padding{padding:3rem 2rem 8rem 2rem}#admin-login.wide form>.padding>div{width:50%;display:inline-block;margin-right:-2px}@media only all and (max-width: 47.938em){#admin-login.wide form>.padding>div{width:100%;margin-right:0}}#admin-login.wide form>.padding .form-field{padding:0 1rem}#admin-login.wide form label{padding:0}#admin-login.wide form input{margin-bottom:1rem;text-align:left}#admin-login.wide form input::-webkit-input-placeholder{color:#83949d;font-size:1rem;line-height:2rem}#admin-login.wide form input::-moz-placeholder{color:#83949d;font-size:1rem;line-height:2rem}#admin-login.wide form input:-moz-placeholder{color:#83949d;font-size:1rem;line-height:2rem}#admin-login.wide form input:-ms-input-placeholder{color:#83949d;font-size:1rem;line-height:2rem}#admin-login.wide .grid{display:block}#admin-login.wide .form-label,#admin-login.wide .form-data{display:block;width:100%;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;-webkit-flex:1;-moz-flex:1;-ms-flex:1;flex:1}#admin-login .form-field{padding-left:0;margin-bottom:0}#admin-login .form-label{display:none}#admin-login .form-data{padding-right:0}#admin-login .wrapper-spacer{width:100% !important;display:block !important;padding:0 1rem}#admin-login .wrapper-spacer h3{padding-left:1rem;color:rgba(255,255,255,0.4);border-bottom:3px solid rgba(255,255,255,0.1)}#admin-login .instructions{display:block;padding:2rem 3rem 0;margin:0;font-size:1.3rem;color:rgba(255,255,255,0.8)}#admin-login .instructions p{margin:0}#admin-login h1{background:#21333e url(../images/logo.png) 50% 50% no-repeat;font-size:0;color:transparent;height:216px;margin:0}#admin-login form{position:relative}#admin-login form .padding{padding:3rem 3rem 6rem 3rem}#admin-login form input{margin-bottom:2rem;background:#314D5B;color:#fff;font-size:1.4rem;line-height:1.5;text-align:center;font-weight:300;-webkit-font-smoothing:auto;border:1px solid #1e2e39}#admin-login form input::-webkit-input-placeholder{color:#83949d}#admin-login form input::-moz-placeholder{color:#83949d}#admin-login form input:-moz-placeholder{color:#83949d}#admin-login form input:-ms-input-placeholder{color:#83949d}#admin-login form .form-actions{display:block !important;width:100% !important;text-align:center;position:absolute;bottom:0;left:0;right:0;padding:1.5rem 3rem}#admin-login form .form-actions button:first-child{margin-right:1rem}#admin-login .alert{text-align:center;padding:1rem 3rem}#admin-sidebar{position:absolute;left:0;top:0;bottom:0;width:20%;background:#253A47}@media only all and (max-width: 47.938em){#admin-sidebar{display:none;width:75%;z-index:999999}}#admin-sidebar a{color:#ccc}#admin-sidebar a:hover{color:#fff}#admin-logo{background:#21333e;height:4.2rem}#admin-logo h3{text-transform:uppercase;margin:0;text-align:center;font-size:1.2rem}#admin-logo h3 i{font-size:1rem;vertical-align:middle;margin-top:-1px}#admin-user-details,.admin-user-details{padding:2rem;border-bottom:1px solid #21333e;overflow:hidden}#admin-user-details img,.admin-user-details img{-webkit-transition:all 0.5s ease;-moz-transition:all 0.5s ease;transition:all 0.5s ease;border-radius:100%;float:left}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-user-details img,.admin-user-details img{float:none}}#admin-user-details:hover img,.admin-user-details:hover img{box-shadow:0px 0px 0 50px #2a4251}#admin-user-details .admin-user-names,.admin-user-details .admin-user-names{margin-left:45px}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-user-details .admin-user-names,.admin-user-details .admin-user-names{margin-left:0}}#admin-user-details .admin-user-names h4,#admin-user-details .admin-user-names h5,.admin-user-details .admin-user-names h4,.admin-user-details .admin-user-names h5{color:#e6e6e6;margin:0;font-size:1rem;line-height:1.3}#admin-user-details .admin-user-names h5,.admin-user-details .admin-user-names h5{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif;color:#afc7d5;font-size:0.9rem}#admin-menu{display:block;margin:0;padding:0;list-style:none}#admin-menu li{font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif}#admin-menu li .badges{float:right;margin-right:1rem}#admin-menu li .badges .badge{display:inline-block;margin-right:-5px;color:#e6e6e6}#admin-menu li .badges .count{background-color:#365569}#admin-menu li .badges .updates{background-color:#2693B7;display:none}#admin-menu li .badges.with-updates .count{border-bottom-left-radius:0;border-top-left-radius:0}#admin-menu li .badges.with-updates .updates{border-bottom-right-radius:0;border-top-right-radius:0;display:inline-block}#admin-menu li a{-webkit-transition:all 0.2s ease;-moz-transition:all 0.2s ease;transition:all 0.2s ease;display:block;padding-left:25px;padding-top:0.7rem;padding-bottom:0.7rem;color:#d1dee7}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-menu li a{padding-left:20px}}#admin-menu li a i{-webkit-transition:all 0.2s ease;-moz-transition:all 0.2s ease;transition:all 0.2s ease;color:#afc7d5;margin-right:8px}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-menu li a i{display:none}}#admin-menu li a:hover{background:#21333e;color:#fff}#admin-menu li a:hover i{font-size:1.2rem}#admin-menu li.selected a{background:#314D5B;color:#fff;padding-left:16px;border-left:9px solid #349886}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-menu li.selected a{padding-left:11px}}#admin-menu li.selected a i{color:#e1eaf0}#admin-main{margin-left:20%}@media only all and (max-width: 47.938em){#admin-main{width:100%;margin-left:0}}#admin-main .hint:after,#admin-main [data-hint]:after{font-size:0.9rem;width:400px;line-height:inherit;white-space:normal}#admin-main h1{margin:0;font-size:1.5rem;text-align:left;letter-spacing:-1px}#admin-main .padding{padding:3rem}#admin-main .titlebar{position:relative;height:4.2rem;padding:0 3rem}@media only all and (max-width: 47.938em){#admin-main .titlebar{height:7.2rem;margin-top:-5.5rem;position:relative}}@media only all and (max-width: 47.938em){#admin-main .titlebar h1{transform:inherit;top:5px;font-size:1.2rem;display:block;text-align:center;padding:20px 0px;margin-top:-90px;z-index:2}#admin-main .titlebar h1>i:first-child:before{content:"\f0c9"}}@media only all and (max-width: 381px){#admin-main .titlebar h1{margin-top:-138px}}@media only all and (max-width: 47.938em){#admin-main .titlebar h1 .fa-th{cursor:pointer;float:left}}#admin-main .titlebar .button-bar{padding:0}@media only all and (max-width: 47.938em){#admin-main .titlebar .button-bar{text-align:center;display:block;float:none;margin:5rem auto 0px;padding-top:70px}}#admin-main .titlebar .preview{color:#fff;font-size:90%}#admin-main .titlebar .button{padding:0.3rem 0.6rem}@media only all and (max-width: 47.938em){#admin-main .titlebar .button{padding:0.2rem 0.5rem;font-size:0.9rem}}#admin-main .titlebar .button i{font-size:13px}#admin-main .admin-block .grav-update,#admin-main .admin-block .alert{margin-top:-2rem;margin-bottom:2rem}#admin-main .grav-update{padding:0 3rem;margin-top:-3rem;background:#9055AF;color:#fff}#admin-main .grav-update:after{content:"";display:table;clear:both}#admin-main .grav-update.plugins{padding-right:1rem}#admin-main .grav-update .button{float:right;margin-top:0.6rem;margin-left:1rem;line-height:1.5;background:#73448c;color:rgba(255,255,255,0.85);border-radius:4px}#admin-main .grav-update .button:hover{background:#814c9d;color:#fff}#admin-main .grav-update .button.dropdown-toggle{background:#814c9d;border-left:1px solid #653c7b}#admin-main .grav-update p{line-height:3rem;margin:0}#admin-main .grav-update i{padding-right:0.5rem}#admin-main .grav-update .less{color:rgba(255,255,255,0.75)}#admin-main .grav-update.grav{margin-top:0;-webkit-transition:margin-top 0.15s ease-out;-moz-transition:margin-top 0.15s ease-out;transition:margin-top 0.15s ease-out}@media only all and (max-width: 47.938em){#admin-main .grav-update.grav{position:absolute;z-index:9;bottom:0;width:100%}#admin-main .grav-update.grav p *{display:none}#admin-main .grav-update.grav p{font-size:0}#admin-main .grav-update.grav p button{width:95%;display:inherit;position:absolute;top:0;left:0;margin-left:2.5%;margin-right:2.5%;padding-left:0}}#admin-main .grav-update.grav+.content-padding{top:7.2rem;-webkit-transition:top 0.15s ease-out;-moz-transition:top 0.15s ease-out;transition:top 0.15s ease-out}@media only all and (max-width: 47.938em){#admin-main .grav-update.grav+.content-padding{top:7.2rem;padding-bottom:8rem;padding-top:0rem}}#admin-main .content-padding{position:absolute;top:4.2rem;bottom:0;left:20%;right:0;overflow-y:auto;padding:2.5rem}@media only all and (max-width: 47.938em){#admin-main .content-padding{top:7.2rem;left:0}}#admin-main .admin-block{background:#eee;color:#737C81;padding:2rem 0}#admin-main .admin-block h1{color:#314D5B;padding:0 3rem 0.5rem;margin:0 0 1rem;border-bottom:3px solid #e1e1e1}@media only all and (max-width: 47.938em){#admin-main .admin-block h1{padding:0 0 0.5rem;margin:0 0 1rem !important;text-indent:3rem}}#admin-main .admin-block h1.no_underline{border-bottom:0}#admin-main .admin-block .button-bar{margin-right:3rem}@media only all and (max-width: 47.938em){#admin-main .admin-block .button-bar{width:100%;margin:-.5rem 0 1rem 0;text-align:center}#admin-main .admin-block .button-bar .button{width:100%}}#admin-main .flush-bottom.button-bar{margin:1rem -2rem -1rem;height:70px;padding:0 1rem;float:none}@media only all and (max-width: 47.938em){#admin-main .flush-bottom.button-bar{height:auto;padding:2rem 1rem 0rem 1rem}}@media only all and (max-width: 47.938em){#admin-main .flush-bottom.button-bar .button{margin-left:0 !important;margin-bottom:.5rem;width:100%}}#admin-main .danger,#admin-main .success{position:relative}#admin-main .danger.button-bar,#admin-main .success.button-bar{margin:2rem 0 -2rem;height:70px;padding:1rem;float:none;background:#e9e9e9}#admin-main .danger.button-bar .button{background:#DA4B46;color:rgba(255,255,255,0.85);border-radius:4px}#admin-main .danger.button-bar .button:hover{background:#de605b;color:#fff}#admin-main .danger.button-bar .button.dropdown-toggle{background:#de605b;border-left:1px solid #d63631}#admin-dashboard:after{content:"";display:table;clear:both}#admin-dashboard .dashboard-item{float:left;width:50%;margin-bottom:2.5rem}@media only all and (max-width: 47.938em){#admin-dashboard .dashboard-item{width:100%}}#admin-dashboard .dashboard-item>div{padding:1rem 2rem}#admin-dashboard .dashboard-left{padding-right:1.25rem}@media only all and (max-width: 47.938em){#admin-dashboard .dashboard-left{padding-right:0rem}}#admin-dashboard .dashboard-right{padding-left:1.25rem}@media only all and (max-width: 47.938em){#admin-dashboard .dashboard-right{padding-left:0rem}}#admin-dashboard #updates p{text-align:center;color:rgba(255,255,255,0.96);margin:0}#admin-dashboard #updates .updates-chart{width:50%;float:left}#admin-dashboard #updates .chart-wrapper{position:relative}#admin-dashboard #updates .backups-chart{position:relative;width:50%;float:left}#admin-dashboard #updates .numeric{display:block;position:absolute;width:100%;text-align:center;font-size:1.7rem;line-height:1}#admin-dashboard #updates .numeric em{display:block;font-style:normal;font-size:1rem;color:rgba(255,255,255,0.85)}#admin-dashboard #updates .admin-update-charts{min-height:191px}#admin-dashboard #updates .admin-update-charts:after{content:"";display:table;clear:both}#admin-dashboard #updates .button{margin-left:0.5rem}@media only all and (min-width: 48em) and (max-width: 59.938em){#admin-dashboard #updates .button{width:49%;padding:.3rem 0rem;margin-left:0}}#admin-dashboard #popularity p{text-align:center;color:rgba(255,255,255,0.95);margin:0}#admin-dashboard #popularity .button-bar{height:100px;padding:0 1rem}#admin-dashboard #popularity .stat{display:block;float:left;width:33%;text-align:center}#admin-dashboard #popularity .stat b{display:block;font-size:2.5rem;line-height:1;font-weight:300}#admin-dashboard #popularity .stat i{display:block;font-style:normal;color:rgba(255,255,255,0.75)}#admin-dashboard .tertiary-accent{background-color:#2693B7;background-image:-webkit-linear-gradient(#2693B7,#64c0df);background-image:linear-gradient(#2693B7,#64c0df)}#admin-dashboard .secondary-accent{background-color:#349886;background-image:-webkit-linear-gradient(#349886,#67cbb9);background-image:linear-gradient(#349886,#67cbb9)}.no-flick,.card-item{-webkit-transform:translate3d(0, 0, 0)}.card-row{-webkit-box-pack:justify;-moz-box-pack:justify;box-pack:justify;-webkit-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-ms-flex-pack:justify}.card-item{overflow:hidden;padding:1rem;margin:0;position:relative;width:31%;border:1px solid #e1e1e1;background:#fff;margin-bottom:2rem}@media only all and (min-width: 48em) and (max-width: 59.938em){.card-item{width:48%}}@media only all and (max-width: 47.938em){.card-item{width:100%}}.card-item h4{font-size:1.2rem;line-height:1.2}.user-details{text-align:center}.user-details img{border-radius:100%}.user-details h2{margin:0;font-size:1.8rem}.user-details h5{color:#8d959a;font-size:1.1rem;margin:0}#footer{text-align:center;padding:3rem 0 1rem}.ct-chart .ct-series .ct-bar{stroke-width:20px}.ct-chart .ct-series.ct-series-a .ct-bar{stroke:rgba(255,255,255,0.85) !important}.ct-chart .ct-series.ct-series-a .ct-slice-donut{stroke:#fff !important}.ct-chart .ct-series.ct-series-b .ct-slice-donut{stroke:rgba(255,255,255,0.2) !important}#popularity .ct-chart{margin:0 -10px -10px}#popularity .ct-chart .ct-chart-bar{padding:10px}#latest .page-title,#latest .page-route{overflow:auto}#latest .last-modified{padding-left:10px}#overlay{position:fixed;width:25%;height:100%;z-index:999999;left:75%;top:0;display:none}.gpm-item-info+#blueprints .block-tabs{padding-top:16px}.pages-list{list-style:none;margin:0;padding:0;border-top:1px solid #e1e1e1}.pages-list ul{list-style:none;margin:0;padding:0}.pages-list li{margin:0;padding:0}.pages-list .row{-webkit-transition:all 0.2s ease;-moz-transition:all 0.2s ease;transition:all 0.2s ease;border-bottom:1px solid #e1e1e1;line-height:2.5rem;padding-right:3rem}.pages-list .row:hover{background:#f3f3f3}.pages-list .row p.page-route{display:block;margin:-10px 0 5px 25px;line-height:1;font-size:0.9rem;color:#888;text-shadow:1px 1px 0 #fff}.pages-list .row p.page-route .spacer{color:#d5d5d5;display:inline-block;margin:0 0.3rem}.pages-list .row .hint--bottom:before,.pages-list .row .hint--bottom:after{left:4px}.pages-list .row .hint:after,.pages-list .row [data-hint]:after{border-radius:2px}.pages-list .row .badge.lang{background-color:#aaa;color:white;margin-left:8px}.pages-list .row .badge.lang.info{background-color:#9055AF}.pages-list .page-tools{display:inline-block;float:right;font-size:1.4rem}.pages-list .page-tools i{margin-left:10px}.pages-list .page-home{font-size:1.4rem;margin-left:10px;color:#bbb;vertical-align:middle}.pages-list .page-info{font-size:1.1rem;margin-left:10px;color:#bbb;vertical-align:middle}.pages-list .page-icon{color:#0082BA;font-weight:700}.pages-list .page-icon.children-open:before{content:'\f056'}.pages-list .page-icon.children-closed:before{content:'\f055'}.pages-list .page-icon.not-routable{color:#CE431D}.pages-list .page-icon.not-visible{color:#999}.pages-list .page-icon.modular{color:#9055AF}#page-filtering{margin:-2rem 3rem 1rem}#page-filtering:after{content:"";display:table;clear:both}#page-filtering .page-filters{width:60%;float:left}@media only all and (max-width: 47.938em){#page-filtering .page-filters{width:100%}}#page-filtering .page-search{position:relative;width:40%;float:left;padding-left:2rem;text-indent:2.5rem}#page-filtering .page-search:after{position:absolute;right:15px;top:10px;content:'\f002';font-family:'FontAwesome'}@media only all and (max-width: 47.938em){#page-filtering .page-search{width:100%;padding-top:1rem;padding-left:0rem}#page-filtering .page-search:after{top:1.5rem}}#page-filtering .page-shortcuts{clear:both;padding-top:5px}#page-filtering .page-shortcuts:after{content:"";display:table;clear:both}#page-filtering .page-shortcuts .button{background:#aaa;color:rgba(255,255,255,0.85);border-radius:4px}#page-filtering .page-shortcuts .button:hover{background:#b7b7b7;color:#fff}#page-filtering .page-shortcuts .button.dropdown-toggle{background:#b7b7b7;border-left:1px solid #9d9d9d}#page-filtering .selectize-control.multi .selectize-input{padding:0.425rem 0.425rem}#page-filtering .selectize-control.multi .selectize-input.has-items{padding-top:6px;padding-bottom:4px}#page-filtering .selectize-control.multi .selectize-input input{font-size:1rem;line-height:1.7}#page-filtering .selectize-control.multi .selectize-input>div,#page-filtering .selectize-control.multi .selectize-input>div.active{color:#777;padding:2px 10px}#page-filtering .selectize-control.multi .selectize-input>div[data-value='Routable'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='Routable']{background:#CE431D;color:#fff}#page-filtering .selectize-control.multi .selectize-input>div[data-value='NonRoutable'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='NonRoutable']{color:#CE431D}#page-filtering .selectize-control.multi .selectize-input>div[data-value='Visible'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='Visible']{background:#71B15E;color:#fff}#page-filtering .selectize-control.multi .selectize-input>div[data-value='NonVisible'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='NonVisible']{color:#71B15E}#page-filtering .selectize-control.multi .selectize-input>div[data-value='Modular'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='Modular']{background:#9055AF;color:#fff}#page-filtering .selectize-control.multi .selectize-input>div[data-value='NonModular'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='NonModular']{color:#9055AF}#page-filtering .selectize-control.multi .selectize-input>div[data-value='Published'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='Published']{background:#0093B8;color:#fff}#page-filtering .selectize-control.multi .selectize-input>div[data-value='NonPublished'],#page-filtering .selectize-control.multi .selectize-input>div.active[data-value='NonPublished']{color:#0093B8}.admin-form-wrapper{position:relative}#admin-topbar{position:absolute;right:0.5rem;height:3.5rem}@media only all and (max-width: 47.938em){#admin-topbar{width:100%;right:0;top:.25rem;padding:0 .5rem}}#admin-topbar #admin-mode-toggle,#admin-topbar #admin-lang-toggle{height:37px;display:inline-block;vertical-align:inherit}#admin-topbar #admin-lang-toggle{z-index:10}#admin-topbar #admin-lang-toggle button{background:#73448c;color:rgba(255,255,255,0.85);border-radius:4px}#admin-topbar #admin-lang-toggle button:hover{background:#814c9d;color:#fff}#admin-topbar #admin-lang-toggle button.dropdown-toggle{background:#814c9d;border-left:1px solid #653c7b}#admin-topbar #admin-lang-toggle .dropdown-menu{background:#9055AF}#admin-topbar #admin-lang-toggle .dropdown-menu button{background:transparent;color:#fff;width:100%}#admin-topbar .switch-grav{border:0;background-color:#365569}@media only all and (max-width: 47.938em){#admin-topbar .switch-toggle{width:100%}}#admin-topbar .switch-toggle input:checked+label{color:#fff}#admin-topbar .switch-toggle input+label{color:#d1dee7}#admin-topbar .switch-toggle input.highlight:checked ~ a{background:#3aafd6}body .selectize-dropdown .optgroup-header{color:#000;border-bottom:1px solid #eee;background-color:#fafafa}.depth-0 .row{padding-left:3rem}.depth-1 .row{padding-left:6rem}.depth-2 .row{padding-left:9rem}.depth-3 .row{padding-left:12rem}.depth-4 .row{padding-left:15rem}.depth-5 .row{padding-left:18rem}.depth-6 .row{padding-left:21rem}.depth-7 .row{padding-left:24rem}.depth-8 .row{padding-left:27rem}.depth-9 .row{padding-left:30rem}.hidden{display:none !important}.switch-toggle input[type="radio"]{display:none !important}html.remodal-is-locked{overflow:hidden;touch-action:none}.remodal,[data-remodal-id]{display:none}.remodal-overlay{position:fixed;z-index:99999;top:-5000px;right:-5000px;bottom:-5000px;left:-5000px;display:none}.remodal-wrapper{position:fixed;z-index:100000;top:0;right:0;bottom:0;left:0;display:none;overflow:auto;text-align:center;-webkit-overflow-scrolling:touch}.remodal-wrapper:after{display:inline-block;height:100%;margin-left:-0.05em;content:''}.remodal-overlay,.remodal-wrapper{backface-visibility:hidden}.remodal{position:relative;outline:none;text-size-adjust:100%}.remodal-is-initialized{display:inline-block}.remodal-bg.remodal-is-opening,.remodal-bg.remodal-is-opened{-webkit-filter:blur(3px);filter:blur(3px)}.remodal-overlay{background:rgba(43,46,56,0.9)}.remodal-overlay.remodal-is-opening,.remodal-overlay.remodal-is-closing{animation-duration:0.3s;animation-fill-mode:forwards}.remodal-overlay.remodal-is-opening{animation-name:remodal-overlay-opening-keyframes}.remodal-overlay.remodal-is-closing{animation-name:remodal-overlay-closing-keyframes}.remodal-wrapper{padding:10px 10px 0}.remodal{box-sizing:border-box;width:100%;margin-bottom:10px;padding:35px;transform:translate3d(0, 0, 0);color:#2b2e38;background:#fff}.remodal.remodal-is-opening,.remodal.remodal-is-closing{animation-duration:0.3s;animation-fill-mode:forwards}.remodal.remodal-is-opening{animation-name:remodal-opening-keyframes}.remodal.remodal-is-closing{animation-name:remodal-closing-keyframes}.remodal,.remodal-wrapper:after{vertical-align:middle}.remodal-close{position:absolute;top:0;left:0;display:block;overflow:visible;width:35px;height:35px;margin:0;padding:0;cursor:pointer;transition:color 0.2s;text-decoration:none;color:#95979c;border:0;outline:0;background:transparent}.remodal-close:hover,.remodal-close:focus{color:#2b2e38}.remodal-close:before{font-family:Arial, "Helvetica CY", "Nimbus Sans L", sans-serif !important;font-size:25px;line-height:35px;position:absolute;top:0;left:0;display:block;width:35px;content:"\00d7";text-align:center}@keyframes remodal-opening-keyframes{from{transform:scale(1.05);opacity:0}to{transform:none;opacity:1}}@keyframes remodal-closing-keyframes{from{transform:scale(1);opacity:1}to{transform:scale(0.95);opacity:0}}@keyframes remodal-overlay-opening-keyframes{from{opacity:0}to{opacity:1}}@keyframes remodal-overlay-closing-keyframes{from{opacity:1}to{opacity:0}}@media only screen and (min-width: 641px){.remodal{max-width:700px}}.lt-ie9 .remodal-overlay{background:#2b2e38}.lt-ie9 .remodal{width:700px}.remodal{padding:35px 0 0;text-align:left;box-shadow:0 10px 20px rgba(0,0,0,0.3);border-radius:3px}.tab-bar{background:#253A47;margin:0;padding:0;list-style:none;font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif}.tab-bar:after{content:"";display:table;clear:both}.tab-bar li{display:block;float:left;height:3.5em}.tab-bar li.active span,.tab-bar li.active a{background:#eee;color:#737C81}@media only all and (max-width: 47.938em){.tab-bar li{width:100%}.tab-bar li span,.tab-bar li a{width:100%;text-align:center}}.tab-bar span,.tab-bar a{display:inline-block;padding:0 4rem;line-height:3.5em;color:#d1dee7}.tab-bar span:hover,.tab-bar a:hover{color:#fff;background:#141f25}@-webkit-keyframes show{from{opacity:0}to{opacity:1}}@-moz-keyframes show{from{opacity:0}to{opacity:1}}@keyframes show{from{opacity:0}to{opacity:1}}.form-tabs{background:#253A47;font-family:"Montserrat","Helvetica","Tahoma","Geneva","Arial",sans-serif;margin-top:-4rem}@media only all and (max-width: 47.938em){.form-tabs{padding-top:4rem}}.form-tabs>input[type=radio]{display:none}.form-tabs>input[type=radio]:checked+label{background:#eee;color:#737C81}.form-tabs>label{display:inline-block;cursor:pointer;color:#d1dee7;height:3.5em;text-align:center;line-height:3.5em;padding:0 2rem}@media only all and (max-width: 47.938em){.form-tabs>label{width:100%}}.form-tabs>label:last-of-type{border-bottom:none}.form-tabs>label:hover{color:#fff;background:#2a4251}.tab-body{position:absolute;top:-9999px;opacity:0;width:100%}.tab-body-wrapper{padding-top:3.5em;background:#eee}#tab1:checked ~ .tab-body-wrapper #tab-body-1,#tab2:checked ~ .tab-body-wrapper #tab-body-2,#tab3:checked ~ .tab-body-wrapper #tab-body-3,#tab4:checked ~ .tab-body-wrapper #tab-body-4,#tab5:checked ~ .tab-body-wrapper #tab-body-5,#tab6:checked ~ .tab-body-wrapper #tab-body-6,#tab7:checked ~ .tab-body-wrapper #tab-body-7,#tab8:checked ~ .tab-body-wrapper #tab-body-8,#tab9:checked ~ .tab-body-wrapper #tab-body-9,#tab10:checked ~ .tab-body-wrapper #tab-body-10{position:relative;top:0px;opacity:1}.grav-mdeditor .CodeMirror-scroll{margin-right:-36px;padding-bottom:36px}.grav-mdeditor-fullscreen{position:fixed;top:0;left:0;bottom:0;right:0;z-index:99999}.grav-mdeditor-fullscreen .grav-mdeditor-content,.grav-mdeditor-fullscreen .grav-mdeditor-code,.grav-mdeditor-fullscreen .CodeMirror-wrap,.grav-mdeditor-fullscreen .grav-mdeditor-preview{height:100% !important}.grav-mdeditor-fullscreen .grav-mdeditor-navbar,.grav-mdeditor-fullscreen .grav-mdeditor-navbar ul li:first-child a,.grav-mdeditor-fullscreen .grav-mdeditor-navbar-flip ul li:last-child a{border-radius:0}.grav-mdeditor-navbar{border:1px solid #d5d5d5;border-top-right-radius:4px;border-top-left-radius:4px;background:#fbfbfb}.grav-mdeditor-navbar:after{content:"";display:table;clear:both}.grav-mdeditor-navbar ul{list-style:none;margin:0;padding:0}.grav-mdeditor-navbar ul li{float:left;padding:inherit !important;margin:inherit !important;border-radius:inherit !important;border:inherit !important}.grav-mdeditor-navbar ul li:first-child a{border-top-left-radius:4px}.grav-mdeditor-navbar ul .mdeditor-active a{background:white;cursor:auto;border-left:1px solid #d5d5d5;border-right:1px solid #d5d5d5}.grav-mdeditor-navbar ul .mdeditor-active a:hover{background:#fff}.grav-mdeditor-navbar ul a{display:block;cursor:pointer;line-height:3rem;height:3rem;padding:0 1rem;color:#737C81}.grav-mdeditor-navbar ul a:hover{background:#f3f3f3;color:#5b6266}.grav-mdeditor-navbar-nav{float:left}.grav-mdeditor-navbar-flip{float:right}.grav-mdeditor-navbar-flip ul li:last-child a{border-top-right-radius:4px}.grav-mdeditor-content{cursor:text;border:1px solid #d5d5d5;border-top:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.grav-mdeditor-content:after{content:"";display:table;clear:both}.grav-mdeditor-code .CodeMirror{padding:10px 20px 20px 20px;border-bottom-left-radius:4px}.grav-mdeditor-preview{padding:20px;overflow-y:scroll;position:relative;background:#fbfbfb;border-bottom-right-radius:4px}.grav-mdeditor-navbar p{margin-top:10px;margin-bottom:10px;padding-left:20px}#admin-main .grav-mdeditor-preview{font-family:"Lato","Helvetica","Tahoma","Geneva","Arial",sans-serif}#admin-main .grav-mdeditor-preview h1,#admin-main .grav-mdeditor-preview h2,#admin-main .grav-mdeditor-preview h3,#admin-main .grav-mdeditor-preview h4,#admin-main .grav-mdeditor-preview h5,#admin-main .grav-mdeditor-preview h6{color:#5b6266}#admin-main .grav-mdeditor-preview h1{font-size:2rem;border:0}#admin-main .grav-mdeditor-preview h2{font-size:1.6rem}#admin-main .grav-mdeditor-preview h3{font-size:1.4rem}#admin-main .grav-mdeditor-preview h4{font-size:1.2rem}#admin-main .grav-mdeditor-preview h5{font-size:1.1rem}#admin-main .grav-mdeditor-preview p,#admin-main .grav-mdeditor-preview h1{padding:0}[data-mode=tab][data-active-tab=code] .grav-mdeditor-preview,[data-mode=tab][data-active-tab=preview] .grav-mdeditor-code{display:none}[data-mode=split] .grav-mdeditor-button-code,[data-mode=split] .grav-mdeditor-button-preview{display:none}[data-mode=split] .grav-mdeditor-code{border-right:1px solid #d5d5d5}[data-mode=split] .grav-mdeditor-code,[data-mode=split] .grav-mdeditor-code .grav-mdeditor-preview{float:left;width:50%}.cm-s-paper.CodeMirror{color:#676f74;font-size:14px;line-height:1.4}.cm-s-paper.CodeMirror pre{font-family:"DejaVu Sans Mono", Menlo, Monaco, Consolas, Courier, monospace}.cm-s-paper .cm-link{color:#005e87}.cm-s-paper .cm-comment{color:#80898e}.cm-s-paper .cm-header{color:#4f5559}.cm-s-paper .cm-strong{color:#5b6266}.cm-s-paper .cm-em{color:#4f5559}.cm-s-paper .cm-string{color:#0082BA}.cm-s-paper .cm-tag{color:#349886}.cm-s-paper .cm-bracket{color:#41bea8}.cm-s-paper .cm-variable{color:#4f5559}.cm-s-paper .cm-variable-2{color:#80898e}.cm-s-paper .cm-variable-3{color:#8d959a}.cm-s-paper .cm-hr{color:#d1d4d6;font-weight:bold}.cm-s-paper .cm-keyword{color:#0082BA}.cm-s-paper .cm-atom{color:#9055AF}.cm-s-paper .cm-meta{color:#676f74}.cm-s-paper .cm-number{color:#7f8c8d}.cm-s-paper .cm-def{color:#00f}.cm-s-paper .cm-variable{color:black}.cm-s-paper .cm-variable-2{color:#555}.cm-s-paper .cm-variable-3{color:#085}.cm-s-paper .cm-property{color:black}.cm-s-paper .cm-operator{color:black}.cm-s-paper .cm-string-2{color:#f50}.cm-s-paper .cm-meta{color:#555}.cm-s-paper .cm-error{color:#f00}.cm-s-paper .cm-qualifier{color:#555}.cm-s-paper .cm-builtin{color:#555}.cm-s-paper .cm-attribute{color:#7f8c8d}.cm-s-paper .cm-quote{color:#888}.cm-s-paper .cm-header-1{font-size:140%}.cm-s-paper .cm-header-2{font-size:120%}.cm-s-paper .cm-header-3{font-size:110%}.cm-s-paper .cm-negative{color:#d44}.cm-s-paper .cm-positive{color:#292}.cm-s-paper .cm-header,.cm-s-paper .cm-strong{font-weight:bold}.cm-s-paper .cm-em{font-style:italic}.cm-s-paper .cm-link{text-decoration:underline}.cm-s-paper .cm-invalidchar{color:#f00}.form-uploads-wrapper h3{font-size:1rem;margin:2rem 0 0.5rem 0}.dropzone{position:relative;border:1px #d5d5d5 solid;border-radius:4px;min-height:4rem;background:#fff}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-drag-hover{border-color:rgba(0,0,0,0.15);background:rgba(0,0,0,0.04)}.dropzone.dz-started .dz-message{display:none}.dropzone .dz-message{opacity:1;-ms-filter:none;filter:none}.dropzone .dz-preview{position:relative;display:inline-block;margin:1rem;vertical-align:top}.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail]{display:none}.dropzone .dz-preview.dz-error .dz-error-mark{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{color:#fff;font-family:FontAwesome;display:none;position:absolute;width:22px;height:22px;font-size:18px;line-height:25px;border-radius:100%;text-align:center;right:2px;top:2px}.dropzone .dz-preview .dz-success-mark span,.dropzone .dz-preview .dz-error-mark span{display:none}.dropzone .dz-preview:hover .dz-success-mark,.dropzone .dz-preview:hover .dz-error-mark{display:none}.dropzone .dz-preview .dz-success-mark{background-color:#41bea8}.dropzone .dz-preview .dz-success-mark::after{content:'\f00c'}.dropzone .dz-preview .dz-error-mark{background-color:#D55A4E}.dropzone .dz-preview .dz-error-mark::after{content:'\f12a'}.dropzone .dz-preview .dz-progress{position:absolute;top:100px;left:0px;right:0px;height:4px;background:#d7d7d7;display:none}.dropzone .dz-preview .dz-progress .dz-upload{display:block;position:absolute;top:0;bottom:0;left:0;width:0%;background-color:#41bea8}.dropzone .dz-preview .dz-error-message{display:none;position:absolute;top:0;left:0;right:0;font-size:0.9rem;line-height:1.2;padding:8px 10px;background:#f6f6f6;color:#D55A4E;z-index:500}.dropzone .dz-preview.dz-processing .dz-progress{display:block}.dropzone .dz-preview:hover:not(.hide-backface) .dz-details img{display:none}.dropzone .dz-preview:hover.dz-error .dz-error-message{display:block}.dropzone .dz-preview .dz-remove,.dropzone .dz-preview .dz-insert{display:none}.dropzone .dz-preview:hover .dz-remove,.dropzone .dz-preview:hover .dz-insert{display:block;position:absolute;left:0;right:0;bottom:22px;border:1px solid #e1e1e1;width:50%;text-align:center;cursor:pointer;font-size:0.8rem}.dropzone .dz-preview:hover .dz-remove:hover,.dropzone .dz-preview:hover .dz-insert:hover{background:#eee}.dropzone .dz-preview:hover .dz-remove{left:inherit;border-left:0}.dropzone .dz-preview:hover .dz-insert{right:inherit}.dropzone .dz-preview.dz-processing .dz-details{overflow:hidden}.dropzone .dz-preview.dz-processing .dz-details img{position:absolute;left:50%;top:50%;height:auto;width:100%;-webkit-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.dropzone .dz-preview .dz-details{width:150px;height:100px;position:relative;background:#f6f6f6;border:1px solid #e1e1e1;font-size:0.8rem;padding:5px;margin-bottom:22px}.dropzone .dz-preview .dz-details .dz-filename{line-height:1.2;overflow:hidden;height:100%}.dropzone .dz-preview .dz-details img{position:absolute;top:0;left:0;width:150px;height:100px}.dropzone .dz-preview .dz-details .dz-size{position:absolute;bottom:-28px;left:0;right:0;text-align:center;font-size:0.8rem;height:28px;line-height:28px}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message span{cursor:pointer;color:#c3c7ca;text-align:center;font-size:1.4rem;line-height:4rem}.dropzone *{cursor:default}.toast-title{font-weight:bold}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#ffffff}.toast-message a:hover{color:#cccccc;text-decoration:none}.toast-close-button{position:relative;right:-0.3em;top:-0.3em;float:right;font-size:20px;font-weight:bold;color:#ffffff;-webkit-text-shadow:0 1px 0 #ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:hover,.toast-close-button:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-right{top:5rem;right:1.5rem}#toast-container{position:fixed;z-index:999999}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;color:#ffffff;opacity:0.9;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=90);filter:alpha(opacity=90)}#toast-container>:hover{opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important}#toast-container.toast-top-center>div,#toast-container.toast-bottom-center>div{width:300px;margin:auto}#toast-container.toast-top-full-width>div,#toast-container.toast-bottom-full-width>div{width:96%;margin:auto}.toast{background-color:#030303}.toast-success{background-color:#9055AF}.toast-success .button{background:#9b66b7;background:#a778bf;color:rgba(255,255,255,0.85);border-radius:4px}.toast-success .button:hover{background:#b289c7;color:#fff}.toast-success .button.dropdown-toggle{background:#b289c7;border-left:1px solid #9b66b7}.toast-error{background-color:#DA4B46}.toast-error .button{background-color:#c62d28;background:#9b231f;color:rgba(255,255,255,0.85);border-radius:4px}.toast-error .button:hover{background:#b02823;color:#fff}.toast-error .button.dropdown-toggle{background:#b02823;border-left:1px solid #861e1b}.toast-info{background-color:#2693B7}.toast-info .button{background-color:#1d718d;background:#144f63;color:rgba(255,255,255,0.85);border-radius:4px}.toast-info .button:hover{background:#196078;color:#fff}.toast-info .button.dropdown-toggle{background:#196078;border-left:1px solid #103e4d}.toast-warning{background-color:#f89406}.toast-warning .button{background-color:#c67605;background:#945904;color:rgba(255,255,255,0.85);border-radius:4px}.toast-warning .button:hover{background:#ad6704;color:#fff}.toast-warning .button.dropdown-toggle{background:#ad6704;border-left:1px solid #7c4a03}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000000;opacity:0.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width: 240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width: 241px) and (max-width: 480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}}@media all and (min-width: 481px) and (max-width: 768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}.gpm>table>tbody>tr{border-bottom:1px solid #e1e1e1}.gpm td{border:0}.gpm .gpm-name{white-space:nowrap;color:#b6bbbe}.gpm .gpm-version{padding-left:0.5rem;color:#8d959a;font-size:0.9rem}.gpm .gpm-update .gpm-name{color:#349886}.gpm .gpm-actions .enabled,.gpm .gpm-actions .disabled{font-size:1.6rem}.gpm .gpm-actions .disabled{color:#8d959a}.gpm .gpm-item-info{position:relative;border-bottom:3px solid #e1e1e1;padding-bottom:1rem;margin-bottom:3rem;overflow:hidden}@media only all and (max-width: 47.938em){.gpm .gpm-item-info{word-wrap:break-word}}.gpm .gpm-item-info .gpm-item-icon{color:#e6e6e6;position:absolute;right:3rem;font-size:20rem}.gpm .gpm-item-info table{position:relative}.gpm .gpm-item-info td{border:0;text-align:left !important}.gpm .gpm-item-info td:first-child{color:#9ba2a6;white-space:nowrap;width:25%}.gpm .gpm-item-info tr:hover{background:inherit}.gpm .badge.update{display:inline-block;background:#9055AF;border-radius:4px;padding:2px 10px;color:#fff;margin-left:1rem}.gpm .gpm-ribbon{background-color:#9055AF;overflow:hidden;white-space:nowrap;position:absolute;top:1rem;right:-2rem;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gpm .gpm-ribbon a{color:#fff;display:block;font-weight:bold;font-size:0.9rem;padding:5px 40px;text-align:center}.gpm .themes{padding:3rem}.gpm .themes .gpm-name{margin-bottom:0.5rem}.gpm .themes .gpm-actions{background:#e9e9e9;margin:1rem -1rem -1rem -1rem;height:4rem;text-align:center;padding:1rem;font-size:1rem;font-weight:bold}.gpm .themes .active-theme .gpm-actions,.gpm .themes.inactive-theme .gpm-actions{line-height:2rem}.gpm .themes .active-theme{border:1px solid #349886}.gpm .themes .active-theme .gpm-actions{background:#349886;color:#eee}.gpm .themes .inactive-theme .gpm-actions{display:block;color:#a2a2a2;font-weight:normal}#phpinfo img{display:none}#phpinfo table{margin:1rem 0 0}#phpinfo tr:hover{background:transparent}#phpinfo th{background:#d9d9d9}#phpinfo td{word-wrap:break-word}#phpinfo td h1{margin:0rem -3rem 0rem !important}#phpinfo td:first-child{color:#349886}#phpinfo hr{border-bottom:0}#phpinfo h1{font-size:2.3rem}#phpinfo h2{font-size:1.7rem;margin:3rem 3rem 0rem !important} /*# sourceMappingURL=template.css.map */ diff --git a/themes/grav/css-compiled/template.css.map b/themes/grav/css-compiled/template.css.map index 55d56f82..c0edc374 100644 --- a/themes/grav/css-compiled/template.css.map +++ b/themes/grav/css-compiled/template.css.map @@ -1,7 +1,7 @@ { "version": 3, -"mappings": "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", -"sources": ["../scss/template/_fonts.scss","../scss/nucleus/mixins/_utilities.scss","../scss/template/modules/_buttons.scss","../scss/configuration/template/_typography.scss","../scss/template/_core.scss","../scss/configuration/template/_colors.scss","../scss/configuration/template/_bullets.scss","../scss/configuration/template/_variables.scss","../scss/vendor/bourbon/css3/_font-face.scss","../scss/template/_extensions.scss","../scss/vendor/bourbon/addons/_prefixer.scss","../scss/nucleus/mixins/_breakpoints.scss","../scss/template/_typography.scss","../scss/configuration/nucleus/_typography.scss","../scss/template/modules/_toggle-switch.scss","../scss/template/_forms.scss","../scss/vendor/bourbon/css3/_flex-box.scss","../scss/template/_tables.scss","../scss/template/_buttons.scss","../scss/template/_errors.scss","../scss/template/_login.scss","../scss/vendor/bourbon/css3/_placeholder.scss","../scss/template/_admin.scss","../scss/vendor/bourbon/addons/_clearfix.scss","../scss/vendor/bourbon/css3/_linear-gradient.scss","../scss/template/_pages.scss","../scss/template/_remodal.scss","../scss/vendor/bourbon/css3/_transition.scss","../scss/vendor/bourbon/functions/_transition-property-name.scss","../scss/template/_tabs.scss","../scss/vendor/bourbon/css3/_keyframes.scss","../scss/template/_editor.scss","../scss/template/_dropzone.scss","../scss/template/_toastr.scss","../scss/template/_gpm.scss","../scss/template/_phpinfo.scss"], +"mappings": "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", +"sources": ["../scss/template/_fonts.scss","../scss/nucleus/mixins/_utilities.scss","../scss/template/modules/_buttons.scss","../scss/configuration/template/_typography.scss","../scss/template/_core.scss","../scss/configuration/template/_colors.scss","../scss/configuration/template/_bullets.scss","../scss/configuration/template/_variables.scss","../scss/vendor/bourbon/css3/_font-face.scss","../scss/template/_extensions.scss","../scss/vendor/bourbon/addons/_prefixer.scss","../scss/nucleus/mixins/_breakpoints.scss","../scss/template/_typography.scss","../scss/configuration/nucleus/_typography.scss","../scss/template/modules/_toggle-switch.scss","../scss/template/_forms.scss","../scss/vendor/bourbon/css3/_flex-box.scss","../scss/template/_tables.scss","../scss/template/_buttons.scss","../scss/template/_errors.scss","../scss/template/_login.scss","../scss/vendor/bourbon/css3/_placeholder.scss","../scss/template/_admin.scss","../scss/vendor/bourbon/addons/_clearfix.scss","../scss/vendor/bourbon/css3/_linear-gradient.scss","../scss/template/_pages.scss","../scss/template/_remodal.scss","../scss/template/_tabs.scss","../scss/vendor/bourbon/css3/_keyframes.scss","../scss/template/_editor.scss","../scss/template/_dropzone.scss","../scss/template/_toastr.scss","../scss/template/_gpm.scss","../scss/template/_phpinfo.scss"], "names": [], "file": "template.css" } \ No newline at end of file diff --git a/themes/grav/gulpfile.js b/themes/grav/gulpfile.js new file mode 100644 index 00000000..a9d90a8b --- /dev/null +++ b/themes/grav/gulpfile.js @@ -0,0 +1,73 @@ +'use strict'; + +var gulp = require('gulp'), + path = require('path'), + immutable = require('immutable'), + merge = require('merge-stream'), + gulpWebpack = require('gulp-webpack'), + webpack = require('webpack'); + +var plugins = { + 'Promise': 'imports?this=>global!exports?global.Promise!babel-polyfill', + 'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch' + }, + base = immutable.fromJS(require('./webpack.conf.js')), + options = { + dev: base.mergeDeep({ + devtool: 'source-map', + plugins: [ + new webpack.DefinePlugin({ + 'process.env': { NODE_ENV: '"development"' } + }), + new webpack.ProvidePlugin(plugins), + new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.js", Infinity) + ], + output: { + filename: 'admin.js' + } + }), + + prod: base.mergeDeep({ + plugins: [ + new webpack.DefinePlugin({ + 'process.env': { NODE_ENV: '"production"' } + }), + new webpack.optimize.UglifyJsPlugin({ + sourceMap: false, + compress: { + warnings: false + } + }), + new webpack.ProvidePlugin(plugins), + new webpack.optimize.CommonsChunkPlugin("vendor", "vendor.min.js", Infinity) + ], + output: { + filename: 'admin.min.js' + } + }) + }; + +var compileJS = function(watch) { + var devOpts = options.dev.set('watch', watch), + prodOpts = options.prod.set('watch', watch); + + var prod = gulp.src('app/main.js') + .pipe(gulpWebpack(prodOpts.toJS())) + .pipe(gulp.dest('js/')); + + var dev = gulp.src('app/main.js') + .pipe(gulpWebpack(devOpts.toJS())) + .pipe(gulp.dest('js/')); + + return merge(prod, dev); +}; + +gulp.task('js', function() { + compileJS(false); +}); + +gulp.task('watch', function() { + compileJS(true); +}); + +gulp.task('default', ['js']); diff --git a/themes/grav/js/admin-all.js b/themes/grav/js/admin-all.js index b66212f2..51389740 100644 --- a/themes/grav/js/admin-all.js +++ b/themes/grav/js/admin-all.js @@ -1,4 +1,4 @@ -var getState = function(){ +/*var getState = function(){ var loadValues = [], ignoreNames = ['page-filter', 'page-search']; $('input, select, textarea').each(function(index, element){ @@ -9,37 +9,37 @@ var getState = function(){ }); return loadValues.toString(); -}; +};*/ -var bytesToSize = function(bytes) { +/*var bytesToSize = function(bytes) { var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; if (bytes == 0) return '0 Byte'; var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024))); return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i]; -}; +};*/ -var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; +/*var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1; var keepAlive = function keepAlive() { $.post(GravAdmin.config.base_url_relative + '/task' + GravAdmin.config.param_sep + 'keepAlive', { 'admin-nonce': GravAdmin.config.admin_nonce }); -}; +};*/ $(function () { - jQuery.substitute = function(str, sub) { + /*jQuery.substitute = function(str, sub) { return str.replace(/\{(.+?)\}/g, function($0, $1) { return $1 in sub ? sub[$1] : $0; }); - }; + };*/ // Set Toastr defaults - toastr.options = { + /*toastr.options = { "positionClass": "toast-top-right" - } + }*/ // dashboard - var chart = $('.updates-chart'), UpdatesChart; + /*var chart = $('.updates-chart'), UpdatesChart; if (chart.length) { var data = { series: [100, 0] @@ -60,17 +60,17 @@ $(function () { if (data.index) { return; } chart.find('.numeric span').text(Math.round(data.value) + '%'); - var text = translations.PLUGIN_ADMIN.UPDATES_AVAILABLE; + var text = GravAdmin.translations.PLUGIN_ADMIN.UPDATES_AVAILABLE; if (data.value == 100) { - text = translations.PLUGIN_ADMIN.FULLY_UPDATED; + text = GravAdmin.translations.PLUGIN_ADMIN.FULLY_UPDATED; } $('.js__updates-available-description').html(text) $('.updates-chart .hidden').removeClass('hidden'); }); } - +*/ // Cache Clear - $('[data-clear-cache]').on('click', function(e) { + /*$('[data-clear-cache]').on('click', function(e) { $(this).attr('disabled','disabled').find('> .fa').removeClass('fa-trash').addClass('fa-refresh fa-spin'); var url = $(this).data('clearCache'); @@ -85,10 +85,10 @@ $(function () { }).always(function() { $('[data-clear-cache]').removeAttr('disabled').find('> .fa').removeClass('fa-refresh fa-spin').addClass('fa-trash'); }); - }); + });*/ // Plugins list details sliders - $('.gpm-name, .gpm-actions').on('click', function(e){ + /*$('.gpm-name, .gpm-actions').on('click', function(e){ var target = $(e.target); if (target.prop('tagName') == 'A' || target.parent('a').length) { return true; } @@ -105,10 +105,10 @@ $(function () { .addClass('fa-chevron-' + (isVisible ? 'up' : 'down')); } }); - }); + });*/ // Update plugins/themes - $(document).on('click', '[data-maintenance-update]', function(e) { + /*$(document).on('click', '[data-maintenance-update]', function(e) { $(this).attr('disabled','disabled').find('> .fa').removeClass('fa-cloud-download').addClass('fa-refresh fa-spin'); var url = $(this).data('maintenanceUpdate'); @@ -125,9 +125,9 @@ $(function () { toastr.success(result.message + window.grav_available_version); $('#footer .grav-version').html(window.grav_available_version); - /*// hide the update button after successfull update and update the badges + /!*!// hide the update button after successfull update and update the badges $('[data-maintenance-update]').fadeOut(); - $('.badges.with-updates').removeClass('with-updates').find('.badge.updates').remove();*/ + $('.badges.with-updates').removeClass('with-updates').find('.badge.updates').remove();*!/ } else { toastr.success(result.message); } @@ -139,10 +139,10 @@ $(function () { GPMRefresh(); $('[data-maintenance-update]').removeAttr('disabled').find('> .fa').removeClass('fa-refresh fa-spin').addClass('fa-cloud-download'); }); - }); + });*/ // Update plugins/themes - $('[data-ajax]').on('click', function(e) { + /*$('[data-ajax]').on('click', function(e) { var button = $(this), icon = button.find('> .fa'), @@ -182,7 +182,7 @@ $(function () { } } - toastr.success(result.message || translations.PLUGIN_ADMIN.TASK_COMPLETED); + toastr.success(result.message || GravAdmin.translations.PLUGIN_ADMIN.TASK_COMPLETED); for (var setting in toastrBackup) { if (toastrBackup.hasOwnProperty(setting)) { toastr.options[setting] = toastrBackup[setting]; @@ -191,7 +191,7 @@ $(function () { if (url.indexOf(task + 'backup') !== -1) { //Reset backup days count - $('.backups-chart .numeric').html("0 " + translations.PLUGIN_ADMIN.DAYS + ""); + $('.backups-chart .numeric').html("0 " + GravAdmin.translations.PLUGIN_ADMIN.DAYS + ""); var data = { series: [0,100] @@ -214,9 +214,9 @@ $(function () { button.removeAttr('disabled'); icon.removeClass('fa-refresh fa-spin').addClass(iconClasses.join(' ')); }); - }); + });*/ - $('[data-gpm-checkupdates]').on('click', function(){ + /*$('[data-gpm-checkupdates]').on('click', function(){ var element = $(this); element.find('i').addClass('fa-spin'); GPMRefresh({ @@ -227,21 +227,21 @@ $(function () { if (payload) { if (!payload.grav.isUpdatable && !payload.resources.total) { - toastr.success(translations.PLUGIN_ADMIN.EVERYTHING_UP_TO_DATE); + toastr.success(GravAdmin.translations.PLUGIN_ADMIN.EVERYTHING_UP_TO_DATE); } else { var grav = payload.grav.isUpdatable ? 'Grav v' + payload.grav.available : ''; - var resources = payload.resources.total ? payload.resources.total + ' ' + translations.PLUGIN_ADMIN.UPDATES_ARE_AVAILABLE: ''; + var resources = payload.resources.total ? payload.resources.total + ' ' + GravAdmin.translations.PLUGIN_ADMIN.UPDATES_ARE_AVAILABLE: ''; - if (!resources) { grav += ' ' + translations.PLUGIN_ADMIN.IS_AVAILABLE_FOR_UPDATE } - toastr.info(grav + (grav && resources ? ' ' + translations.PLUGIN_ADMIN.AND + ' ' : '') + resources); + if (!resources) { grav += ' ' + GravAdmin.translations.PLUGIN_ADMIN.IS_AVAILABLE_FOR_UPDATE } + toastr.info(grav + (grav && resources ? ' ' + GravAdmin.translations.PLUGIN_ADMIN.AND + ' ' : '') + resources); } } } }); - }); + });*/ var GPMRefresh = function (options) { - options = options || {}; + /*options = options || {}; var data = { task: 'GPM', @@ -261,19 +261,19 @@ $(function () { return; } - var grav = response.payload.grav, + /!*var grav = response.payload.grav, installed = response.payload.installed, resources = response.payload.resources, task = 'task' + GravAdmin.config.param_sep; - +*!/ // grav updatable - if (grav.isUpdatable) { + /!*if (grav.isUpdatable) { var icon = ' '; - content = 'Grav v{available} ' + translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE + '! (' + translations.PLUGIN_ADMIN.CURRENT + ': v{version}) ', - button = ''; + content = 'Grav v{available} ' + GravAdmin.translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE + '! (' + GravAdmin.translations.PLUGIN_ADMIN.CURRENT + ': v{version}) ', + button = ''; if (grav.isSymlink) { - button = ''; + button = ''; } content = jQuery.substitute(content, {available: grav.available, version: grav.version}); @@ -282,33 +282,33 @@ $(function () { } $('#grav-update-button').on('click', function() { - $(this).html(translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT + ' ' + bytesToSize(grav.assets['grav-update'].size) + '..'); - }); + $(this).html(GravAdmin.translations.PLUGIN_ADMIN.UPDATING_PLEASE_WAIT + ' ' + bytesToSize(grav.assets['grav-update'].size) + '..'); + });*!/ // dashboard - if ($('.updates-chart').length) { + /!*if ($('.updates-chart').length) { var missing = (resources.total + (grav.isUpdatable ? 1 : 0)) * 100 / (installed + (grav.isUpdatable ? 1 : 0)), updated = 100 - missing; UpdatesChart.update({series: [updated, missing]}); if (resources.total) { $('#updates [data-maintenance-update]').fadeIn(); } - } + }*!/ - if (!resources.total) { + /!*if (!resources.total) { $('#updates [data-maintenance-update]').fadeOut(); $('.badges.with-updates').removeClass('with-updates').find('.badge.updates').remove(); } else { var length, icon = '', - content = '{updates} ' + translations.PLUGIN_ADMIN.OF_YOUR + ' {type} ' + translations.PLUGIN_ADMIN.HAVE_AN_UPDATE_AVAILABLE, - button = '' + translations.PLUGIN_ADMIN.UPDATE + ' {Type}', + content = '{updates} ' + GravAdmin.translations.PLUGIN_ADMIN.OF_YOUR + ' {type} ' + GravAdmin.translations.PLUGIN_ADMIN.HAVE_AN_UPDATE_AVAILABLE, + button = '' + GravAdmin.translations.PLUGIN_ADMIN.UPDATE + ' {Type}', plugins = $('.grav-update.plugins'), themes = $('.grav-update.themes'), sidebar = {plugins: $('#admin-menu a[href$="/plugins"]'), themes: $('#admin-menu a[href$="/themes"]')}; // sidebar - if (sidebar.plugins.length || sidebar.themes.length) { + /!*if (sidebar.plugins.length || sidebar.themes.length) { var length, badges; if (sidebar.plugins.length && (length = Object.keys(resources.plugins).length)) { badges = sidebar.plugins.find('.badges'); @@ -321,7 +321,7 @@ $(function () { badges.addClass('with-updates'); badges.find('.badge.updates').text(length); } - } + }*!/ // list page if (plugins[0] && (length = Object.keys(resources.plugins).length)) { @@ -334,7 +334,7 @@ $(function () { plugin = $('[data-gpm-plugin="' + key + '"] .gpm-name'); url = plugin.find('a'); if (!plugin.find('.badge.update').length) { - plugin.append('' + translations.PLUGIN_ADMIN.UPDATE_AVAILABLE + '!'); + plugin.append('' + GravAdmin.translations.PLUGIN_ADMIN.UPDATE_AVAILABLE + '!'); } }); @@ -349,12 +349,12 @@ $(function () { $.each(resources.themes, function (key, value) { theme = $('[data-gpm-theme="' + key + '"]'); url = theme.find('.gpm-name a'); - theme.append('
' + translations.PLUGIN_ADMIN.UPDATE.toUpperCase() + '
'); + theme.append('
' + GravAdmin.translations.PLUGIN_ADMIN.UPDATE.toUpperCase() + '
'); }); - } + }*!/ // details page - var type = 'plugin', + /!*var type = 'plugin', details = $('.grav-update.plugin')[0]; if (!details) { @@ -368,7 +368,7 @@ $(function () { resource = resources[type + 's'][slug]; if (resource) { - content = 'v{available} ' + translations.PLUGIN_ADMIN.OF_THIS + ' ' + type + ' ' + translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE + '!'; + content = 'v{available} ' + GravAdmin.translations.PLUGIN_ADMIN.OF_THIS + ' ' + type + ' ' + GravAdmin.translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE + '!'; content = jQuery.substitute(content, { available: resource.available }); button = jQuery.substitute(button, { Type: Type, @@ -376,21 +376,21 @@ $(function () { }); $(details).html('

' + icon + content + button + '

'); } - } - } + }*!/ + //} if (options.callback && typeof options.callback == 'function') options.callback(response); } }).always(function() { $('[data-gpm-checkupdates]').find('i').removeClass('fa-spin'); - }); + });*/ }; - if (GravAdmin.config.enable_auto_updates_check === '1') { + /*if (GravAdmin.config.enable_auto_updates_check === '1') { GPMRefresh(); - } + }*/ - function reIndex (collection) { + /*function reIndex (collection) { var holder = collection.find('[data-collection-holder]'), addBtn = collection.find('[data-action="add"]'), prefix = holder.data('collection-holder'), @@ -469,10 +469,10 @@ $(function () { MDEditors.add(field); } }); - }); + });*/ // enable the toggleable checkbox when typing in the corresponding textarea/input element - jQuery(document).on('input propertychange click', '.form-data textarea, .form-data input, .form-data label, .form-data .selectize-input', function() { + /*jQuery(document).on('input propertychange click', '.form-data textarea, .form-data input, .form-data label, .form-data .selectize-input', function() { var item = this; var checkbox = $(item).parents('.form-field').find('.toggleable input[type="checkbox"]'); @@ -501,26 +501,26 @@ $(function () { input.siblings('label').css('opacity', on ? 1 : 0.7); $(this).parents('.form-label').siblings('.form-data').css('opacity', on ? 1 : 0.7); - }); + });*/ // Themes Switcher Warning - $(document).on('mousedown', '[data-remodal-target="theme-switch-warn"]', function(e){ + /*$(document).on('mousedown', '[data-remodal-target="theme-switch-warn"]', function(e){ var name = $(e.target).closest('[data-gpm-theme]').find('.gpm-name a').text(), remodal = $('.remodal.theme-switcher'); remodal.find('strong').text(name); remodal.find('.button.continue').attr('href', $(e.target).attr('href')); - }); + });*/ // Setup keep-alive on pages that have at least one element with data-grav-keepalive="true" set - if ($(document).find('[data-grav-keepalive="true"]').length > 0) { + /*if ($(document).find('[data-grav-keepalive="true"]').length > 0) { setInterval(function() { keepAlive(); }, (GravAdmin.config.admin_timeout/2)*1000); - } + }*/ // CTRL + S / CMD + S - shortcut for [Save] when available - var saveTask = $('[name="task"][value="save"]').filter(function(index, element) { + /*var saveTask = $('[name="task"][value="save"]').filter(function(index, element) { return !($(element).parents('.remodal-overlay').length); }); @@ -532,5 +532,5 @@ $(function () { saveTask.click(); } }); - } + }*/ }); diff --git a/themes/grav/js/admin.js b/themes/grav/js/admin.js new file mode 100644 index 00000000..f4300264 --- /dev/null +++ b/themes/grav/js/admin.js @@ -0,0 +1,13993 @@ +var Grav = +webpackJsonpGrav([0],[ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _gpm = __webpack_require__(1); + + var _gpm2 = _interopRequireDefault(_gpm); + + var _keepalive = __webpack_require__(200); + + var _keepalive2 = _interopRequireDefault(_keepalive); + + var _updates = __webpack_require__(201); + + var _updates2 = _interopRequireDefault(_updates); + + var _dashboard = __webpack_require__(206); + + var _dashboard2 = _interopRequireDefault(_dashboard); + + var _pages = __webpack_require__(211); + + var _pages2 = _interopRequireDefault(_pages); + + var _forms = __webpack_require__(227); + + var _forms2 = _interopRequireDefault(_forms); + + __webpack_require__(236); + + __webpack_require__(237); + + __webpack_require__(238); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // starts the keep alive, auto runs every X seconds + _keepalive2.default.start(); + + // bootstrap jQuery extensions + + exports.default = { + GPM: { + GPM: _gpm2.default, + Instance: _gpm.Instance + }, + KeepAlive: _keepalive2.default, + Dashboard: _dashboard2.default, + Pages: _pages2.default, + Forms: _forms2.default, + Updates: { + Updates: _updates2.default, + Instance: _updates.Instance + } + }; + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(fetch) {'use strict'; + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Instance = undefined; + + var _response2 = __webpack_require__(193); + + var _gravConfig = __webpack_require__(198); + + var _events = __webpack_require__(199); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + + function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + var GPM = function (_EventEmitter) { + _inherits(GPM, _EventEmitter); + + function GPM() { + var action = arguments.length <= 0 || arguments[0] === undefined ? 'getUpdates' : arguments[0]; + + _classCallCheck(this, GPM); + + var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(GPM).call(this)); + + _this.payload = {}; + _this.raw = {}; + _this.action = action; + return _this; + } + + _createClass(GPM, [{ + key: 'setPayload', + value: function setPayload() { + var payload = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + this.payload = payload; + this.emit('payload', payload); + + return this; + } + }, { + key: 'setAction', + value: function setAction() { + var action = arguments.length <= 0 || arguments[0] === undefined ? 'getUpdates' : arguments[0]; + + this.action = action; + this.emit('action', action); + + return this; + } + }, { + key: 'fetch', + value: function (_fetch) { + function fetch() { + return _fetch.apply(this, arguments); + } + + fetch.toString = function () { + return _fetch.toString(); + }; + + return fetch; + }(function () { + var _this2 = this; + + var callback = arguments.length <= 0 || arguments[0] === undefined ? function () { + return true; + } : arguments[0]; + var flush = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1]; + + var data = new FormData(); + data.append('task', 'GPM'); + data.append('action', this.action); + + if (flush) { + data.append('flush', true); + } + + this.emit('fetching', this); + + fetch(_gravConfig.config.base_url_relative, { + credentials: 'same-origin', + method: 'post', + body: data + }).then(function (response) { + _this2.raw = response;return response; + }).then(_response2.parseStatus).then(_response2.parseJSON).then(function (response) { + return _this2.response(response); + }).then(function (response) { + return callback(response, _this2.raw); + }).then(function (response) { + return _this2.emit('fetched', _this2.payload, _this2.raw, _this2); + }).catch(_response2.userFeedbackError); + }) + }, { + key: 'response', + value: function response(_response) { + this.payload = _response; + + return _response; + } + }]); + + return GPM; + }(_events.EventEmitter); + + exports.default = GPM; + var Instance = exports.Instance = new GPM(); + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2))) + +/***/ }, +/* 2 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(Promise, global) {/*** IMPORTS FROM imports-loader ***/ + (function() { + + (function() { + 'use strict'; + + if (self.fetch) { + return + } + + function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name) + } + if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) { + throw new TypeError('Invalid character in header field name') + } + return name.toLowerCase() + } + + function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value) + } + return value + } + + function Headers(headers) { + this.map = {} + + if (headers instanceof Headers) { + headers.forEach(function(value, name) { + this.append(name, value) + }, this) + + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function(name) { + this.append(name, headers[name]) + }, this) + } + } + + Headers.prototype.append = function(name, value) { + name = normalizeName(name) + value = normalizeValue(value) + var list = this.map[name] + if (!list) { + list = [] + this.map[name] = list + } + list.push(value) + } + + Headers.prototype['delete'] = function(name) { + delete this.map[normalizeName(name)] + } + + Headers.prototype.get = function(name) { + var values = this.map[normalizeName(name)] + return values ? values[0] : null + } + + Headers.prototype.getAll = function(name) { + return this.map[normalizeName(name)] || [] + } + + Headers.prototype.has = function(name) { + return this.map.hasOwnProperty(normalizeName(name)) + } + + Headers.prototype.set = function(name, value) { + this.map[normalizeName(name)] = [normalizeValue(value)] + } + + Headers.prototype.forEach = function(callback, thisArg) { + Object.getOwnPropertyNames(this.map).forEach(function(name) { + this.map[name].forEach(function(value) { + callback.call(thisArg, value, name, this) + }, this) + }, this) + } + + function consumed(body) { + if (body.bodyUsed) { + return Promise.reject(new TypeError('Already read')) + } + body.bodyUsed = true + } + + function fileReaderReady(reader) { + return new Promise(function(resolve, reject) { + reader.onload = function() { + resolve(reader.result) + } + reader.onerror = function() { + reject(reader.error) + } + }) + } + + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader() + reader.readAsArrayBuffer(blob) + return fileReaderReady(reader) + } + + function readBlobAsText(blob) { + var reader = new FileReader() + reader.readAsText(blob) + return fileReaderReady(reader) + } + + var support = { + blob: 'FileReader' in self && 'Blob' in self && (function() { + try { + new Blob(); + return true + } catch(e) { + return false + } + })(), + formData: 'FormData' in self, + arrayBuffer: 'ArrayBuffer' in self + } + + function Body() { + this.bodyUsed = false + + + this._initBody = function(body) { + this._bodyInit = body + if (typeof body === 'string') { + this._bodyText = body + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body + } else if (!body) { + this._bodyText = '' + } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) { + // Only support ArrayBuffers for POST method. + // Receiving ArrayBuffers happens via Blobs, instead. + } else { + throw new Error('unsupported BodyInit type') + } + } + + if (support.blob) { + this.blob = function() { + var rejected = consumed(this) + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as blob') + } else { + return Promise.resolve(new Blob([this._bodyText])) + } + } + + this.arrayBuffer = function() { + return this.blob().then(readBlobAsArrayBuffer) + } + + this.text = function() { + var rejected = consumed(this) + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as text') + } else { + return Promise.resolve(this._bodyText) + } + } + } else { + this.text = function() { + var rejected = consumed(this) + return rejected ? rejected : Promise.resolve(this._bodyText) + } + } + + if (support.formData) { + this.formData = function() { + return this.text().then(decode) + } + } + + this.json = function() { + return this.text().then(JSON.parse) + } + + return this + } + + // HTTP methods whose capitalization should be normalized + var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'] + + function normalizeMethod(method) { + var upcased = method.toUpperCase() + return (methods.indexOf(upcased) > -1) ? upcased : method + } + + function Request(input, options) { + options = options || {} + var body = options.body + if (Request.prototype.isPrototypeOf(input)) { + if (input.bodyUsed) { + throw new TypeError('Already read') + } + this.url = input.url + this.credentials = input.credentials + if (!options.headers) { + this.headers = new Headers(input.headers) + } + this.method = input.method + this.mode = input.mode + if (!body) { + body = input._bodyInit + input.bodyUsed = true + } + } else { + this.url = input + } + + this.credentials = options.credentials || this.credentials || 'omit' + if (options.headers || !this.headers) { + this.headers = new Headers(options.headers) + } + this.method = normalizeMethod(options.method || this.method || 'GET') + this.mode = options.mode || this.mode || null + this.referrer = null + + if ((this.method === 'GET' || this.method === 'HEAD') && body) { + throw new TypeError('Body not allowed for GET or HEAD requests') + } + this._initBody(body) + } + + Request.prototype.clone = function() { + return new Request(this) + } + + function decode(body) { + var form = new FormData() + body.trim().split('&').forEach(function(bytes) { + if (bytes) { + var split = bytes.split('=') + var name = split.shift().replace(/\+/g, ' ') + var value = split.join('=').replace(/\+/g, ' ') + form.append(decodeURIComponent(name), decodeURIComponent(value)) + } + }) + return form + } + + function headers(xhr) { + var head = new Headers() + var pairs = xhr.getAllResponseHeaders().trim().split('\n') + pairs.forEach(function(header) { + var split = header.trim().split(':') + var key = split.shift().trim() + var value = split.join(':').trim() + head.append(key, value) + }) + return head + } + + Body.call(Request.prototype) + + function Response(bodyInit, options) { + if (!options) { + options = {} + } + + this._initBody(bodyInit) + this.type = 'default' + this.status = options.status + this.ok = this.status >= 200 && this.status < 300 + this.statusText = options.statusText + this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers) + this.url = options.url || '' + } + + Body.call(Response.prototype) + + Response.prototype.clone = function() { + return new Response(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers(this.headers), + url: this.url + }) + } + + Response.error = function() { + var response = new Response(null, {status: 0, statusText: ''}) + response.type = 'error' + return response + } + + var redirectStatuses = [301, 302, 303, 307, 308] + + Response.redirect = function(url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError('Invalid status code') + } + + return new Response(null, {status: status, headers: {location: url}}) + } + + self.Headers = Headers; + self.Request = Request; + self.Response = Response; + + self.fetch = function(input, init) { + return new Promise(function(resolve, reject) { + var request + if (Request.prototype.isPrototypeOf(input) && !init) { + request = input + } else { + request = new Request(input, init) + } + + var xhr = new XMLHttpRequest() + + function responseURL() { + if ('responseURL' in xhr) { + return xhr.responseURL + } + + // Avoid security warnings on getResponseHeader when not allowed by CORS + if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) { + return xhr.getResponseHeader('X-Request-URL') + } + + return; + } + + xhr.onload = function() { + var status = (xhr.status === 1223) ? 204 : xhr.status + if (status < 100 || status > 599) { + reject(new TypeError('Network request failed')) + return + } + var options = { + status: status, + statusText: xhr.statusText, + headers: headers(xhr), + url: responseURL() + } + var body = 'response' in xhr ? xhr.response : xhr.responseText; + resolve(new Response(body, options)) + } + + xhr.onerror = function() { + reject(new TypeError('Network request failed')) + } + + xhr.open(request.method, request.url, true) + + if (request.credentials === 'include') { + xhr.withCredentials = true + } + + if ('responseType' in xhr && support.blob) { + xhr.responseType = 'blob' + } + + request.headers.forEach(function(value, name) { + xhr.setRequestHeader(name, value) + }) + + xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit) + }) + } + self.fetch.polyfill = true + })(); + + + /*** EXPORTS FROM exports-loader ***/ + module.exports = global.fetch + }.call(global)); + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(3), (function() { return this; }()))) + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {/*** IMPORTS FROM imports-loader ***/ + (function() { + + "use strict"; + + __webpack_require__(4); + + __webpack_require__(191); + + if (global._babelPolyfill) { + throw new Error("only one instance of babel-polyfill is allowed"); + } + global._babelPolyfill = true; + + /*** EXPORTS FROM exports-loader ***/ + module.exports = global.Promise + }.call(global)); + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 4 */ +/***/ function(module, exports, __webpack_require__) { + + __webpack_require__(5); + __webpack_require__(38); + __webpack_require__(44); + __webpack_require__(46); + __webpack_require__(48); + __webpack_require__(50); + __webpack_require__(52); + __webpack_require__(54); + __webpack_require__(55); + __webpack_require__(56); + __webpack_require__(57); + __webpack_require__(58); + __webpack_require__(59); + __webpack_require__(60); + __webpack_require__(61); + __webpack_require__(62); + __webpack_require__(63); + __webpack_require__(64); + __webpack_require__(65); + __webpack_require__(68); + __webpack_require__(69); + __webpack_require__(70); + __webpack_require__(72); + __webpack_require__(73); + __webpack_require__(74); + __webpack_require__(75); + __webpack_require__(76); + __webpack_require__(77); + __webpack_require__(78); + __webpack_require__(80); + __webpack_require__(81); + __webpack_require__(82); + __webpack_require__(84); + __webpack_require__(85); + __webpack_require__(86); + __webpack_require__(88); + __webpack_require__(89); + __webpack_require__(90); + __webpack_require__(91); + __webpack_require__(92); + __webpack_require__(93); + __webpack_require__(94); + __webpack_require__(95); + __webpack_require__(96); + __webpack_require__(97); + __webpack_require__(98); + __webpack_require__(99); + __webpack_require__(100); + __webpack_require__(101); + __webpack_require__(106); + __webpack_require__(107); + __webpack_require__(111); + __webpack_require__(112); + __webpack_require__(114); + __webpack_require__(115); + __webpack_require__(120); + __webpack_require__(121); + __webpack_require__(124); + __webpack_require__(126); + __webpack_require__(128); + __webpack_require__(130); + __webpack_require__(131); + __webpack_require__(132); + __webpack_require__(134); + __webpack_require__(135); + __webpack_require__(137); + __webpack_require__(138); + __webpack_require__(139); + __webpack_require__(140); + __webpack_require__(147); + __webpack_require__(150); + __webpack_require__(151); + __webpack_require__(153); + __webpack_require__(154); + __webpack_require__(155); + __webpack_require__(156); + __webpack_require__(157); + __webpack_require__(158); + __webpack_require__(159); + __webpack_require__(160); + __webpack_require__(161); + __webpack_require__(162); + __webpack_require__(163); + __webpack_require__(164); + __webpack_require__(166); + __webpack_require__(167); + __webpack_require__(168); + __webpack_require__(169); + __webpack_require__(170); + __webpack_require__(171); + __webpack_require__(173); + __webpack_require__(174); + __webpack_require__(175); + __webpack_require__(176); + __webpack_require__(178); + __webpack_require__(179); + __webpack_require__(181); + __webpack_require__(182); + __webpack_require__(184); + __webpack_require__(185); + __webpack_require__(186); + __webpack_require__(189); + __webpack_require__(190); + module.exports = __webpack_require__(9); + +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + var $ = __webpack_require__(6) + , $export = __webpack_require__(7) + , DESCRIPTORS = __webpack_require__(12) + , createDesc = __webpack_require__(11) + , html = __webpack_require__(18) + , cel = __webpack_require__(19) + , has = __webpack_require__(21) + , cof = __webpack_require__(22) + , invoke = __webpack_require__(23) + , fails = __webpack_require__(13) + , anObject = __webpack_require__(24) + , aFunction = __webpack_require__(17) + , isObject = __webpack_require__(20) + , toObject = __webpack_require__(25) + , toIObject = __webpack_require__(27) + , toInteger = __webpack_require__(29) + , toIndex = __webpack_require__(30) + , toLength = __webpack_require__(31) + , IObject = __webpack_require__(28) + , IE_PROTO = __webpack_require__(15)('__proto__') + , createArrayMethod = __webpack_require__(32) + , arrayIndexOf = __webpack_require__(37)(false) + , ObjectProto = Object.prototype + , ArrayProto = Array.prototype + , arraySlice = ArrayProto.slice + , arrayJoin = ArrayProto.join + , defineProperty = $.setDesc + , getOwnDescriptor = $.getDesc + , defineProperties = $.setDescs + , factories = {} + , IE8_DOM_DEFINE; + + if(!DESCRIPTORS){ + IE8_DOM_DEFINE = !fails(function(){ + return defineProperty(cel('div'), 'a', {get: function(){ return 7; }}).a != 7; + }); + $.setDesc = function(O, P, Attributes){ + if(IE8_DOM_DEFINE)try { + return defineProperty(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)anObject(O)[P] = Attributes.value; + return O; + }; + $.getDesc = function(O, P){ + if(IE8_DOM_DEFINE)try { + return getOwnDescriptor(O, P); + } catch(e){ /* empty */ } + if(has(O, P))return createDesc(!ObjectProto.propertyIsEnumerable.call(O, P), O[P]); + }; + $.setDescs = defineProperties = function(O, Properties){ + anObject(O); + var keys = $.getKeys(Properties) + , length = keys.length + , i = 0 + , P; + while(length > i)$.setDesc(O, P = keys[i++], Properties[P]); + return O; + }; + } + $export($export.S + $export.F * !DESCRIPTORS, 'Object', { + // 19.1.2.6 / 15.2.3.3 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $.getDesc, + // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) + defineProperty: $.setDesc, + // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) + defineProperties: defineProperties + }); + + // IE 8- don't enum bug keys + var keys1 = ('constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,' + + 'toLocaleString,toString,valueOf').split(',') + // Additional keys for getOwnPropertyNames + , keys2 = keys1.concat('length', 'prototype') + , keysLen1 = keys1.length; + + // Create object with `null` prototype: use iframe Object with cleared prototype + var createDict = function(){ + // Thrash, waste and sodomy: IE GC bug + var iframe = cel('iframe') + , i = keysLen1 + , gt = '>' + , iframeDocument; + iframe.style.display = 'none'; + html.appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write('*/ + +/***/ }, +/* 225 */, +/* 226 */, +/* 227 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _state = __webpack_require__(228); + + var _state2 = _interopRequireDefault(_state); + + var _form = __webpack_require__(231); + + var _form2 = _interopRequireDefault(_form); + + var _fields = __webpack_require__(232); + + var _fields2 = _interopRequireDefault(_fields); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + exports.default = { + Form: { + Form: _form2.default, + Instance: _form.Instance + }, + Fields: _fields2.default, + FormState: { + FormState: _state2.default, + Instance: _state.Instance + } + }; + +/***/ }, +/* 228 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.DOMBehaviors = exports.Instance = undefined; + + var _jquery = __webpack_require__(196); + + var _jquery2 = _interopRequireDefault(_jquery); + + var _immutable = __webpack_require__(229); + + var _immutable2 = _interopRequireDefault(_immutable); + + __webpack_require__(230); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var FormLoadState = {}; + + var DOMBehaviors = { + attach: function attach() { + this.preventUnload(); + this.preventClickAway(); + }, + preventUnload: function preventUnload() { + if (_jquery2.default._data(window, 'events') && (_jquery2.default._data(window, 'events').beforeunload || []).filter(function (event) { + return event.namespace === '_grav'; + })) { + return; + } + + // Catch browser uri change / refresh attempt and stop it if the form state is dirty + (0, _jquery2.default)(window).on('beforeunload._grav', function () { + if (Instance.equals() === false) { + return 'You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes.'; + } + }); + }, + preventClickAway: function preventClickAway() { + var selector = 'a[href]:not([href^=#])'; + + if (_jquery2.default._data((0, _jquery2.default)(selector).get(0), 'events') && (_jquery2.default._data((0, _jquery2.default)(selector).get(0), 'events').click || []).filter(function (event) { + return event.namespace === '_grav'; + })) { + return; + } + + // Prevent clicking away if the form state is dirty + // instead, display a confirmation before continuing + (0, _jquery2.default)(selector).on('click._grav', function (event) { + var isClean = Instance.equals(); + if (isClean === null || isClean) { + return true; + } + + event.preventDefault(); + + var destination = (0, _jquery2.default)(this).attr('href'); + var modal = (0, _jquery2.default)('[data-remodal-id="changes"]'); + var lookup = _jquery2.default.remodal.lookup[modal.data('remodal')]; + var buttons = (0, _jquery2.default)('a.button', modal); + + var handler = function handler(event) { + event.preventDefault(); + var action = (0, _jquery2.default)(this).data('leave-action'); + + buttons.off('click', handler); + lookup.close(); + + if (action === 'continue') { + (0, _jquery2.default)(window).off('beforeunload'); + window.location.href = destination; + } + }; + + buttons.on('click', handler); + lookup.open(); + }); + } + }; + + var FormState = function () { + function FormState() { + var options = arguments.length <= 0 || arguments[0] === undefined ? { + ignore: [], + form_id: 'blueprints' + } : arguments[0]; + + _classCallCheck(this, FormState); + + this.options = options; + this.refresh(); + + if (!this.form || !this.fields.length) { + return; + } + FormLoadState = this.collect(); + DOMBehaviors.attach(); + } + + _createClass(FormState, [{ + key: 'refresh', + value: function refresh() { + this.form = (0, _jquery2.default)('form#' + this.options.form_id).filter(':noparents(.remodal)'); + this.fields = (0, _jquery2.default)('form#' + this.options.form_id + ' *, [form="' + this.options.form_id + '"]').filter(':input:not(.no-form)').filter(':noparents(.remodal)'); + + return this; + } + }, { + key: 'collect', + value: function collect() { + var _this = this; + + if (!this.form || !this.fields.length) { + return; + } + + var values = {}; + this.refresh().fields.each(function (index, field) { + field = (0, _jquery2.default)(field); + var name = field.prop('name'); + var type = field.prop('type'); + var value = undefined; + + switch (type) { + case 'checkbox': + case 'radio': + value = field.is(':checked'); + break; + default: + value = field.val(); + } + + if (name && ! ~_this.options.ignore.indexOf(name)) { + values[name] = value; + } + }); + + return _immutable2.default.OrderedMap(values); + } + + // When the form doesn't exist or there are no fields, `equals` returns `null` + // for this reason, _NEVER_ check with !Instance.equals(), use Instance.equals() === false + + }, { + key: 'equals', + value: function equals() { + if (!this.form || !this.fields.length) { + return null; + } + return _immutable2.default.is(FormLoadState, this.collect()); + } + }]); + + return FormState; + }(); + + exports.default = FormState; + ; + + var Instance = exports.Instance = new FormState(); + + exports.DOMBehaviors = DOMBehaviors; + +/***/ }, +/* 229 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2014-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + + (function (global, factory) { + true ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.Immutable = factory(); + }(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice; + + function createClass(ctor, superClass) { + if (superClass) { + ctor.prototype = Object.create(superClass.prototype); + } + ctor.prototype.constructor = ctor; + } + + function Iterable(value) { + return isIterable(value) ? value : Seq(value); + } + + + createClass(KeyedIterable, Iterable); + function KeyedIterable(value) { + return isKeyed(value) ? value : KeyedSeq(value); + } + + + createClass(IndexedIterable, Iterable); + function IndexedIterable(value) { + return isIndexed(value) ? value : IndexedSeq(value); + } + + + createClass(SetIterable, Iterable); + function SetIterable(value) { + return isIterable(value) && !isAssociative(value) ? value : SetSeq(value); + } + + + + function isIterable(maybeIterable) { + return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]); + } + + function isKeyed(maybeKeyed) { + return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]); + } + + function isIndexed(maybeIndexed) { + return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]); + } + + function isAssociative(maybeAssociative) { + return isKeyed(maybeAssociative) || isIndexed(maybeAssociative); + } + + function isOrdered(maybeOrdered) { + return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]); + } + + Iterable.isIterable = isIterable; + Iterable.isKeyed = isKeyed; + Iterable.isIndexed = isIndexed; + Iterable.isAssociative = isAssociative; + Iterable.isOrdered = isOrdered; + + Iterable.Keyed = KeyedIterable; + Iterable.Indexed = IndexedIterable; + Iterable.Set = SetIterable; + + + var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@'; + var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@'; + var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@'; + var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@'; + + // Used for setting prototype methods that IE8 chokes on. + var DELETE = 'delete'; + + // Constants describing the size of trie nodes. + var SHIFT = 5; // Resulted in best performance after ______? + var SIZE = 1 << SHIFT; + var MASK = SIZE - 1; + + // A consistent shared value representing "not set" which equals nothing other + // than itself, and nothing that could be provided externally. + var NOT_SET = {}; + + // Boolean references, Rough equivalent of `bool &`. + var CHANGE_LENGTH = { value: false }; + var DID_ALTER = { value: false }; + + function MakeRef(ref) { + ref.value = false; + return ref; + } + + function SetRef(ref) { + ref && (ref.value = true); + } + + // A function which returns a value representing an "owner" for transient writes + // to tries. The return value will only ever equal itself, and will not equal + // the return of any subsequent call of this function. + function OwnerID() {} + + // http://jsperf.com/copy-array-inline + function arrCopy(arr, offset) { + offset = offset || 0; + var len = Math.max(0, arr.length - offset); + var newArr = new Array(len); + for (var ii = 0; ii < len; ii++) { + newArr[ii] = arr[ii + offset]; + } + return newArr; + } + + function ensureSize(iter) { + if (iter.size === undefined) { + iter.size = iter.__iterate(returnTrue); + } + return iter.size; + } + + function wrapIndex(iter, index) { + // This implements "is array index" which the ECMAString spec defines as: + // + // A String property name P is an array index if and only if + // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal + // to 2^32−1. + // + // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects + if (typeof index !== 'number') { + var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32 + if ('' + uint32Index !== index || uint32Index === 4294967295) { + return NaN; + } + index = uint32Index; + } + return index < 0 ? ensureSize(iter) + index : index; + } + + function returnTrue() { + return true; + } + + function wholeSlice(begin, end, size) { + return (begin === 0 || (size !== undefined && begin <= -size)) && + (end === undefined || (size !== undefined && end >= size)); + } + + function resolveBegin(begin, size) { + return resolveIndex(begin, size, 0); + } + + function resolveEnd(end, size) { + return resolveIndex(end, size, size); + } + + function resolveIndex(index, size, defaultIndex) { + return index === undefined ? + defaultIndex : + index < 0 ? + Math.max(0, size + index) : + size === undefined ? + index : + Math.min(size, index); + } + + /* global Symbol */ + + var ITERATE_KEYS = 0; + var ITERATE_VALUES = 1; + var ITERATE_ENTRIES = 2; + + var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; + var FAUX_ITERATOR_SYMBOL = '@@iterator'; + + var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL; + + + function Iterator(next) { + this.next = next; + } + + Iterator.prototype.toString = function() { + return '[Iterator]'; + }; + + + Iterator.KEYS = ITERATE_KEYS; + Iterator.VALUES = ITERATE_VALUES; + Iterator.ENTRIES = ITERATE_ENTRIES; + + Iterator.prototype.inspect = + Iterator.prototype.toSource = function () { return this.toString(); } + Iterator.prototype[ITERATOR_SYMBOL] = function () { + return this; + }; + + + function iteratorValue(type, k, v, iteratorResult) { + var value = type === 0 ? k : type === 1 ? v : [k, v]; + iteratorResult ? (iteratorResult.value = value) : (iteratorResult = { + value: value, done: false + }); + return iteratorResult; + } + + function iteratorDone() { + return { value: undefined, done: true }; + } + + function hasIterator(maybeIterable) { + return !!getIteratorFn(maybeIterable); + } + + function isIterator(maybeIterator) { + return maybeIterator && typeof maybeIterator.next === 'function'; + } + + function getIterator(iterable) { + var iteratorFn = getIteratorFn(iterable); + return iteratorFn && iteratorFn.call(iterable); + } + + function getIteratorFn(iterable) { + var iteratorFn = iterable && ( + (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) || + iterable[FAUX_ITERATOR_SYMBOL] + ); + if (typeof iteratorFn === 'function') { + return iteratorFn; + } + } + + function isArrayLike(value) { + return value && typeof value.length === 'number'; + } + + createClass(Seq, Iterable); + function Seq(value) { + return value === null || value === undefined ? emptySequence() : + isIterable(value) ? value.toSeq() : seqFromValue(value); + } + + Seq.of = function(/*...values*/) { + return Seq(arguments); + }; + + Seq.prototype.toSeq = function() { + return this; + }; + + Seq.prototype.toString = function() { + return this.__toString('Seq {', '}'); + }; + + Seq.prototype.cacheResult = function() { + if (!this._cache && this.__iterateUncached) { + this._cache = this.entrySeq().toArray(); + this.size = this._cache.length; + } + return this; + }; + + // abstract __iterateUncached(fn, reverse) + + Seq.prototype.__iterate = function(fn, reverse) { + return seqIterate(this, fn, reverse, true); + }; + + // abstract __iteratorUncached(type, reverse) + + Seq.prototype.__iterator = function(type, reverse) { + return seqIterator(this, type, reverse, true); + }; + + + + createClass(KeyedSeq, Seq); + function KeyedSeq(value) { + return value === null || value === undefined ? + emptySequence().toKeyedSeq() : + isIterable(value) ? + (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) : + keyedSeqFromValue(value); + } + + KeyedSeq.prototype.toKeyedSeq = function() { + return this; + }; + + + + createClass(IndexedSeq, Seq); + function IndexedSeq(value) { + return value === null || value === undefined ? emptySequence() : + !isIterable(value) ? indexedSeqFromValue(value) : + isKeyed(value) ? value.entrySeq() : value.toIndexedSeq(); + } + + IndexedSeq.of = function(/*...values*/) { + return IndexedSeq(arguments); + }; + + IndexedSeq.prototype.toIndexedSeq = function() { + return this; + }; + + IndexedSeq.prototype.toString = function() { + return this.__toString('Seq [', ']'); + }; + + IndexedSeq.prototype.__iterate = function(fn, reverse) { + return seqIterate(this, fn, reverse, false); + }; + + IndexedSeq.prototype.__iterator = function(type, reverse) { + return seqIterator(this, type, reverse, false); + }; + + + + createClass(SetSeq, Seq); + function SetSeq(value) { + return ( + value === null || value === undefined ? emptySequence() : + !isIterable(value) ? indexedSeqFromValue(value) : + isKeyed(value) ? value.entrySeq() : value + ).toSetSeq(); + } + + SetSeq.of = function(/*...values*/) { + return SetSeq(arguments); + }; + + SetSeq.prototype.toSetSeq = function() { + return this; + }; + + + + Seq.isSeq = isSeq; + Seq.Keyed = KeyedSeq; + Seq.Set = SetSeq; + Seq.Indexed = IndexedSeq; + + var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@'; + + Seq.prototype[IS_SEQ_SENTINEL] = true; + + + + createClass(ArraySeq, IndexedSeq); + function ArraySeq(array) { + this._array = array; + this.size = array.length; + } + + ArraySeq.prototype.get = function(index, notSetValue) { + return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue; + }; + + ArraySeq.prototype.__iterate = function(fn, reverse) { + var array = this._array; + var maxIndex = array.length - 1; + for (var ii = 0; ii <= maxIndex; ii++) { + if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) { + return ii + 1; + } + } + return ii; + }; + + ArraySeq.prototype.__iterator = function(type, reverse) { + var array = this._array; + var maxIndex = array.length - 1; + var ii = 0; + return new Iterator(function() + {return ii > maxIndex ? + iteratorDone() : + iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])} + ); + }; + + + + createClass(ObjectSeq, KeyedSeq); + function ObjectSeq(object) { + var keys = Object.keys(object); + this._object = object; + this._keys = keys; + this.size = keys.length; + } + + ObjectSeq.prototype.get = function(key, notSetValue) { + if (notSetValue !== undefined && !this.has(key)) { + return notSetValue; + } + return this._object[key]; + }; + + ObjectSeq.prototype.has = function(key) { + return this._object.hasOwnProperty(key); + }; + + ObjectSeq.prototype.__iterate = function(fn, reverse) { + var object = this._object; + var keys = this._keys; + var maxIndex = keys.length - 1; + for (var ii = 0; ii <= maxIndex; ii++) { + var key = keys[reverse ? maxIndex - ii : ii]; + if (fn(object[key], key, this) === false) { + return ii + 1; + } + } + return ii; + }; + + ObjectSeq.prototype.__iterator = function(type, reverse) { + var object = this._object; + var keys = this._keys; + var maxIndex = keys.length - 1; + var ii = 0; + return new Iterator(function() { + var key = keys[reverse ? maxIndex - ii : ii]; + return ii++ > maxIndex ? + iteratorDone() : + iteratorValue(type, key, object[key]); + }); + }; + + ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true; + + + createClass(IterableSeq, IndexedSeq); + function IterableSeq(iterable) { + this._iterable = iterable; + this.size = iterable.length || iterable.size; + } + + IterableSeq.prototype.__iterateUncached = function(fn, reverse) { + if (reverse) { + return this.cacheResult().__iterate(fn, reverse); + } + var iterable = this._iterable; + var iterator = getIterator(iterable); + var iterations = 0; + if (isIterator(iterator)) { + var step; + while (!(step = iterator.next()).done) { + if (fn(step.value, iterations++, this) === false) { + break; + } + } + } + return iterations; + }; + + IterableSeq.prototype.__iteratorUncached = function(type, reverse) { + if (reverse) { + return this.cacheResult().__iterator(type, reverse); + } + var iterable = this._iterable; + var iterator = getIterator(iterable); + if (!isIterator(iterator)) { + return new Iterator(iteratorDone); + } + var iterations = 0; + return new Iterator(function() { + var step = iterator.next(); + return step.done ? step : iteratorValue(type, iterations++, step.value); + }); + }; + + + + createClass(IteratorSeq, IndexedSeq); + function IteratorSeq(iterator) { + this._iterator = iterator; + this._iteratorCache = []; + } + + IteratorSeq.prototype.__iterateUncached = function(fn, reverse) { + if (reverse) { + return this.cacheResult().__iterate(fn, reverse); + } + var iterator = this._iterator; + var cache = this._iteratorCache; + var iterations = 0; + while (iterations < cache.length) { + if (fn(cache[iterations], iterations++, this) === false) { + return iterations; + } + } + var step; + while (!(step = iterator.next()).done) { + var val = step.value; + cache[iterations] = val; + if (fn(val, iterations++, this) === false) { + break; + } + } + return iterations; + }; + + IteratorSeq.prototype.__iteratorUncached = function(type, reverse) { + if (reverse) { + return this.cacheResult().__iterator(type, reverse); + } + var iterator = this._iterator; + var cache = this._iteratorCache; + var iterations = 0; + return new Iterator(function() { + if (iterations >= cache.length) { + var step = iterator.next(); + if (step.done) { + return step; + } + cache[iterations] = step.value; + } + return iteratorValue(type, iterations, cache[iterations++]); + }); + }; + + + + + // # pragma Helper functions + + function isSeq(maybeSeq) { + return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]); + } + + var EMPTY_SEQ; + + function emptySequence() { + return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([])); + } + + function keyedSeqFromValue(value) { + var seq = + Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() : + isIterator(value) ? new IteratorSeq(value).fromEntrySeq() : + hasIterator(value) ? new IterableSeq(value).fromEntrySeq() : + typeof value === 'object' ? new ObjectSeq(value) : + undefined; + if (!seq) { + throw new TypeError( + 'Expected Array or iterable object of [k, v] entries, '+ + 'or keyed object: ' + value + ); + } + return seq; + } + + function indexedSeqFromValue(value) { + var seq = maybeIndexedSeqFromValue(value); + if (!seq) { + throw new TypeError( + 'Expected Array or iterable object of values: ' + value + ); + } + return seq; + } + + function seqFromValue(value) { + var seq = maybeIndexedSeqFromValue(value) || + (typeof value === 'object' && new ObjectSeq(value)); + if (!seq) { + throw new TypeError( + 'Expected Array or iterable object of values, or keyed object: ' + value + ); + } + return seq; + } + + function maybeIndexedSeqFromValue(value) { + return ( + isArrayLike(value) ? new ArraySeq(value) : + isIterator(value) ? new IteratorSeq(value) : + hasIterator(value) ? new IterableSeq(value) : + undefined + ); + } + + function seqIterate(seq, fn, reverse, useKeys) { + var cache = seq._cache; + if (cache) { + var maxIndex = cache.length - 1; + for (var ii = 0; ii <= maxIndex; ii++) { + var entry = cache[reverse ? maxIndex - ii : ii]; + if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) { + return ii + 1; + } + } + return ii; + } + return seq.__iterateUncached(fn, reverse); + } + + function seqIterator(seq, type, reverse, useKeys) { + var cache = seq._cache; + if (cache) { + var maxIndex = cache.length - 1; + var ii = 0; + return new Iterator(function() { + var entry = cache[reverse ? maxIndex - ii : ii]; + return ii++ > maxIndex ? + iteratorDone() : + iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]); + }); + } + return seq.__iteratorUncached(type, reverse); + } + + function fromJS(json, converter) { + return converter ? + fromJSWith(converter, json, '', {'': json}) : + fromJSDefault(json); + } + + function fromJSWith(converter, json, key, parentJSON) { + if (Array.isArray(json)) { + return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)})); + } + if (isPlainObj(json)) { + return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)})); + } + return json; + } + + function fromJSDefault(json) { + if (Array.isArray(json)) { + return IndexedSeq(json).map(fromJSDefault).toList(); + } + if (isPlainObj(json)) { + return KeyedSeq(json).map(fromJSDefault).toMap(); + } + return json; + } + + function isPlainObj(value) { + return value && (value.constructor === Object || value.constructor === undefined); + } + + /** + * An extension of the "same-value" algorithm as [described for use by ES6 Map + * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality) + * + * NaN is considered the same as NaN, however -0 and 0 are considered the same + * value, which is different from the algorithm described by + * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). + * + * This is extended further to allow Objects to describe the values they + * represent, by way of `valueOf` or `equals` (and `hashCode`). + * + * Note: because of this extension, the key equality of Immutable.Map and the + * value equality of Immutable.Set will differ from ES6 Map and Set. + * + * ### Defining custom values + * + * The easiest way to describe the value an object represents is by implementing + * `valueOf`. For example, `Date` represents a value by returning a unix + * timestamp for `valueOf`: + * + * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ... + * var date2 = new Date(1234567890000); + * date1.valueOf(); // 1234567890000 + * assert( date1 !== date2 ); + * assert( Immutable.is( date1, date2 ) ); + * + * Note: overriding `valueOf` may have other implications if you use this object + * where JavaScript expects a primitive, such as implicit string coercion. + * + * For more complex types, especially collections, implementing `valueOf` may + * not be performant. An alternative is to implement `equals` and `hashCode`. + * + * `equals` takes another object, presumably of similar type, and returns true + * if the it is equal. Equality is symmetrical, so the same result should be + * returned if this and the argument are flipped. + * + * assert( a.equals(b) === b.equals(a) ); + * + * `hashCode` returns a 32bit integer number representing the object which will + * be used to determine how to store the value object in a Map or Set. You must + * provide both or neither methods, one must not exist without the other. + * + * Also, an important relationship between these methods must be upheld: if two + * values are equal, they *must* return the same hashCode. If the values are not + * equal, they might have the same hashCode; this is called a hash collision, + * and while undesirable for performance reasons, it is acceptable. + * + * if (a.equals(b)) { + * assert( a.hashCode() === b.hashCode() ); + * } + * + * All Immutable collections implement `equals` and `hashCode`. + * + */ + function is(valueA, valueB) { + if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) { + return true; + } + if (!valueA || !valueB) { + return false; + } + if (typeof valueA.valueOf === 'function' && + typeof valueB.valueOf === 'function') { + valueA = valueA.valueOf(); + valueB = valueB.valueOf(); + if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) { + return true; + } + if (!valueA || !valueB) { + return false; + } + } + if (typeof valueA.equals === 'function' && + typeof valueB.equals === 'function' && + valueA.equals(valueB)) { + return true; + } + return false; + } + + function deepEqual(a, b) { + if (a === b) { + return true; + } + + if ( + !isIterable(b) || + a.size !== undefined && b.size !== undefined && a.size !== b.size || + a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash || + isKeyed(a) !== isKeyed(b) || + isIndexed(a) !== isIndexed(b) || + isOrdered(a) !== isOrdered(b) + ) { + return false; + } + + if (a.size === 0 && b.size === 0) { + return true; + } + + var notAssociative = !isAssociative(a); + + if (isOrdered(a)) { + var entries = a.entries(); + return b.every(function(v, k) { + var entry = entries.next().value; + return entry && is(entry[1], v) && (notAssociative || is(entry[0], k)); + }) && entries.next().done; + } + + var flipped = false; + + if (a.size === undefined) { + if (b.size === undefined) { + if (typeof a.cacheResult === 'function') { + a.cacheResult(); + } + } else { + flipped = true; + var _ = a; + a = b; + b = _; + } + } + + var allEqual = true; + var bSize = b.__iterate(function(v, k) { + if (notAssociative ? !a.has(v) : + flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) { + allEqual = false; + return false; + } + }); + + return allEqual && a.size === bSize; + } + + createClass(Repeat, IndexedSeq); + + function Repeat(value, times) { + if (!(this instanceof Repeat)) { + return new Repeat(value, times); + } + this._value = value; + this.size = times === undefined ? Infinity : Math.max(0, times); + if (this.size === 0) { + if (EMPTY_REPEAT) { + return EMPTY_REPEAT; + } + EMPTY_REPEAT = this; + } + } + + Repeat.prototype.toString = function() { + if (this.size === 0) { + return 'Repeat []'; + } + return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]'; + }; + + Repeat.prototype.get = function(index, notSetValue) { + return this.has(index) ? this._value : notSetValue; + }; + + Repeat.prototype.includes = function(searchValue) { + return is(this._value, searchValue); + }; + + Repeat.prototype.slice = function(begin, end) { + var size = this.size; + return wholeSlice(begin, end, size) ? this : + new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size)); + }; + + Repeat.prototype.reverse = function() { + return this; + }; + + Repeat.prototype.indexOf = function(searchValue) { + if (is(this._value, searchValue)) { + return 0; + } + return -1; + }; + + Repeat.prototype.lastIndexOf = function(searchValue) { + if (is(this._value, searchValue)) { + return this.size; + } + return -1; + }; + + Repeat.prototype.__iterate = function(fn, reverse) { + for (var ii = 0; ii < this.size; ii++) { + if (fn(this._value, ii, this) === false) { + return ii + 1; + } + } + return ii; + }; + + Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this; + var ii = 0; + return new Iterator(function() + {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()} + ); + }; + + Repeat.prototype.equals = function(other) { + return other instanceof Repeat ? + is(this._value, other._value) : + deepEqual(other); + }; + + + var EMPTY_REPEAT; + + function invariant(condition, error) { + if (!condition) throw new Error(error); + } + + createClass(Range, IndexedSeq); + + function Range(start, end, step) { + if (!(this instanceof Range)) { + return new Range(start, end, step); + } + invariant(step !== 0, 'Cannot step a Range by 0'); + start = start || 0; + if (end === undefined) { + end = Infinity; + } + step = step === undefined ? 1 : Math.abs(step); + if (end < start) { + step = -step; + } + this._start = start; + this._end = end; + this._step = step; + this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1); + if (this.size === 0) { + if (EMPTY_RANGE) { + return EMPTY_RANGE; + } + EMPTY_RANGE = this; + } + } + + Range.prototype.toString = function() { + if (this.size === 0) { + return 'Range []'; + } + return 'Range [ ' + + this._start + '...' + this._end + + (this._step > 1 ? ' by ' + this._step : '') + + ' ]'; + }; + + Range.prototype.get = function(index, notSetValue) { + return this.has(index) ? + this._start + wrapIndex(this, index) * this._step : + notSetValue; + }; + + Range.prototype.includes = function(searchValue) { + var possibleIndex = (searchValue - this._start) / this._step; + return possibleIndex >= 0 && + possibleIndex < this.size && + possibleIndex === Math.floor(possibleIndex); + }; + + Range.prototype.slice = function(begin, end) { + if (wholeSlice(begin, end, this.size)) { + return this; + } + begin = resolveBegin(begin, this.size); + end = resolveEnd(end, this.size); + if (end <= begin) { + return new Range(0, 0); + } + return new Range(this.get(begin, this._end), this.get(end, this._end), this._step); + }; + + Range.prototype.indexOf = function(searchValue) { + var offsetValue = searchValue - this._start; + if (offsetValue % this._step === 0) { + var index = offsetValue / this._step; + if (index >= 0 && index < this.size) { + return index + } + } + return -1; + }; + + Range.prototype.lastIndexOf = function(searchValue) { + return this.indexOf(searchValue); + }; + + Range.prototype.__iterate = function(fn, reverse) { + var maxIndex = this.size - 1; + var step = this._step; + var value = reverse ? this._start + maxIndex * step : this._start; + for (var ii = 0; ii <= maxIndex; ii++) { + if (fn(value, ii, this) === false) { + return ii + 1; + } + value += reverse ? -step : step; + } + return ii; + }; + + Range.prototype.__iterator = function(type, reverse) { + var maxIndex = this.size - 1; + var step = this._step; + var value = reverse ? this._start + maxIndex * step : this._start; + var ii = 0; + return new Iterator(function() { + var v = value; + value += reverse ? -step : step; + return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v); + }); + }; + + Range.prototype.equals = function(other) { + return other instanceof Range ? + this._start === other._start && + this._end === other._end && + this._step === other._step : + deepEqual(this, other); + }; + + + var EMPTY_RANGE; + + createClass(Collection, Iterable); + function Collection() { + throw TypeError('Abstract'); + } + + + createClass(KeyedCollection, Collection);function KeyedCollection() {} + + createClass(IndexedCollection, Collection);function IndexedCollection() {} + + createClass(SetCollection, Collection);function SetCollection() {} + + + Collection.Keyed = KeyedCollection; + Collection.Indexed = IndexedCollection; + Collection.Set = SetCollection; + + var imul = + typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ? + Math.imul : + function imul(a, b) { + a = a | 0; // int + b = b | 0; // int + var c = a & 0xffff; + var d = b & 0xffff; + // Shift by 0 fixes the sign on the high part. + return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int + }; + + // v8 has an optimization for storing 31-bit signed numbers. + // Values which have either 00 or 11 as the high order bits qualify. + // This function drops the highest order bit in a signed number, maintaining + // the sign bit. + function smi(i32) { + return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF); + } + + function hash(o) { + if (o === false || o === null || o === undefined) { + return 0; + } + if (typeof o.valueOf === 'function') { + o = o.valueOf(); + if (o === false || o === null || o === undefined) { + return 0; + } + } + if (o === true) { + return 1; + } + var type = typeof o; + if (type === 'number') { + var h = o | 0; + if (h !== o) { + h ^= o * 0xFFFFFFFF; + } + while (o > 0xFFFFFFFF) { + o /= 0xFFFFFFFF; + h ^= o; + } + return smi(h); + } + if (type === 'string') { + return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o); + } + if (typeof o.hashCode === 'function') { + return o.hashCode(); + } + if (type === 'object') { + return hashJSObj(o); + } + if (typeof o.toString === 'function') { + return hashString(o.toString()); + } + throw new Error('Value type ' + type + ' cannot be hashed.'); + } + + function cachedHashString(string) { + var hash = stringHashCache[string]; + if (hash === undefined) { + hash = hashString(string); + if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) { + STRING_HASH_CACHE_SIZE = 0; + stringHashCache = {}; + } + STRING_HASH_CACHE_SIZE++; + stringHashCache[string] = hash; + } + return hash; + } + + // http://jsperf.com/hashing-strings + function hashString(string) { + // This is the hash from JVM + // The hash code for a string is computed as + // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1], + // where s[i] is the ith character of the string and n is the length of + // the string. We "mod" the result to make it between 0 (inclusive) and 2^31 + // (exclusive) by dropping high bits. + var hash = 0; + for (var ii = 0; ii < string.length; ii++) { + hash = 31 * hash + string.charCodeAt(ii) | 0; + } + return smi(hash); + } + + function hashJSObj(obj) { + var hash; + if (usingWeakMap) { + hash = weakMap.get(obj); + if (hash !== undefined) { + return hash; + } + } + + hash = obj[UID_HASH_KEY]; + if (hash !== undefined) { + return hash; + } + + if (!canDefineProperty) { + hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY]; + if (hash !== undefined) { + return hash; + } + + hash = getIENodeHash(obj); + if (hash !== undefined) { + return hash; + } + } + + hash = ++objHashUID; + if (objHashUID & 0x40000000) { + objHashUID = 0; + } + + if (usingWeakMap) { + weakMap.set(obj, hash); + } else if (isExtensible !== undefined && isExtensible(obj) === false) { + throw new Error('Non-extensible objects are not allowed as keys.'); + } else if (canDefineProperty) { + Object.defineProperty(obj, UID_HASH_KEY, { + 'enumerable': false, + 'configurable': false, + 'writable': false, + 'value': hash + }); + } else if (obj.propertyIsEnumerable !== undefined && + obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) { + // Since we can't define a non-enumerable property on the object + // we'll hijack one of the less-used non-enumerable properties to + // save our hash on it. Since this is a function it will not show up in + // `JSON.stringify` which is what we want. + obj.propertyIsEnumerable = function() { + return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments); + }; + obj.propertyIsEnumerable[UID_HASH_KEY] = hash; + } else if (obj.nodeType !== undefined) { + // At this point we couldn't get the IE `uniqueID` to use as a hash + // and we couldn't use a non-enumerable property to exploit the + // dontEnum bug so we simply add the `UID_HASH_KEY` on the node + // itself. + obj[UID_HASH_KEY] = hash; + } else { + throw new Error('Unable to set a non-enumerable property on object.'); + } + + return hash; + } + + // Get references to ES5 object methods. + var isExtensible = Object.isExtensible; + + // True if Object.defineProperty works as expected. IE8 fails this test. + var canDefineProperty = (function() { + try { + Object.defineProperty({}, '@', {}); + return true; + } catch (e) { + return false; + } + }()); + + // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it + // and avoid memory leaks from the IE cloneNode bug. + function getIENodeHash(node) { + if (node && node.nodeType > 0) { + switch (node.nodeType) { + case 1: // Element + return node.uniqueID; + case 9: // Document + return node.documentElement && node.documentElement.uniqueID; + } + } + } + + // If possible, use a WeakMap. + var usingWeakMap = typeof WeakMap === 'function'; + var weakMap; + if (usingWeakMap) { + weakMap = new WeakMap(); + } + + var objHashUID = 0; + + var UID_HASH_KEY = '__immutablehash__'; + if (typeof Symbol === 'function') { + UID_HASH_KEY = Symbol(UID_HASH_KEY); + } + + var STRING_HASH_CACHE_MIN_STRLEN = 16; + var STRING_HASH_CACHE_MAX_SIZE = 255; + var STRING_HASH_CACHE_SIZE = 0; + var stringHashCache = {}; + + function assertNotInfinite(size) { + invariant( + size !== Infinity, + 'Cannot perform this action with an infinite size.' + ); + } + + createClass(Map, KeyedCollection); + + // @pragma Construction + + function Map(value) { + return value === null || value === undefined ? emptyMap() : + isMap(value) && !isOrdered(value) ? value : + emptyMap().withMutations(function(map ) { + var iter = KeyedIterable(value); + assertNotInfinite(iter.size); + iter.forEach(function(v, k) {return map.set(k, v)}); + }); + } + + Map.prototype.toString = function() { + return this.__toString('Map {', '}'); + }; + + // @pragma Access + + Map.prototype.get = function(k, notSetValue) { + return this._root ? + this._root.get(0, undefined, k, notSetValue) : + notSetValue; + }; + + // @pragma Modification + + Map.prototype.set = function(k, v) { + return updateMap(this, k, v); + }; + + Map.prototype.setIn = function(keyPath, v) { + return this.updateIn(keyPath, NOT_SET, function() {return v}); + }; + + Map.prototype.remove = function(k) { + return updateMap(this, k, NOT_SET); + }; + + Map.prototype.deleteIn = function(keyPath) { + return this.updateIn(keyPath, function() {return NOT_SET}); + }; + + Map.prototype.update = function(k, notSetValue, updater) { + return arguments.length === 1 ? + k(this) : + this.updateIn([k], notSetValue, updater); + }; + + Map.prototype.updateIn = function(keyPath, notSetValue, updater) { + if (!updater) { + updater = notSetValue; + notSetValue = undefined; + } + var updatedValue = updateInDeepMap( + this, + forceIterator(keyPath), + notSetValue, + updater + ); + return updatedValue === NOT_SET ? undefined : updatedValue; + }; + + Map.prototype.clear = function() { + if (this.size === 0) { + return this; + } + if (this.__ownerID) { + this.size = 0; + this._root = null; + this.__hash = undefined; + this.__altered = true; + return this; + } + return emptyMap(); + }; + + // @pragma Composition + + Map.prototype.merge = function(/*...iters*/) { + return mergeIntoMapWith(this, undefined, arguments); + }; + + Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1); + return mergeIntoMapWith(this, merger, iters); + }; + + Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1); + return this.updateIn( + keyPath, + emptyMap(), + function(m ) {return typeof m.merge === 'function' ? + m.merge.apply(m, iters) : + iters[iters.length - 1]} + ); + }; + + Map.prototype.mergeDeep = function(/*...iters*/) { + return mergeIntoMapWith(this, deepMerger, arguments); + }; + + Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1); + return mergeIntoMapWith(this, deepMergerWith(merger), iters); + }; + + Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1); + return this.updateIn( + keyPath, + emptyMap(), + function(m ) {return typeof m.mergeDeep === 'function' ? + m.mergeDeep.apply(m, iters) : + iters[iters.length - 1]} + ); + }; + + Map.prototype.sort = function(comparator) { + // Late binding + return OrderedMap(sortFactory(this, comparator)); + }; + + Map.prototype.sortBy = function(mapper, comparator) { + // Late binding + return OrderedMap(sortFactory(this, comparator, mapper)); + }; + + // @pragma Mutability + + Map.prototype.withMutations = function(fn) { + var mutable = this.asMutable(); + fn(mutable); + return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this; + }; + + Map.prototype.asMutable = function() { + return this.__ownerID ? this : this.__ensureOwner(new OwnerID()); + }; + + Map.prototype.asImmutable = function() { + return this.__ensureOwner(); + }; + + Map.prototype.wasAltered = function() { + return this.__altered; + }; + + Map.prototype.__iterator = function(type, reverse) { + return new MapIterator(this, type, reverse); + }; + + Map.prototype.__iterate = function(fn, reverse) {var this$0 = this; + var iterations = 0; + this._root && this._root.iterate(function(entry ) { + iterations++; + return fn(entry[1], entry[0], this$0); + }, reverse); + return iterations; + }; + + Map.prototype.__ensureOwner = function(ownerID) { + if (ownerID === this.__ownerID) { + return this; + } + if (!ownerID) { + this.__ownerID = ownerID; + this.__altered = false; + return this; + } + return makeMap(this.size, this._root, ownerID, this.__hash); + }; + + + function isMap(maybeMap) { + return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]); + } + + Map.isMap = isMap; + + var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@'; + + var MapPrototype = Map.prototype; + MapPrototype[IS_MAP_SENTINEL] = true; + MapPrototype[DELETE] = MapPrototype.remove; + MapPrototype.removeIn = MapPrototype.deleteIn; + + + // #pragma Trie Nodes + + + + function ArrayMapNode(ownerID, entries) { + this.ownerID = ownerID; + this.entries = entries; + } + + ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) { + var entries = this.entries; + for (var ii = 0, len = entries.length; ii < len; ii++) { + if (is(key, entries[ii][0])) { + return entries[ii][1]; + } + } + return notSetValue; + }; + + ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { + var removed = value === NOT_SET; + + var entries = this.entries; + var idx = 0; + for (var len = entries.length; idx < len; idx++) { + if (is(key, entries[idx][0])) { + break; + } + } + var exists = idx < len; + + if (exists ? entries[idx][1] === value : removed) { + return this; + } + + SetRef(didAlter); + (removed || !exists) && SetRef(didChangeSize); + + if (removed && entries.length === 1) { + return; // undefined + } + + if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) { + return createNodes(ownerID, entries, key, value); + } + + var isEditable = ownerID && ownerID === this.ownerID; + var newEntries = isEditable ? entries : arrCopy(entries); + + if (exists) { + if (removed) { + idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop()); + } else { + newEntries[idx] = [key, value]; + } + } else { + newEntries.push([key, value]); + } + + if (isEditable) { + this.entries = newEntries; + return this; + } + + return new ArrayMapNode(ownerID, newEntries); + }; + + + + + function BitmapIndexedNode(ownerID, bitmap, nodes) { + this.ownerID = ownerID; + this.bitmap = bitmap; + this.nodes = nodes; + } + + BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) { + if (keyHash === undefined) { + keyHash = hash(key); + } + var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK)); + var bitmap = this.bitmap; + return (bitmap & bit) === 0 ? notSetValue : + this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue); + }; + + BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { + if (keyHash === undefined) { + keyHash = hash(key); + } + var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK; + var bit = 1 << keyHashFrag; + var bitmap = this.bitmap; + var exists = (bitmap & bit) !== 0; + + if (!exists && value === NOT_SET) { + return this; + } + + var idx = popCount(bitmap & (bit - 1)); + var nodes = this.nodes; + var node = exists ? nodes[idx] : undefined; + var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter); + + if (newNode === node) { + return this; + } + + if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) { + return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode); + } + + if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) { + return nodes[idx ^ 1]; + } + + if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) { + return newNode; + } + + var isEditable = ownerID && ownerID === this.ownerID; + var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit; + var newNodes = exists ? newNode ? + setIn(nodes, idx, newNode, isEditable) : + spliceOut(nodes, idx, isEditable) : + spliceIn(nodes, idx, newNode, isEditable); + + if (isEditable) { + this.bitmap = newBitmap; + this.nodes = newNodes; + return this; + } + + return new BitmapIndexedNode(ownerID, newBitmap, newNodes); + }; + + + + + function HashArrayMapNode(ownerID, count, nodes) { + this.ownerID = ownerID; + this.count = count; + this.nodes = nodes; + } + + HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) { + if (keyHash === undefined) { + keyHash = hash(key); + } + var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK; + var node = this.nodes[idx]; + return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue; + }; + + HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { + if (keyHash === undefined) { + keyHash = hash(key); + } + var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK; + var removed = value === NOT_SET; + var nodes = this.nodes; + var node = nodes[idx]; + + if (removed && !node) { + return this; + } + + var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter); + if (newNode === node) { + return this; + } + + var newCount = this.count; + if (!node) { + newCount++; + } else if (!newNode) { + newCount--; + if (newCount < MIN_HASH_ARRAY_MAP_SIZE) { + return packNodes(ownerID, nodes, newCount, idx); + } + } + + var isEditable = ownerID && ownerID === this.ownerID; + var newNodes = setIn(nodes, idx, newNode, isEditable); + + if (isEditable) { + this.count = newCount; + this.nodes = newNodes; + return this; + } + + return new HashArrayMapNode(ownerID, newCount, newNodes); + }; + + + + + function HashCollisionNode(ownerID, keyHash, entries) { + this.ownerID = ownerID; + this.keyHash = keyHash; + this.entries = entries; + } + + HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) { + var entries = this.entries; + for (var ii = 0, len = entries.length; ii < len; ii++) { + if (is(key, entries[ii][0])) { + return entries[ii][1]; + } + } + return notSetValue; + }; + + HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { + if (keyHash === undefined) { + keyHash = hash(key); + } + + var removed = value === NOT_SET; + + if (keyHash !== this.keyHash) { + if (removed) { + return this; + } + SetRef(didAlter); + SetRef(didChangeSize); + return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]); + } + + var entries = this.entries; + var idx = 0; + for (var len = entries.length; idx < len; idx++) { + if (is(key, entries[idx][0])) { + break; + } + } + var exists = idx < len; + + if (exists ? entries[idx][1] === value : removed) { + return this; + } + + SetRef(didAlter); + (removed || !exists) && SetRef(didChangeSize); + + if (removed && len === 2) { + return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]); + } + + var isEditable = ownerID && ownerID === this.ownerID; + var newEntries = isEditable ? entries : arrCopy(entries); + + if (exists) { + if (removed) { + idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop()); + } else { + newEntries[idx] = [key, value]; + } + } else { + newEntries.push([key, value]); + } + + if (isEditable) { + this.entries = newEntries; + return this; + } + + return new HashCollisionNode(ownerID, this.keyHash, newEntries); + }; + + + + + function ValueNode(ownerID, keyHash, entry) { + this.ownerID = ownerID; + this.keyHash = keyHash; + this.entry = entry; + } + + ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) { + return is(key, this.entry[0]) ? this.entry[1] : notSetValue; + }; + + ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { + var removed = value === NOT_SET; + var keyMatch = is(key, this.entry[0]); + if (keyMatch ? value === this.entry[1] : removed) { + return this; + } + + SetRef(didAlter); + + if (removed) { + SetRef(didChangeSize); + return; // undefined + } + + if (keyMatch) { + if (ownerID && ownerID === this.ownerID) { + this.entry[1] = value; + return this; + } + return new ValueNode(ownerID, this.keyHash, [key, value]); + } + + SetRef(didChangeSize); + return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]); + }; + + + + // #pragma Iterators + + ArrayMapNode.prototype.iterate = + HashCollisionNode.prototype.iterate = function (fn, reverse) { + var entries = this.entries; + for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) { + if (fn(entries[reverse ? maxIndex - ii : ii]) === false) { + return false; + } + } + } + + BitmapIndexedNode.prototype.iterate = + HashArrayMapNode.prototype.iterate = function (fn, reverse) { + var nodes = this.nodes; + for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) { + var node = nodes[reverse ? maxIndex - ii : ii]; + if (node && node.iterate(fn, reverse) === false) { + return false; + } + } + } + + ValueNode.prototype.iterate = function (fn, reverse) { + return fn(this.entry); + } + + createClass(MapIterator, Iterator); + + function MapIterator(map, type, reverse) { + this._type = type; + this._reverse = reverse; + this._stack = map._root && mapIteratorFrame(map._root); + } + + MapIterator.prototype.next = function() { + var type = this._type; + var stack = this._stack; + while (stack) { + var node = stack.node; + var index = stack.index++; + var maxIndex; + if (node.entry) { + if (index === 0) { + return mapIteratorValue(type, node.entry); + } + } else if (node.entries) { + maxIndex = node.entries.length - 1; + if (index <= maxIndex) { + return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]); + } + } else { + maxIndex = node.nodes.length - 1; + if (index <= maxIndex) { + var subNode = node.nodes[this._reverse ? maxIndex - index : index]; + if (subNode) { + if (subNode.entry) { + return mapIteratorValue(type, subNode.entry); + } + stack = this._stack = mapIteratorFrame(subNode, stack); + } + continue; + } + } + stack = this._stack = this._stack.__prev; + } + return iteratorDone(); + }; + + + function mapIteratorValue(type, entry) { + return iteratorValue(type, entry[0], entry[1]); + } + + function mapIteratorFrame(node, prev) { + return { + node: node, + index: 0, + __prev: prev + }; + } + + function makeMap(size, root, ownerID, hash) { + var map = Object.create(MapPrototype); + map.size = size; + map._root = root; + map.__ownerID = ownerID; + map.__hash = hash; + map.__altered = false; + return map; + } + + var EMPTY_MAP; + function emptyMap() { + return EMPTY_MAP || (EMPTY_MAP = makeMap(0)); + } + + function updateMap(map, k, v) { + var newRoot; + var newSize; + if (!map._root) { + if (v === NOT_SET) { + return map; + } + newSize = 1; + newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]); + } else { + var didChangeSize = MakeRef(CHANGE_LENGTH); + var didAlter = MakeRef(DID_ALTER); + newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter); + if (!didAlter.value) { + return map; + } + newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0); + } + if (map.__ownerID) { + map.size = newSize; + map._root = newRoot; + map.__hash = undefined; + map.__altered = true; + return map; + } + return newRoot ? makeMap(newSize, newRoot) : emptyMap(); + } + + function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { + if (!node) { + if (value === NOT_SET) { + return node; + } + SetRef(didAlter); + SetRef(didChangeSize); + return new ValueNode(ownerID, keyHash, [key, value]); + } + return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter); + } + + function isLeafNode(node) { + return node.constructor === ValueNode || node.constructor === HashCollisionNode; + } + + function mergeIntoNode(node, ownerID, shift, keyHash, entry) { + if (node.keyHash === keyHash) { + return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]); + } + + var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK; + var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK; + + var newNode; + var nodes = idx1 === idx2 ? + [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] : + ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]); + + return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes); + } + + function createNodes(ownerID, entries, key, value) { + if (!ownerID) { + ownerID = new OwnerID(); + } + var node = new ValueNode(ownerID, hash(key), [key, value]); + for (var ii = 0; ii < entries.length; ii++) { + var entry = entries[ii]; + node = node.update(ownerID, 0, undefined, entry[0], entry[1]); + } + return node; + } + + function packNodes(ownerID, nodes, count, excluding) { + var bitmap = 0; + var packedII = 0; + var packedNodes = new Array(count); + for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) { + var node = nodes[ii]; + if (node !== undefined && ii !== excluding) { + bitmap |= bit; + packedNodes[packedII++] = node; + } + } + return new BitmapIndexedNode(ownerID, bitmap, packedNodes); + } + + function expandNodes(ownerID, nodes, bitmap, including, node) { + var count = 0; + var expandedNodes = new Array(SIZE); + for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) { + expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined; + } + expandedNodes[including] = node; + return new HashArrayMapNode(ownerID, count + 1, expandedNodes); + } + + function mergeIntoMapWith(map, merger, iterables) { + var iters = []; + for (var ii = 0; ii < iterables.length; ii++) { + var value = iterables[ii]; + var iter = KeyedIterable(value); + if (!isIterable(value)) { + iter = iter.map(function(v ) {return fromJS(v)}); + } + iters.push(iter); + } + return mergeIntoCollectionWith(map, merger, iters); + } + + function deepMerger(existing, value, key) { + return existing && existing.mergeDeep && isIterable(value) ? + existing.mergeDeep(value) : + is(existing, value) ? existing : value; + } + + function deepMergerWith(merger) { + return function(existing, value, key) { + if (existing && existing.mergeDeepWith && isIterable(value)) { + return existing.mergeDeepWith(merger, value); + } + var nextValue = merger(existing, value, key); + return is(existing, nextValue) ? existing : nextValue; + }; + } + + function mergeIntoCollectionWith(collection, merger, iters) { + iters = iters.filter(function(x ) {return x.size !== 0}); + if (iters.length === 0) { + return collection; + } + if (collection.size === 0 && !collection.__ownerID && iters.length === 1) { + return collection.constructor(iters[0]); + } + return collection.withMutations(function(collection ) { + var mergeIntoMap = merger ? + function(value, key) { + collection.update(key, NOT_SET, function(existing ) + {return existing === NOT_SET ? value : merger(existing, value, key)} + ); + } : + function(value, key) { + collection.set(key, value); + } + for (var ii = 0; ii < iters.length; ii++) { + iters[ii].forEach(mergeIntoMap); + } + }); + } + + function updateInDeepMap(existing, keyPathIter, notSetValue, updater) { + var isNotSet = existing === NOT_SET; + var step = keyPathIter.next(); + if (step.done) { + var existingValue = isNotSet ? notSetValue : existing; + var newValue = updater(existingValue); + return newValue === existingValue ? existing : newValue; + } + invariant( + isNotSet || (existing && existing.set), + 'invalid keyPath' + ); + var key = step.value; + var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET); + var nextUpdated = updateInDeepMap( + nextExisting, + keyPathIter, + notSetValue, + updater + ); + return nextUpdated === nextExisting ? existing : + nextUpdated === NOT_SET ? existing.remove(key) : + (isNotSet ? emptyMap() : existing).set(key, nextUpdated); + } + + function popCount(x) { + x = x - ((x >> 1) & 0x55555555); + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x + (x >> 4)) & 0x0f0f0f0f; + x = x + (x >> 8); + x = x + (x >> 16); + return x & 0x7f; + } + + function setIn(array, idx, val, canEdit) { + var newArray = canEdit ? array : arrCopy(array); + newArray[idx] = val; + return newArray; + } + + function spliceIn(array, idx, val, canEdit) { + var newLen = array.length + 1; + if (canEdit && idx + 1 === newLen) { + array[idx] = val; + return array; + } + var newArray = new Array(newLen); + var after = 0; + for (var ii = 0; ii < newLen; ii++) { + if (ii === idx) { + newArray[ii] = val; + after = -1; + } else { + newArray[ii] = array[ii + after]; + } + } + return newArray; + } + + function spliceOut(array, idx, canEdit) { + var newLen = array.length - 1; + if (canEdit && idx === newLen) { + array.pop(); + return array; + } + var newArray = new Array(newLen); + var after = 0; + for (var ii = 0; ii < newLen; ii++) { + if (ii === idx) { + after = 1; + } + newArray[ii] = array[ii + after]; + } + return newArray; + } + + var MAX_ARRAY_MAP_SIZE = SIZE / 4; + var MAX_BITMAP_INDEXED_SIZE = SIZE / 2; + var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4; + + createClass(List, IndexedCollection); + + // @pragma Construction + + function List(value) { + var empty = emptyList(); + if (value === null || value === undefined) { + return empty; + } + if (isList(value)) { + return value; + } + var iter = IndexedIterable(value); + var size = iter.size; + if (size === 0) { + return empty; + } + assertNotInfinite(size); + if (size > 0 && size < SIZE) { + return makeList(0, size, SHIFT, null, new VNode(iter.toArray())); + } + return empty.withMutations(function(list ) { + list.setSize(size); + iter.forEach(function(v, i) {return list.set(i, v)}); + }); + } + + List.of = function(/*...values*/) { + return this(arguments); + }; + + List.prototype.toString = function() { + return this.__toString('List [', ']'); + }; + + // @pragma Access + + List.prototype.get = function(index, notSetValue) { + index = wrapIndex(this, index); + if (index >= 0 && index < this.size) { + index += this._origin; + var node = listNodeFor(this, index); + return node && node.array[index & MASK]; + } + return notSetValue; + }; + + // @pragma Modification + + List.prototype.set = function(index, value) { + return updateList(this, index, value); + }; + + List.prototype.remove = function(index) { + return !this.has(index) ? this : + index === 0 ? this.shift() : + index === this.size - 1 ? this.pop() : + this.splice(index, 1); + }; + + List.prototype.insert = function(index, value) { + return this.splice(index, 0, value); + }; + + List.prototype.clear = function() { + if (this.size === 0) { + return this; + } + if (this.__ownerID) { + this.size = this._origin = this._capacity = 0; + this._level = SHIFT; + this._root = this._tail = null; + this.__hash = undefined; + this.__altered = true; + return this; + } + return emptyList(); + }; + + List.prototype.push = function(/*...values*/) { + var values = arguments; + var oldSize = this.size; + return this.withMutations(function(list ) { + setListBounds(list, 0, oldSize + values.length); + for (var ii = 0; ii < values.length; ii++) { + list.set(oldSize + ii, values[ii]); + } + }); + }; + + List.prototype.pop = function() { + return setListBounds(this, 0, -1); + }; + + List.prototype.unshift = function(/*...values*/) { + var values = arguments; + return this.withMutations(function(list ) { + setListBounds(list, -values.length); + for (var ii = 0; ii < values.length; ii++) { + list.set(ii, values[ii]); + } + }); + }; + + List.prototype.shift = function() { + return setListBounds(this, 1); + }; + + // @pragma Composition + + List.prototype.merge = function(/*...iters*/) { + return mergeIntoListWith(this, undefined, arguments); + }; + + List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1); + return mergeIntoListWith(this, merger, iters); + }; + + List.prototype.mergeDeep = function(/*...iters*/) { + return mergeIntoListWith(this, deepMerger, arguments); + }; + + List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1); + return mergeIntoListWith(this, deepMergerWith(merger), iters); + }; + + List.prototype.setSize = function(size) { + return setListBounds(this, 0, size); + }; + + // @pragma Iteration + + List.prototype.slice = function(begin, end) { + var size = this.size; + if (wholeSlice(begin, end, size)) { + return this; + } + return setListBounds( + this, + resolveBegin(begin, size), + resolveEnd(end, size) + ); + }; + + List.prototype.__iterator = function(type, reverse) { + var index = 0; + var values = iterateList(this, reverse); + return new Iterator(function() { + var value = values(); + return value === DONE ? + iteratorDone() : + iteratorValue(type, index++, value); + }); + }; + + List.prototype.__iterate = function(fn, reverse) { + var index = 0; + var values = iterateList(this, reverse); + var value; + while ((value = values()) !== DONE) { + if (fn(value, index++, this) === false) { + break; + } + } + return index; + }; + + List.prototype.__ensureOwner = function(ownerID) { + if (ownerID === this.__ownerID) { + return this; + } + if (!ownerID) { + this.__ownerID = ownerID; + return this; + } + return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash); + }; + + + function isList(maybeList) { + return !!(maybeList && maybeList[IS_LIST_SENTINEL]); + } + + List.isList = isList; + + var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@'; + + var ListPrototype = List.prototype; + ListPrototype[IS_LIST_SENTINEL] = true; + ListPrototype[DELETE] = ListPrototype.remove; + ListPrototype.setIn = MapPrototype.setIn; + ListPrototype.deleteIn = + ListPrototype.removeIn = MapPrototype.removeIn; + ListPrototype.update = MapPrototype.update; + ListPrototype.updateIn = MapPrototype.updateIn; + ListPrototype.mergeIn = MapPrototype.mergeIn; + ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn; + ListPrototype.withMutations = MapPrototype.withMutations; + ListPrototype.asMutable = MapPrototype.asMutable; + ListPrototype.asImmutable = MapPrototype.asImmutable; + ListPrototype.wasAltered = MapPrototype.wasAltered; + + + + function VNode(array, ownerID) { + this.array = array; + this.ownerID = ownerID; + } + + // TODO: seems like these methods are very similar + + VNode.prototype.removeBefore = function(ownerID, level, index) { + if (index === level ? 1 << level : 0 || this.array.length === 0) { + return this; + } + var originIndex = (index >>> level) & MASK; + if (originIndex >= this.array.length) { + return new VNode([], ownerID); + } + var removingFirst = originIndex === 0; + var newChild; + if (level > 0) { + var oldChild = this.array[originIndex]; + newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index); + if (newChild === oldChild && removingFirst) { + return this; + } + } + if (removingFirst && !newChild) { + return this; + } + var editable = editableVNode(this, ownerID); + if (!removingFirst) { + for (var ii = 0; ii < originIndex; ii++) { + editable.array[ii] = undefined; + } + } + if (newChild) { + editable.array[originIndex] = newChild; + } + return editable; + }; + + VNode.prototype.removeAfter = function(ownerID, level, index) { + if (index === (level ? 1 << level : 0) || this.array.length === 0) { + return this; + } + var sizeIndex = ((index - 1) >>> level) & MASK; + if (sizeIndex >= this.array.length) { + return this; + } + + var newChild; + if (level > 0) { + var oldChild = this.array[sizeIndex]; + newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index); + if (newChild === oldChild && sizeIndex === this.array.length - 1) { + return this; + } + } + + var editable = editableVNode(this, ownerID); + editable.array.splice(sizeIndex + 1); + if (newChild) { + editable.array[sizeIndex] = newChild; + } + return editable; + }; + + + + var DONE = {}; + + function iterateList(list, reverse) { + var left = list._origin; + var right = list._capacity; + var tailPos = getTailOffset(right); + var tail = list._tail; + + return iterateNodeOrLeaf(list._root, list._level, 0); + + function iterateNodeOrLeaf(node, level, offset) { + return level === 0 ? + iterateLeaf(node, offset) : + iterateNode(node, level, offset); + } + + function iterateLeaf(node, offset) { + var array = offset === tailPos ? tail && tail.array : node && node.array; + var from = offset > left ? 0 : left - offset; + var to = right - offset; + if (to > SIZE) { + to = SIZE; + } + return function() { + if (from === to) { + return DONE; + } + var idx = reverse ? --to : from++; + return array && array[idx]; + }; + } + + function iterateNode(node, level, offset) { + var values; + var array = node && node.array; + var from = offset > left ? 0 : (left - offset) >> level; + var to = ((right - offset) >> level) + 1; + if (to > SIZE) { + to = SIZE; + } + return function() { + do { + if (values) { + var value = values(); + if (value !== DONE) { + return value; + } + values = null; + } + if (from === to) { + return DONE; + } + var idx = reverse ? --to : from++; + values = iterateNodeOrLeaf( + array && array[idx], level - SHIFT, offset + (idx << level) + ); + } while (true); + }; + } + } + + function makeList(origin, capacity, level, root, tail, ownerID, hash) { + var list = Object.create(ListPrototype); + list.size = capacity - origin; + list._origin = origin; + list._capacity = capacity; + list._level = level; + list._root = root; + list._tail = tail; + list.__ownerID = ownerID; + list.__hash = hash; + list.__altered = false; + return list; + } + + var EMPTY_LIST; + function emptyList() { + return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT)); + } + + function updateList(list, index, value) { + index = wrapIndex(list, index); + + if (index !== index) { + return list; + } + + if (index >= list.size || index < 0) { + return list.withMutations(function(list ) { + index < 0 ? + setListBounds(list, index).set(0, value) : + setListBounds(list, 0, index + 1).set(index, value) + }); + } + + index += list._origin; + + var newTail = list._tail; + var newRoot = list._root; + var didAlter = MakeRef(DID_ALTER); + if (index >= getTailOffset(list._capacity)) { + newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter); + } else { + newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter); + } + + if (!didAlter.value) { + return list; + } + + if (list.__ownerID) { + list._root = newRoot; + list._tail = newTail; + list.__hash = undefined; + list.__altered = true; + return list; + } + return makeList(list._origin, list._capacity, list._level, newRoot, newTail); + } + + function updateVNode(node, ownerID, level, index, value, didAlter) { + var idx = (index >>> level) & MASK; + var nodeHas = node && idx < node.array.length; + if (!nodeHas && value === undefined) { + return node; + } + + var newNode; + + if (level > 0) { + var lowerNode = node && node.array[idx]; + var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter); + if (newLowerNode === lowerNode) { + return node; + } + newNode = editableVNode(node, ownerID); + newNode.array[idx] = newLowerNode; + return newNode; + } + + if (nodeHas && node.array[idx] === value) { + return node; + } + + SetRef(didAlter); + + newNode = editableVNode(node, ownerID); + if (value === undefined && idx === newNode.array.length - 1) { + newNode.array.pop(); + } else { + newNode.array[idx] = value; + } + return newNode; + } + + function editableVNode(node, ownerID) { + if (ownerID && node && ownerID === node.ownerID) { + return node; + } + return new VNode(node ? node.array.slice() : [], ownerID); + } + + function listNodeFor(list, rawIndex) { + if (rawIndex >= getTailOffset(list._capacity)) { + return list._tail; + } + if (rawIndex < 1 << (list._level + SHIFT)) { + var node = list._root; + var level = list._level; + while (node && level > 0) { + node = node.array[(rawIndex >>> level) & MASK]; + level -= SHIFT; + } + return node; + } + } + + function setListBounds(list, begin, end) { + // Sanitize begin & end using this shorthand for ToInt32(argument) + // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32 + if (begin !== undefined) { + begin = begin | 0; + } + if (end !== undefined) { + end = end | 0; + } + var owner = list.__ownerID || new OwnerID(); + var oldOrigin = list._origin; + var oldCapacity = list._capacity; + var newOrigin = oldOrigin + begin; + var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end; + if (newOrigin === oldOrigin && newCapacity === oldCapacity) { + return list; + } + + // If it's going to end after it starts, it's empty. + if (newOrigin >= newCapacity) { + return list.clear(); + } + + var newLevel = list._level; + var newRoot = list._root; + + // New origin might need creating a higher root. + var offsetShift = 0; + while (newOrigin + offsetShift < 0) { + newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner); + newLevel += SHIFT; + offsetShift += 1 << newLevel; + } + if (offsetShift) { + newOrigin += offsetShift; + oldOrigin += offsetShift; + newCapacity += offsetShift; + oldCapacity += offsetShift; + } + + var oldTailOffset = getTailOffset(oldCapacity); + var newTailOffset = getTailOffset(newCapacity); + + // New size might need creating a higher root. + while (newTailOffset >= 1 << (newLevel + SHIFT)) { + newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner); + newLevel += SHIFT; + } + + // Locate or create the new tail. + var oldTail = list._tail; + var newTail = newTailOffset < oldTailOffset ? + listNodeFor(list, newCapacity - 1) : + newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail; + + // Merge Tail into tree. + if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) { + newRoot = editableVNode(newRoot, owner); + var node = newRoot; + for (var level = newLevel; level > SHIFT; level -= SHIFT) { + var idx = (oldTailOffset >>> level) & MASK; + node = node.array[idx] = editableVNode(node.array[idx], owner); + } + node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail; + } + + // If the size has been reduced, there's a chance the tail needs to be trimmed. + if (newCapacity < oldCapacity) { + newTail = newTail && newTail.removeAfter(owner, 0, newCapacity); + } + + // If the new origin is within the tail, then we do not need a root. + if (newOrigin >= newTailOffset) { + newOrigin -= newTailOffset; + newCapacity -= newTailOffset; + newLevel = SHIFT; + newRoot = null; + newTail = newTail && newTail.removeBefore(owner, 0, newOrigin); + + // Otherwise, if the root has been trimmed, garbage collect. + } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) { + offsetShift = 0; + + // Identify the new top root node of the subtree of the old root. + while (newRoot) { + var beginIndex = (newOrigin >>> newLevel) & MASK; + if (beginIndex !== (newTailOffset >>> newLevel) & MASK) { + break; + } + if (beginIndex) { + offsetShift += (1 << newLevel) * beginIndex; + } + newLevel -= SHIFT; + newRoot = newRoot.array[beginIndex]; + } + + // Trim the new sides of the new root. + if (newRoot && newOrigin > oldOrigin) { + newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift); + } + if (newRoot && newTailOffset < oldTailOffset) { + newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift); + } + if (offsetShift) { + newOrigin -= offsetShift; + newCapacity -= offsetShift; + } + } + + if (list.__ownerID) { + list.size = newCapacity - newOrigin; + list._origin = newOrigin; + list._capacity = newCapacity; + list._level = newLevel; + list._root = newRoot; + list._tail = newTail; + list.__hash = undefined; + list.__altered = true; + return list; + } + return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail); + } + + function mergeIntoListWith(list, merger, iterables) { + var iters = []; + var maxSize = 0; + for (var ii = 0; ii < iterables.length; ii++) { + var value = iterables[ii]; + var iter = IndexedIterable(value); + if (iter.size > maxSize) { + maxSize = iter.size; + } + if (!isIterable(value)) { + iter = iter.map(function(v ) {return fromJS(v)}); + } + iters.push(iter); + } + if (maxSize > list.size) { + list = list.setSize(maxSize); + } + return mergeIntoCollectionWith(list, merger, iters); + } + + function getTailOffset(size) { + return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT); + } + + createClass(OrderedMap, Map); + + // @pragma Construction + + function OrderedMap(value) { + return value === null || value === undefined ? emptyOrderedMap() : + isOrderedMap(value) ? value : + emptyOrderedMap().withMutations(function(map ) { + var iter = KeyedIterable(value); + assertNotInfinite(iter.size); + iter.forEach(function(v, k) {return map.set(k, v)}); + }); + } + + OrderedMap.of = function(/*...values*/) { + return this(arguments); + }; + + OrderedMap.prototype.toString = function() { + return this.__toString('OrderedMap {', '}'); + }; + + // @pragma Access + + OrderedMap.prototype.get = function(k, notSetValue) { + var index = this._map.get(k); + return index !== undefined ? this._list.get(index)[1] : notSetValue; + }; + + // @pragma Modification + + OrderedMap.prototype.clear = function() { + if (this.size === 0) { + return this; + } + if (this.__ownerID) { + this.size = 0; + this._map.clear(); + this._list.clear(); + return this; + } + return emptyOrderedMap(); + }; + + OrderedMap.prototype.set = function(k, v) { + return updateOrderedMap(this, k, v); + }; + + OrderedMap.prototype.remove = function(k) { + return updateOrderedMap(this, k, NOT_SET); + }; + + OrderedMap.prototype.wasAltered = function() { + return this._map.wasAltered() || this._list.wasAltered(); + }; + + OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this; + return this._list.__iterate( + function(entry ) {return entry && fn(entry[1], entry[0], this$0)}, + reverse + ); + }; + + OrderedMap.prototype.__iterator = function(type, reverse) { + return this._list.fromEntrySeq().__iterator(type, reverse); + }; + + OrderedMap.prototype.__ensureOwner = function(ownerID) { + if (ownerID === this.__ownerID) { + return this; + } + var newMap = this._map.__ensureOwner(ownerID); + var newList = this._list.__ensureOwner(ownerID); + if (!ownerID) { + this.__ownerID = ownerID; + this._map = newMap; + this._list = newList; + return this; + } + return makeOrderedMap(newMap, newList, ownerID, this.__hash); + }; + + + function isOrderedMap(maybeOrderedMap) { + return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap); + } + + OrderedMap.isOrderedMap = isOrderedMap; + + OrderedMap.prototype[IS_ORDERED_SENTINEL] = true; + OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove; + + + + function makeOrderedMap(map, list, ownerID, hash) { + var omap = Object.create(OrderedMap.prototype); + omap.size = map ? map.size : 0; + omap._map = map; + omap._list = list; + omap.__ownerID = ownerID; + omap.__hash = hash; + return omap; + } + + var EMPTY_ORDERED_MAP; + function emptyOrderedMap() { + return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList())); + } + + function updateOrderedMap(omap, k, v) { + var map = omap._map; + var list = omap._list; + var i = map.get(k); + var has = i !== undefined; + var newMap; + var newList; + if (v === NOT_SET) { // removed + if (!has) { + return omap; + } + if (list.size >= SIZE && list.size >= map.size * 2) { + newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx}); + newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap(); + if (omap.__ownerID) { + newMap.__ownerID = newList.__ownerID = omap.__ownerID; + } + } else { + newMap = map.remove(k); + newList = i === list.size - 1 ? list.pop() : list.set(i, undefined); + } + } else { + if (has) { + if (v === list.get(i)[1]) { + return omap; + } + newMap = map; + newList = list.set(i, [k, v]); + } else { + newMap = map.set(k, list.size); + newList = list.set(list.size, [k, v]); + } + } + if (omap.__ownerID) { + omap.size = newMap.size; + omap._map = newMap; + omap._list = newList; + omap.__hash = undefined; + return omap; + } + return makeOrderedMap(newMap, newList); + } + + createClass(ToKeyedSequence, KeyedSeq); + function ToKeyedSequence(indexed, useKeys) { + this._iter = indexed; + this._useKeys = useKeys; + this.size = indexed.size; + } + + ToKeyedSequence.prototype.get = function(key, notSetValue) { + return this._iter.get(key, notSetValue); + }; + + ToKeyedSequence.prototype.has = function(key) { + return this._iter.has(key); + }; + + ToKeyedSequence.prototype.valueSeq = function() { + return this._iter.valueSeq(); + }; + + ToKeyedSequence.prototype.reverse = function() {var this$0 = this; + var reversedSequence = reverseFactory(this, true); + if (!this._useKeys) { + reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()}; + } + return reversedSequence; + }; + + ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this; + var mappedSequence = mapFactory(this, mapper, context); + if (!this._useKeys) { + mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)}; + } + return mappedSequence; + }; + + ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this; + var ii; + return this._iter.__iterate( + this._useKeys ? + function(v, k) {return fn(v, k, this$0)} : + ((ii = reverse ? resolveSize(this) : 0), + function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}), + reverse + ); + }; + + ToKeyedSequence.prototype.__iterator = function(type, reverse) { + if (this._useKeys) { + return this._iter.__iterator(type, reverse); + } + var iterator = this._iter.__iterator(ITERATE_VALUES, reverse); + var ii = reverse ? resolveSize(this) : 0; + return new Iterator(function() { + var step = iterator.next(); + return step.done ? step : + iteratorValue(type, reverse ? --ii : ii++, step.value, step); + }); + }; + + ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true; + + + createClass(ToIndexedSequence, IndexedSeq); + function ToIndexedSequence(iter) { + this._iter = iter; + this.size = iter.size; + } + + ToIndexedSequence.prototype.includes = function(value) { + return this._iter.includes(value); + }; + + ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this; + var iterations = 0; + return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse); + }; + + ToIndexedSequence.prototype.__iterator = function(type, reverse) { + var iterator = this._iter.__iterator(ITERATE_VALUES, reverse); + var iterations = 0; + return new Iterator(function() { + var step = iterator.next(); + return step.done ? step : + iteratorValue(type, iterations++, step.value, step) + }); + }; + + + + createClass(ToSetSequence, SetSeq); + function ToSetSequence(iter) { + this._iter = iter; + this.size = iter.size; + } + + ToSetSequence.prototype.has = function(key) { + return this._iter.includes(key); + }; + + ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this; + return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse); + }; + + ToSetSequence.prototype.__iterator = function(type, reverse) { + var iterator = this._iter.__iterator(ITERATE_VALUES, reverse); + return new Iterator(function() { + var step = iterator.next(); + return step.done ? step : + iteratorValue(type, step.value, step.value, step); + }); + }; + + + + createClass(FromEntriesSequence, KeyedSeq); + function FromEntriesSequence(entries) { + this._iter = entries; + this.size = entries.size; + } + + FromEntriesSequence.prototype.entrySeq = function() { + return this._iter.toSeq(); + }; + + FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this; + return this._iter.__iterate(function(entry ) { + // Check if entry exists first so array access doesn't throw for holes + // in the parent iteration. + if (entry) { + validateEntry(entry); + var indexedIterable = isIterable(entry); + return fn( + indexedIterable ? entry.get(1) : entry[1], + indexedIterable ? entry.get(0) : entry[0], + this$0 + ); + } + }, reverse); + }; + + FromEntriesSequence.prototype.__iterator = function(type, reverse) { + var iterator = this._iter.__iterator(ITERATE_VALUES, reverse); + return new Iterator(function() { + while (true) { + var step = iterator.next(); + if (step.done) { + return step; + } + var entry = step.value; + // Check if entry exists first so array access doesn't throw for holes + // in the parent iteration. + if (entry) { + validateEntry(entry); + var indexedIterable = isIterable(entry); + return iteratorValue( + type, + indexedIterable ? entry.get(0) : entry[0], + indexedIterable ? entry.get(1) : entry[1], + step + ); + } + } + }); + }; + + + ToIndexedSequence.prototype.cacheResult = + ToKeyedSequence.prototype.cacheResult = + ToSetSequence.prototype.cacheResult = + FromEntriesSequence.prototype.cacheResult = + cacheResultThrough; + + + function flipFactory(iterable) { + var flipSequence = makeSequence(iterable); + flipSequence._iter = iterable; + flipSequence.size = iterable.size; + flipSequence.flip = function() {return iterable}; + flipSequence.reverse = function () { + var reversedSequence = iterable.reverse.apply(this); // super.reverse() + reversedSequence.flip = function() {return iterable.reverse()}; + return reversedSequence; + }; + flipSequence.has = function(key ) {return iterable.includes(key)}; + flipSequence.includes = function(key ) {return iterable.has(key)}; + flipSequence.cacheResult = cacheResultThrough; + flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this; + return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse); + } + flipSequence.__iteratorUncached = function(type, reverse) { + if (type === ITERATE_ENTRIES) { + var iterator = iterable.__iterator(type, reverse); + return new Iterator(function() { + var step = iterator.next(); + if (!step.done) { + var k = step.value[0]; + step.value[0] = step.value[1]; + step.value[1] = k; + } + return step; + }); + } + return iterable.__iterator( + type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES, + reverse + ); + } + return flipSequence; + } + + + function mapFactory(iterable, mapper, context) { + var mappedSequence = makeSequence(iterable); + mappedSequence.size = iterable.size; + mappedSequence.has = function(key ) {return iterable.has(key)}; + mappedSequence.get = function(key, notSetValue) { + var v = iterable.get(key, NOT_SET); + return v === NOT_SET ? + notSetValue : + mapper.call(context, v, key, iterable); + }; + mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this; + return iterable.__iterate( + function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false}, + reverse + ); + } + mappedSequence.__iteratorUncached = function (type, reverse) { + var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse); + return new Iterator(function() { + var step = iterator.next(); + if (step.done) { + return step; + } + var entry = step.value; + var key = entry[0]; + return iteratorValue( + type, + key, + mapper.call(context, entry[1], key, iterable), + step + ); + }); + } + return mappedSequence; + } + + + function reverseFactory(iterable, useKeys) { + var reversedSequence = makeSequence(iterable); + reversedSequence._iter = iterable; + reversedSequence.size = iterable.size; + reversedSequence.reverse = function() {return iterable}; + if (iterable.flip) { + reversedSequence.flip = function () { + var flipSequence = flipFactory(iterable); + flipSequence.reverse = function() {return iterable.flip()}; + return flipSequence; + }; + } + reversedSequence.get = function(key, notSetValue) + {return iterable.get(useKeys ? key : -1 - key, notSetValue)}; + reversedSequence.has = function(key ) + {return iterable.has(useKeys ? key : -1 - key)}; + reversedSequence.includes = function(value ) {return iterable.includes(value)}; + reversedSequence.cacheResult = cacheResultThrough; + reversedSequence.__iterate = function (fn, reverse) {var this$0 = this; + return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse); + }; + reversedSequence.__iterator = + function(type, reverse) {return iterable.__iterator(type, !reverse)}; + return reversedSequence; + } + + + function filterFactory(iterable, predicate, context, useKeys) { + var filterSequence = makeSequence(iterable); + if (useKeys) { + filterSequence.has = function(key ) { + var v = iterable.get(key, NOT_SET); + return v !== NOT_SET && !!predicate.call(context, v, key, iterable); + }; + filterSequence.get = function(key, notSetValue) { + var v = iterable.get(key, NOT_SET); + return v !== NOT_SET && predicate.call(context, v, key, iterable) ? + v : notSetValue; + }; + } + filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this; + var iterations = 0; + iterable.__iterate(function(v, k, c) { + if (predicate.call(context, v, k, c)) { + iterations++; + return fn(v, useKeys ? k : iterations - 1, this$0); + } + }, reverse); + return iterations; + }; + filterSequence.__iteratorUncached = function (type, reverse) { + var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse); + var iterations = 0; + return new Iterator(function() { + while (true) { + var step = iterator.next(); + if (step.done) { + return step; + } + var entry = step.value; + var key = entry[0]; + var value = entry[1]; + if (predicate.call(context, value, key, iterable)) { + return iteratorValue(type, useKeys ? key : iterations++, value, step); + } + } + }); + } + return filterSequence; + } + + + function countByFactory(iterable, grouper, context) { + var groups = Map().asMutable(); + iterable.__iterate(function(v, k) { + groups.update( + grouper.call(context, v, k, iterable), + 0, + function(a ) {return a + 1} + ); + }); + return groups.asImmutable(); + } + + + function groupByFactory(iterable, grouper, context) { + var isKeyedIter = isKeyed(iterable); + var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable(); + iterable.__iterate(function(v, k) { + groups.update( + grouper.call(context, v, k, iterable), + function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)} + ); + }); + var coerce = iterableClass(iterable); + return groups.map(function(arr ) {return reify(iterable, coerce(arr))}); + } + + + function sliceFactory(iterable, begin, end, useKeys) { + var originalSize = iterable.size; + + // Sanitize begin & end using this shorthand for ToInt32(argument) + // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32 + if (begin !== undefined) { + begin = begin | 0; + } + if (end !== undefined) { + end = end | 0; + } + + if (wholeSlice(begin, end, originalSize)) { + return iterable; + } + + var resolvedBegin = resolveBegin(begin, originalSize); + var resolvedEnd = resolveEnd(end, originalSize); + + // begin or end will be NaN if they were provided as negative numbers and + // this iterable's size is unknown. In that case, cache first so there is + // a known size and these do not resolve to NaN. + if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) { + return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys); + } + + // Note: resolvedEnd is undefined when the original sequence's length is + // unknown and this slice did not supply an end and should contain all + // elements after resolvedBegin. + // In that case, resolvedSize will be NaN and sliceSize will remain undefined. + var resolvedSize = resolvedEnd - resolvedBegin; + var sliceSize; + if (resolvedSize === resolvedSize) { + sliceSize = resolvedSize < 0 ? 0 : resolvedSize; + } + + var sliceSeq = makeSequence(iterable); + + // If iterable.size is undefined, the size of the realized sliceSeq is + // unknown at this point unless the number of items to slice is 0 + sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined; + + if (!useKeys && isSeq(iterable) && sliceSize >= 0) { + sliceSeq.get = function (index, notSetValue) { + index = wrapIndex(this, index); + return index >= 0 && index < sliceSize ? + iterable.get(index + resolvedBegin, notSetValue) : + notSetValue; + } + } + + sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this; + if (sliceSize === 0) { + return 0; + } + if (reverse) { + return this.cacheResult().__iterate(fn, reverse); + } + var skipped = 0; + var isSkipping = true; + var iterations = 0; + iterable.__iterate(function(v, k) { + if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) { + iterations++; + return fn(v, useKeys ? k : iterations - 1, this$0) !== false && + iterations !== sliceSize; + } + }); + return iterations; + }; + + sliceSeq.__iteratorUncached = function(type, reverse) { + if (sliceSize !== 0 && reverse) { + return this.cacheResult().__iterator(type, reverse); + } + // Don't bother instantiating parent iterator if taking 0. + var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse); + var skipped = 0; + var iterations = 0; + return new Iterator(function() { + while (skipped++ < resolvedBegin) { + iterator.next(); + } + if (++iterations > sliceSize) { + return iteratorDone(); + } + var step = iterator.next(); + if (useKeys || type === ITERATE_VALUES) { + return step; + } else if (type === ITERATE_KEYS) { + return iteratorValue(type, iterations - 1, undefined, step); + } else { + return iteratorValue(type, iterations - 1, step.value[1], step); + } + }); + } + + return sliceSeq; + } + + + function takeWhileFactory(iterable, predicate, context) { + var takeSequence = makeSequence(iterable); + takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this; + if (reverse) { + return this.cacheResult().__iterate(fn, reverse); + } + var iterations = 0; + iterable.__iterate(function(v, k, c) + {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)} + ); + return iterations; + }; + takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this; + if (reverse) { + return this.cacheResult().__iterator(type, reverse); + } + var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse); + var iterating = true; + return new Iterator(function() { + if (!iterating) { + return iteratorDone(); + } + var step = iterator.next(); + if (step.done) { + return step; + } + var entry = step.value; + var k = entry[0]; + var v = entry[1]; + if (!predicate.call(context, v, k, this$0)) { + iterating = false; + return iteratorDone(); + } + return type === ITERATE_ENTRIES ? step : + iteratorValue(type, k, v, step); + }); + }; + return takeSequence; + } + + + function skipWhileFactory(iterable, predicate, context, useKeys) { + var skipSequence = makeSequence(iterable); + skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this; + if (reverse) { + return this.cacheResult().__iterate(fn, reverse); + } + var isSkipping = true; + var iterations = 0; + iterable.__iterate(function(v, k, c) { + if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) { + iterations++; + return fn(v, useKeys ? k : iterations - 1, this$0); + } + }); + return iterations; + }; + skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this; + if (reverse) { + return this.cacheResult().__iterator(type, reverse); + } + var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse); + var skipping = true; + var iterations = 0; + return new Iterator(function() { + var step, k, v; + do { + step = iterator.next(); + if (step.done) { + if (useKeys || type === ITERATE_VALUES) { + return step; + } else if (type === ITERATE_KEYS) { + return iteratorValue(type, iterations++, undefined, step); + } else { + return iteratorValue(type, iterations++, step.value[1], step); + } + } + var entry = step.value; + k = entry[0]; + v = entry[1]; + skipping && (skipping = predicate.call(context, v, k, this$0)); + } while (skipping); + return type === ITERATE_ENTRIES ? step : + iteratorValue(type, k, v, step); + }); + }; + return skipSequence; + } + + + function concatFactory(iterable, values) { + var isKeyedIterable = isKeyed(iterable); + var iters = [iterable].concat(values).map(function(v ) { + if (!isIterable(v)) { + v = isKeyedIterable ? + keyedSeqFromValue(v) : + indexedSeqFromValue(Array.isArray(v) ? v : [v]); + } else if (isKeyedIterable) { + v = KeyedIterable(v); + } + return v; + }).filter(function(v ) {return v.size !== 0}); + + if (iters.length === 0) { + return iterable; + } + + if (iters.length === 1) { + var singleton = iters[0]; + if (singleton === iterable || + isKeyedIterable && isKeyed(singleton) || + isIndexed(iterable) && isIndexed(singleton)) { + return singleton; + } + } + + var concatSeq = new ArraySeq(iters); + if (isKeyedIterable) { + concatSeq = concatSeq.toKeyedSeq(); + } else if (!isIndexed(iterable)) { + concatSeq = concatSeq.toSetSeq(); + } + concatSeq = concatSeq.flatten(true); + concatSeq.size = iters.reduce( + function(sum, seq) { + if (sum !== undefined) { + var size = seq.size; + if (size !== undefined) { + return sum + size; + } + } + }, + 0 + ); + return concatSeq; + } + + + function flattenFactory(iterable, depth, useKeys) { + var flatSequence = makeSequence(iterable); + flatSequence.__iterateUncached = function(fn, reverse) { + var iterations = 0; + var stopped = false; + function flatDeep(iter, currentDepth) {var this$0 = this; + iter.__iterate(function(v, k) { + if ((!depth || currentDepth < depth) && isIterable(v)) { + flatDeep(v, currentDepth + 1); + } else if (fn(v, useKeys ? k : iterations++, this$0) === false) { + stopped = true; + } + return !stopped; + }, reverse); + } + flatDeep(iterable, 0); + return iterations; + } + flatSequence.__iteratorUncached = function(type, reverse) { + var iterator = iterable.__iterator(type, reverse); + var stack = []; + var iterations = 0; + return new Iterator(function() { + while (iterator) { + var step = iterator.next(); + if (step.done !== false) { + iterator = stack.pop(); + continue; + } + var v = step.value; + if (type === ITERATE_ENTRIES) { + v = v[1]; + } + if ((!depth || stack.length < depth) && isIterable(v)) { + stack.push(iterator); + iterator = v.__iterator(type, reverse); + } else { + return useKeys ? step : iteratorValue(type, iterations++, v, step); + } + } + return iteratorDone(); + }); + } + return flatSequence; + } + + + function flatMapFactory(iterable, mapper, context) { + var coerce = iterableClass(iterable); + return iterable.toSeq().map( + function(v, k) {return coerce(mapper.call(context, v, k, iterable))} + ).flatten(true); + } + + + function interposeFactory(iterable, separator) { + var interposedSequence = makeSequence(iterable); + interposedSequence.size = iterable.size && iterable.size * 2 -1; + interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this; + var iterations = 0; + iterable.__iterate(function(v, k) + {return (!iterations || fn(separator, iterations++, this$0) !== false) && + fn(v, iterations++, this$0) !== false}, + reverse + ); + return iterations; + }; + interposedSequence.__iteratorUncached = function(type, reverse) { + var iterator = iterable.__iterator(ITERATE_VALUES, reverse); + var iterations = 0; + var step; + return new Iterator(function() { + if (!step || iterations % 2) { + step = iterator.next(); + if (step.done) { + return step; + } + } + return iterations % 2 ? + iteratorValue(type, iterations++, separator) : + iteratorValue(type, iterations++, step.value, step); + }); + }; + return interposedSequence; + } + + + function sortFactory(iterable, comparator, mapper) { + if (!comparator) { + comparator = defaultComparator; + } + var isKeyedIterable = isKeyed(iterable); + var index = 0; + var entries = iterable.toSeq().map( + function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]} + ).toArray(); + entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach( + isKeyedIterable ? + function(v, i) { entries[i].length = 2; } : + function(v, i) { entries[i] = v[1]; } + ); + return isKeyedIterable ? KeyedSeq(entries) : + isIndexed(iterable) ? IndexedSeq(entries) : + SetSeq(entries); + } + + + function maxFactory(iterable, comparator, mapper) { + if (!comparator) { + comparator = defaultComparator; + } + if (mapper) { + var entry = iterable.toSeq() + .map(function(v, k) {return [v, mapper(v, k, iterable)]}) + .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a}); + return entry && entry[0]; + } else { + return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a}); + } + } + + function maxCompare(comparator, a, b) { + var comp = comparator(b, a); + // b is considered the new max if the comparator declares them equal, but + // they are not equal and b is in fact a nullish value. + return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0; + } + + + function zipWithFactory(keyIter, zipper, iters) { + var zipSequence = makeSequence(keyIter); + zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min(); + // Note: this a generic base implementation of __iterate in terms of + // __iterator which may be more generically useful in the future. + zipSequence.__iterate = function(fn, reverse) { + /* generic: + var iterator = this.__iterator(ITERATE_ENTRIES, reverse); + var step; + var iterations = 0; + while (!(step = iterator.next()).done) { + iterations++; + if (fn(step.value[1], step.value[0], this) === false) { + break; + } + } + return iterations; + */ + // indexed: + var iterator = this.__iterator(ITERATE_VALUES, reverse); + var step; + var iterations = 0; + while (!(step = iterator.next()).done) { + if (fn(step.value, iterations++, this) === false) { + break; + } + } + return iterations; + }; + zipSequence.__iteratorUncached = function(type, reverse) { + var iterators = iters.map(function(i ) + {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))} + ); + var iterations = 0; + var isDone = false; + return new Iterator(function() { + var steps; + if (!isDone) { + steps = iterators.map(function(i ) {return i.next()}); + isDone = steps.some(function(s ) {return s.done}); + } + if (isDone) { + return iteratorDone(); + } + return iteratorValue( + type, + iterations++, + zipper.apply(null, steps.map(function(s ) {return s.value})) + ); + }); + }; + return zipSequence + } + + + // #pragma Helper Functions + + function reify(iter, seq) { + return isSeq(iter) ? seq : iter.constructor(seq); + } + + function validateEntry(entry) { + if (entry !== Object(entry)) { + throw new TypeError('Expected [K, V] tuple: ' + entry); + } + } + + function resolveSize(iter) { + assertNotInfinite(iter.size); + return ensureSize(iter); + } + + function iterableClass(iterable) { + return isKeyed(iterable) ? KeyedIterable : + isIndexed(iterable) ? IndexedIterable : + SetIterable; + } + + function makeSequence(iterable) { + return Object.create( + ( + isKeyed(iterable) ? KeyedSeq : + isIndexed(iterable) ? IndexedSeq : + SetSeq + ).prototype + ); + } + + function cacheResultThrough() { + if (this._iter.cacheResult) { + this._iter.cacheResult(); + this.size = this._iter.size; + return this; + } else { + return Seq.prototype.cacheResult.call(this); + } + } + + function defaultComparator(a, b) { + return a > b ? 1 : a < b ? -1 : 0; + } + + function forceIterator(keyPath) { + var iter = getIterator(keyPath); + if (!iter) { + // Array might not be iterable in this environment, so we need a fallback + // to our wrapped type. + if (!isArrayLike(keyPath)) { + throw new TypeError('Expected iterable or array-like: ' + keyPath); + } + iter = getIterator(Iterable(keyPath)); + } + return iter; + } + + createClass(Record, KeyedCollection); + + function Record(defaultValues, name) { + var hasInitialized; + + var RecordType = function Record(values) { + if (values instanceof RecordType) { + return values; + } + if (!(this instanceof RecordType)) { + return new RecordType(values); + } + if (!hasInitialized) { + hasInitialized = true; + var keys = Object.keys(defaultValues); + setProps(RecordTypePrototype, keys); + RecordTypePrototype.size = keys.length; + RecordTypePrototype._name = name; + RecordTypePrototype._keys = keys; + RecordTypePrototype._defaultValues = defaultValues; + } + this._map = Map(values); + }; + + var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype); + RecordTypePrototype.constructor = RecordType; + + return RecordType; + } + + Record.prototype.toString = function() { + return this.__toString(recordName(this) + ' {', '}'); + }; + + // @pragma Access + + Record.prototype.has = function(k) { + return this._defaultValues.hasOwnProperty(k); + }; + + Record.prototype.get = function(k, notSetValue) { + if (!this.has(k)) { + return notSetValue; + } + var defaultVal = this._defaultValues[k]; + return this._map ? this._map.get(k, defaultVal) : defaultVal; + }; + + // @pragma Modification + + Record.prototype.clear = function() { + if (this.__ownerID) { + this._map && this._map.clear(); + return this; + } + var RecordType = this.constructor; + return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap())); + }; + + Record.prototype.set = function(k, v) { + if (!this.has(k)) { + throw new Error('Cannot set unknown key "' + k + '" on ' + recordName(this)); + } + var newMap = this._map && this._map.set(k, v); + if (this.__ownerID || newMap === this._map) { + return this; + } + return makeRecord(this, newMap); + }; + + Record.prototype.remove = function(k) { + if (!this.has(k)) { + return this; + } + var newMap = this._map && this._map.remove(k); + if (this.__ownerID || newMap === this._map) { + return this; + } + return makeRecord(this, newMap); + }; + + Record.prototype.wasAltered = function() { + return this._map.wasAltered(); + }; + + Record.prototype.__iterator = function(type, reverse) {var this$0 = this; + return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse); + }; + + Record.prototype.__iterate = function(fn, reverse) {var this$0 = this; + return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse); + }; + + Record.prototype.__ensureOwner = function(ownerID) { + if (ownerID === this.__ownerID) { + return this; + } + var newMap = this._map && this._map.__ensureOwner(ownerID); + if (!ownerID) { + this.__ownerID = ownerID; + this._map = newMap; + return this; + } + return makeRecord(this, newMap, ownerID); + }; + + + var RecordPrototype = Record.prototype; + RecordPrototype[DELETE] = RecordPrototype.remove; + RecordPrototype.deleteIn = + RecordPrototype.removeIn = MapPrototype.removeIn; + RecordPrototype.merge = MapPrototype.merge; + RecordPrototype.mergeWith = MapPrototype.mergeWith; + RecordPrototype.mergeIn = MapPrototype.mergeIn; + RecordPrototype.mergeDeep = MapPrototype.mergeDeep; + RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith; + RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn; + RecordPrototype.setIn = MapPrototype.setIn; + RecordPrototype.update = MapPrototype.update; + RecordPrototype.updateIn = MapPrototype.updateIn; + RecordPrototype.withMutations = MapPrototype.withMutations; + RecordPrototype.asMutable = MapPrototype.asMutable; + RecordPrototype.asImmutable = MapPrototype.asImmutable; + + + function makeRecord(likeRecord, map, ownerID) { + var record = Object.create(Object.getPrototypeOf(likeRecord)); + record._map = map; + record.__ownerID = ownerID; + return record; + } + + function recordName(record) { + return record._name || record.constructor.name || 'Record'; + } + + function setProps(prototype, names) { + try { + names.forEach(setProp.bind(undefined, prototype)); + } catch (error) { + // Object.defineProperty failed. Probably IE8. + } + } + + function setProp(prototype, name) { + Object.defineProperty(prototype, name, { + get: function() { + return this.get(name); + }, + set: function(value) { + invariant(this.__ownerID, 'Cannot set on an immutable record.'); + this.set(name, value); + } + }); + } + + createClass(Set, SetCollection); + + // @pragma Construction + + function Set(value) { + return value === null || value === undefined ? emptySet() : + isSet(value) && !isOrdered(value) ? value : + emptySet().withMutations(function(set ) { + var iter = SetIterable(value); + assertNotInfinite(iter.size); + iter.forEach(function(v ) {return set.add(v)}); + }); + } + + Set.of = function(/*...values*/) { + return this(arguments); + }; + + Set.fromKeys = function(value) { + return this(KeyedIterable(value).keySeq()); + }; + + Set.prototype.toString = function() { + return this.__toString('Set {', '}'); + }; + + // @pragma Access + + Set.prototype.has = function(value) { + return this._map.has(value); + }; + + // @pragma Modification + + Set.prototype.add = function(value) { + return updateSet(this, this._map.set(value, true)); + }; + + Set.prototype.remove = function(value) { + return updateSet(this, this._map.remove(value)); + }; + + Set.prototype.clear = function() { + return updateSet(this, this._map.clear()); + }; + + // @pragma Composition + + Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0); + iters = iters.filter(function(x ) {return x.size !== 0}); + if (iters.length === 0) { + return this; + } + if (this.size === 0 && !this.__ownerID && iters.length === 1) { + return this.constructor(iters[0]); + } + return this.withMutations(function(set ) { + for (var ii = 0; ii < iters.length; ii++) { + SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)}); + } + }); + }; + + Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0); + if (iters.length === 0) { + return this; + } + iters = iters.map(function(iter ) {return SetIterable(iter)}); + var originalSet = this; + return this.withMutations(function(set ) { + originalSet.forEach(function(value ) { + if (!iters.every(function(iter ) {return iter.includes(value)})) { + set.remove(value); + } + }); + }); + }; + + Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0); + if (iters.length === 0) { + return this; + } + iters = iters.map(function(iter ) {return SetIterable(iter)}); + var originalSet = this; + return this.withMutations(function(set ) { + originalSet.forEach(function(value ) { + if (iters.some(function(iter ) {return iter.includes(value)})) { + set.remove(value); + } + }); + }); + }; + + Set.prototype.merge = function() { + return this.union.apply(this, arguments); + }; + + Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1); + return this.union.apply(this, iters); + }; + + Set.prototype.sort = function(comparator) { + // Late binding + return OrderedSet(sortFactory(this, comparator)); + }; + + Set.prototype.sortBy = function(mapper, comparator) { + // Late binding + return OrderedSet(sortFactory(this, comparator, mapper)); + }; + + Set.prototype.wasAltered = function() { + return this._map.wasAltered(); + }; + + Set.prototype.__iterate = function(fn, reverse) {var this$0 = this; + return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse); + }; + + Set.prototype.__iterator = function(type, reverse) { + return this._map.map(function(_, k) {return k}).__iterator(type, reverse); + }; + + Set.prototype.__ensureOwner = function(ownerID) { + if (ownerID === this.__ownerID) { + return this; + } + var newMap = this._map.__ensureOwner(ownerID); + if (!ownerID) { + this.__ownerID = ownerID; + this._map = newMap; + return this; + } + return this.__make(newMap, ownerID); + }; + + + function isSet(maybeSet) { + return !!(maybeSet && maybeSet[IS_SET_SENTINEL]); + } + + Set.isSet = isSet; + + var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@'; + + var SetPrototype = Set.prototype; + SetPrototype[IS_SET_SENTINEL] = true; + SetPrototype[DELETE] = SetPrototype.remove; + SetPrototype.mergeDeep = SetPrototype.merge; + SetPrototype.mergeDeepWith = SetPrototype.mergeWith; + SetPrototype.withMutations = MapPrototype.withMutations; + SetPrototype.asMutable = MapPrototype.asMutable; + SetPrototype.asImmutable = MapPrototype.asImmutable; + + SetPrototype.__empty = emptySet; + SetPrototype.__make = makeSet; + + function updateSet(set, newMap) { + if (set.__ownerID) { + set.size = newMap.size; + set._map = newMap; + return set; + } + return newMap === set._map ? set : + newMap.size === 0 ? set.__empty() : + set.__make(newMap); + } + + function makeSet(map, ownerID) { + var set = Object.create(SetPrototype); + set.size = map ? map.size : 0; + set._map = map; + set.__ownerID = ownerID; + return set; + } + + var EMPTY_SET; + function emptySet() { + return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap())); + } + + createClass(OrderedSet, Set); + + // @pragma Construction + + function OrderedSet(value) { + return value === null || value === undefined ? emptyOrderedSet() : + isOrderedSet(value) ? value : + emptyOrderedSet().withMutations(function(set ) { + var iter = SetIterable(value); + assertNotInfinite(iter.size); + iter.forEach(function(v ) {return set.add(v)}); + }); + } + + OrderedSet.of = function(/*...values*/) { + return this(arguments); + }; + + OrderedSet.fromKeys = function(value) { + return this(KeyedIterable(value).keySeq()); + }; + + OrderedSet.prototype.toString = function() { + return this.__toString('OrderedSet {', '}'); + }; + + + function isOrderedSet(maybeOrderedSet) { + return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet); + } + + OrderedSet.isOrderedSet = isOrderedSet; + + var OrderedSetPrototype = OrderedSet.prototype; + OrderedSetPrototype[IS_ORDERED_SENTINEL] = true; + + OrderedSetPrototype.__empty = emptyOrderedSet; + OrderedSetPrototype.__make = makeOrderedSet; + + function makeOrderedSet(map, ownerID) { + var set = Object.create(OrderedSetPrototype); + set.size = map ? map.size : 0; + set._map = map; + set.__ownerID = ownerID; + return set; + } + + var EMPTY_ORDERED_SET; + function emptyOrderedSet() { + return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap())); + } + + createClass(Stack, IndexedCollection); + + // @pragma Construction + + function Stack(value) { + return value === null || value === undefined ? emptyStack() : + isStack(value) ? value : + emptyStack().unshiftAll(value); + } + + Stack.of = function(/*...values*/) { + return this(arguments); + }; + + Stack.prototype.toString = function() { + return this.__toString('Stack [', ']'); + }; + + // @pragma Access + + Stack.prototype.get = function(index, notSetValue) { + var head = this._head; + index = wrapIndex(this, index); + while (head && index--) { + head = head.next; + } + return head ? head.value : notSetValue; + }; + + Stack.prototype.peek = function() { + return this._head && this._head.value; + }; + + // @pragma Modification + + Stack.prototype.push = function(/*...values*/) { + if (arguments.length === 0) { + return this; + } + var newSize = this.size + arguments.length; + var head = this._head; + for (var ii = arguments.length - 1; ii >= 0; ii--) { + head = { + value: arguments[ii], + next: head + }; + } + if (this.__ownerID) { + this.size = newSize; + this._head = head; + this.__hash = undefined; + this.__altered = true; + return this; + } + return makeStack(newSize, head); + }; + + Stack.prototype.pushAll = function(iter) { + iter = IndexedIterable(iter); + if (iter.size === 0) { + return this; + } + assertNotInfinite(iter.size); + var newSize = this.size; + var head = this._head; + iter.reverse().forEach(function(value ) { + newSize++; + head = { + value: value, + next: head + }; + }); + if (this.__ownerID) { + this.size = newSize; + this._head = head; + this.__hash = undefined; + this.__altered = true; + return this; + } + return makeStack(newSize, head); + }; + + Stack.prototype.pop = function() { + return this.slice(1); + }; + + Stack.prototype.unshift = function(/*...values*/) { + return this.push.apply(this, arguments); + }; + + Stack.prototype.unshiftAll = function(iter) { + return this.pushAll(iter); + }; + + Stack.prototype.shift = function() { + return this.pop.apply(this, arguments); + }; + + Stack.prototype.clear = function() { + if (this.size === 0) { + return this; + } + if (this.__ownerID) { + this.size = 0; + this._head = undefined; + this.__hash = undefined; + this.__altered = true; + return this; + } + return emptyStack(); + }; + + Stack.prototype.slice = function(begin, end) { + if (wholeSlice(begin, end, this.size)) { + return this; + } + var resolvedBegin = resolveBegin(begin, this.size); + var resolvedEnd = resolveEnd(end, this.size); + if (resolvedEnd !== this.size) { + // super.slice(begin, end); + return IndexedCollection.prototype.slice.call(this, begin, end); + } + var newSize = this.size - resolvedBegin; + var head = this._head; + while (resolvedBegin--) { + head = head.next; + } + if (this.__ownerID) { + this.size = newSize; + this._head = head; + this.__hash = undefined; + this.__altered = true; + return this; + } + return makeStack(newSize, head); + }; + + // @pragma Mutability + + Stack.prototype.__ensureOwner = function(ownerID) { + if (ownerID === this.__ownerID) { + return this; + } + if (!ownerID) { + this.__ownerID = ownerID; + this.__altered = false; + return this; + } + return makeStack(this.size, this._head, ownerID, this.__hash); + }; + + // @pragma Iteration + + Stack.prototype.__iterate = function(fn, reverse) { + if (reverse) { + return this.reverse().__iterate(fn); + } + var iterations = 0; + var node = this._head; + while (node) { + if (fn(node.value, iterations++, this) === false) { + break; + } + node = node.next; + } + return iterations; + }; + + Stack.prototype.__iterator = function(type, reverse) { + if (reverse) { + return this.reverse().__iterator(type); + } + var iterations = 0; + var node = this._head; + return new Iterator(function() { + if (node) { + var value = node.value; + node = node.next; + return iteratorValue(type, iterations++, value); + } + return iteratorDone(); + }); + }; + + + function isStack(maybeStack) { + return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]); + } + + Stack.isStack = isStack; + + var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@'; + + var StackPrototype = Stack.prototype; + StackPrototype[IS_STACK_SENTINEL] = true; + StackPrototype.withMutations = MapPrototype.withMutations; + StackPrototype.asMutable = MapPrototype.asMutable; + StackPrototype.asImmutable = MapPrototype.asImmutable; + StackPrototype.wasAltered = MapPrototype.wasAltered; + + + function makeStack(size, head, ownerID, hash) { + var map = Object.create(StackPrototype); + map.size = size; + map._head = head; + map.__ownerID = ownerID; + map.__hash = hash; + map.__altered = false; + return map; + } + + var EMPTY_STACK; + function emptyStack() { + return EMPTY_STACK || (EMPTY_STACK = makeStack(0)); + } + + /** + * Contributes additional methods to a constructor + */ + function mixin(ctor, methods) { + var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; }; + Object.keys(methods).forEach(keyCopier); + Object.getOwnPropertySymbols && + Object.getOwnPropertySymbols(methods).forEach(keyCopier); + return ctor; + } + + Iterable.Iterator = Iterator; + + mixin(Iterable, { + + // ### Conversion to other types + + toArray: function() { + assertNotInfinite(this.size); + var array = new Array(this.size || 0); + this.valueSeq().__iterate(function(v, i) { array[i] = v; }); + return array; + }, + + toIndexedSeq: function() { + return new ToIndexedSequence(this); + }, + + toJS: function() { + return this.toSeq().map( + function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value} + ).__toJS(); + }, + + toJSON: function() { + return this.toSeq().map( + function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value} + ).__toJS(); + }, + + toKeyedSeq: function() { + return new ToKeyedSequence(this, true); + }, + + toMap: function() { + // Use Late Binding here to solve the circular dependency. + return Map(this.toKeyedSeq()); + }, + + toObject: function() { + assertNotInfinite(this.size); + var object = {}; + this.__iterate(function(v, k) { object[k] = v; }); + return object; + }, + + toOrderedMap: function() { + // Use Late Binding here to solve the circular dependency. + return OrderedMap(this.toKeyedSeq()); + }, + + toOrderedSet: function() { + // Use Late Binding here to solve the circular dependency. + return OrderedSet(isKeyed(this) ? this.valueSeq() : this); + }, + + toSet: function() { + // Use Late Binding here to solve the circular dependency. + return Set(isKeyed(this) ? this.valueSeq() : this); + }, + + toSetSeq: function() { + return new ToSetSequence(this); + }, + + toSeq: function() { + return isIndexed(this) ? this.toIndexedSeq() : + isKeyed(this) ? this.toKeyedSeq() : + this.toSetSeq(); + }, + + toStack: function() { + // Use Late Binding here to solve the circular dependency. + return Stack(isKeyed(this) ? this.valueSeq() : this); + }, + + toList: function() { + // Use Late Binding here to solve the circular dependency. + return List(isKeyed(this) ? this.valueSeq() : this); + }, + + + // ### Common JavaScript methods and properties + + toString: function() { + return '[Iterable]'; + }, + + __toString: function(head, tail) { + if (this.size === 0) { + return head + tail; + } + return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail; + }, + + + // ### ES6 Collection methods (ES6 Array and Map) + + concat: function() {var values = SLICE$0.call(arguments, 0); + return reify(this, concatFactory(this, values)); + }, + + includes: function(searchValue) { + return this.some(function(value ) {return is(value, searchValue)}); + }, + + entries: function() { + return this.__iterator(ITERATE_ENTRIES); + }, + + every: function(predicate, context) { + assertNotInfinite(this.size); + var returnValue = true; + this.__iterate(function(v, k, c) { + if (!predicate.call(context, v, k, c)) { + returnValue = false; + return false; + } + }); + return returnValue; + }, + + filter: function(predicate, context) { + return reify(this, filterFactory(this, predicate, context, true)); + }, + + find: function(predicate, context, notSetValue) { + var entry = this.findEntry(predicate, context); + return entry ? entry[1] : notSetValue; + }, + + findEntry: function(predicate, context) { + var found; + this.__iterate(function(v, k, c) { + if (predicate.call(context, v, k, c)) { + found = [k, v]; + return false; + } + }); + return found; + }, + + findLastEntry: function(predicate, context) { + return this.toSeq().reverse().findEntry(predicate, context); + }, + + forEach: function(sideEffect, context) { + assertNotInfinite(this.size); + return this.__iterate(context ? sideEffect.bind(context) : sideEffect); + }, + + join: function(separator) { + assertNotInfinite(this.size); + separator = separator !== undefined ? '' + separator : ','; + var joined = ''; + var isFirst = true; + this.__iterate(function(v ) { + isFirst ? (isFirst = false) : (joined += separator); + joined += v !== null && v !== undefined ? v.toString() : ''; + }); + return joined; + }, + + keys: function() { + return this.__iterator(ITERATE_KEYS); + }, + + map: function(mapper, context) { + return reify(this, mapFactory(this, mapper, context)); + }, + + reduce: function(reducer, initialReduction, context) { + assertNotInfinite(this.size); + var reduction; + var useFirst; + if (arguments.length < 2) { + useFirst = true; + } else { + reduction = initialReduction; + } + this.__iterate(function(v, k, c) { + if (useFirst) { + useFirst = false; + reduction = v; + } else { + reduction = reducer.call(context, reduction, v, k, c); + } + }); + return reduction; + }, + + reduceRight: function(reducer, initialReduction, context) { + var reversed = this.toKeyedSeq().reverse(); + return reversed.reduce.apply(reversed, arguments); + }, + + reverse: function() { + return reify(this, reverseFactory(this, true)); + }, + + slice: function(begin, end) { + return reify(this, sliceFactory(this, begin, end, true)); + }, + + some: function(predicate, context) { + return !this.every(not(predicate), context); + }, + + sort: function(comparator) { + return reify(this, sortFactory(this, comparator)); + }, + + values: function() { + return this.__iterator(ITERATE_VALUES); + }, + + + // ### More sequential methods + + butLast: function() { + return this.slice(0, -1); + }, + + isEmpty: function() { + return this.size !== undefined ? this.size === 0 : !this.some(function() {return true}); + }, + + count: function(predicate, context) { + return ensureSize( + predicate ? this.toSeq().filter(predicate, context) : this + ); + }, + + countBy: function(grouper, context) { + return countByFactory(this, grouper, context); + }, + + equals: function(other) { + return deepEqual(this, other); + }, + + entrySeq: function() { + var iterable = this; + if (iterable._cache) { + // We cache as an entries array, so we can just return the cache! + return new ArraySeq(iterable._cache); + } + var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq(); + entriesSequence.fromEntrySeq = function() {return iterable.toSeq()}; + return entriesSequence; + }, + + filterNot: function(predicate, context) { + return this.filter(not(predicate), context); + }, + + findLast: function(predicate, context, notSetValue) { + return this.toKeyedSeq().reverse().find(predicate, context, notSetValue); + }, + + first: function() { + return this.find(returnTrue); + }, + + flatMap: function(mapper, context) { + return reify(this, flatMapFactory(this, mapper, context)); + }, + + flatten: function(depth) { + return reify(this, flattenFactory(this, depth, true)); + }, + + fromEntrySeq: function() { + return new FromEntriesSequence(this); + }, + + get: function(searchKey, notSetValue) { + return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue); + }, + + getIn: function(searchKeyPath, notSetValue) { + var nested = this; + // Note: in an ES6 environment, we would prefer: + // for (var key of searchKeyPath) { + var iter = forceIterator(searchKeyPath); + var step; + while (!(step = iter.next()).done) { + var key = step.value; + nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET; + if (nested === NOT_SET) { + return notSetValue; + } + } + return nested; + }, + + groupBy: function(grouper, context) { + return groupByFactory(this, grouper, context); + }, + + has: function(searchKey) { + return this.get(searchKey, NOT_SET) !== NOT_SET; + }, + + hasIn: function(searchKeyPath) { + return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET; + }, + + isSubset: function(iter) { + iter = typeof iter.includes === 'function' ? iter : Iterable(iter); + return this.every(function(value ) {return iter.includes(value)}); + }, + + isSuperset: function(iter) { + iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter); + return iter.isSubset(this); + }, + + keySeq: function() { + return this.toSeq().map(keyMapper).toIndexedSeq(); + }, + + last: function() { + return this.toSeq().reverse().first(); + }, + + max: function(comparator) { + return maxFactory(this, comparator); + }, + + maxBy: function(mapper, comparator) { + return maxFactory(this, comparator, mapper); + }, + + min: function(comparator) { + return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator); + }, + + minBy: function(mapper, comparator) { + return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper); + }, + + rest: function() { + return this.slice(1); + }, + + skip: function(amount) { + return this.slice(Math.max(0, amount)); + }, + + skipLast: function(amount) { + return reify(this, this.toSeq().reverse().skip(amount).reverse()); + }, + + skipWhile: function(predicate, context) { + return reify(this, skipWhileFactory(this, predicate, context, true)); + }, + + skipUntil: function(predicate, context) { + return this.skipWhile(not(predicate), context); + }, + + sortBy: function(mapper, comparator) { + return reify(this, sortFactory(this, comparator, mapper)); + }, + + take: function(amount) { + return this.slice(0, Math.max(0, amount)); + }, + + takeLast: function(amount) { + return reify(this, this.toSeq().reverse().take(amount).reverse()); + }, + + takeWhile: function(predicate, context) { + return reify(this, takeWhileFactory(this, predicate, context)); + }, + + takeUntil: function(predicate, context) { + return this.takeWhile(not(predicate), context); + }, + + valueSeq: function() { + return this.toIndexedSeq(); + }, + + + // ### Hashable Object + + hashCode: function() { + return this.__hash || (this.__hash = hashIterable(this)); + } + + + // ### Internal + + // abstract __iterate(fn, reverse) + + // abstract __iterator(type, reverse) + }); + + // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@'; + // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@'; + // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@'; + // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@'; + + var IterablePrototype = Iterable.prototype; + IterablePrototype[IS_ITERABLE_SENTINEL] = true; + IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values; + IterablePrototype.__toJS = IterablePrototype.toArray; + IterablePrototype.__toStringMapper = quoteString; + IterablePrototype.inspect = + IterablePrototype.toSource = function() { return this.toString(); }; + IterablePrototype.chain = IterablePrototype.flatMap; + IterablePrototype.contains = IterablePrototype.includes; + + // Temporary warning about using length + (function () { + try { + Object.defineProperty(IterablePrototype, 'length', { + get: function () { + if (!Iterable.noLengthWarning) { + var stack; + try { + throw new Error(); + } catch (error) { + stack = error.stack; + } + if (stack.indexOf('_wrapObject') === -1) { + console && console.warn && console.warn( + 'iterable.length has been deprecated, '+ + 'use iterable.size or iterable.count(). '+ + 'This warning will become a silent error in a future version. ' + + stack + ); + return this.size; + } + } + } + }); + } catch (e) {} + })(); + + + + mixin(KeyedIterable, { + + // ### More sequential methods + + flip: function() { + return reify(this, flipFactory(this)); + }, + + findKey: function(predicate, context) { + var entry = this.findEntry(predicate, context); + return entry && entry[0]; + }, + + findLastKey: function(predicate, context) { + return this.toSeq().reverse().findKey(predicate, context); + }, + + keyOf: function(searchValue) { + return this.findKey(function(value ) {return is(value, searchValue)}); + }, + + lastKeyOf: function(searchValue) { + return this.findLastKey(function(value ) {return is(value, searchValue)}); + }, + + mapEntries: function(mapper, context) {var this$0 = this; + var iterations = 0; + return reify(this, + this.toSeq().map( + function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)} + ).fromEntrySeq() + ); + }, + + mapKeys: function(mapper, context) {var this$0 = this; + return reify(this, + this.toSeq().flip().map( + function(k, v) {return mapper.call(context, k, v, this$0)} + ).flip() + ); + } + + }); + + var KeyedIterablePrototype = KeyedIterable.prototype; + KeyedIterablePrototype[IS_KEYED_SENTINEL] = true; + KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries; + KeyedIterablePrototype.__toJS = IterablePrototype.toObject; + KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)}; + + + + mixin(IndexedIterable, { + + // ### Conversion to other types + + toKeyedSeq: function() { + return new ToKeyedSequence(this, false); + }, + + + // ### ES6 Collection methods (ES6 Array and Map) + + filter: function(predicate, context) { + return reify(this, filterFactory(this, predicate, context, false)); + }, + + findIndex: function(predicate, context) { + var entry = this.findEntry(predicate, context); + return entry ? entry[0] : -1; + }, + + indexOf: function(searchValue) { + var key = this.toKeyedSeq().keyOf(searchValue); + return key === undefined ? -1 : key; + }, + + lastIndexOf: function(searchValue) { + var key = this.toKeyedSeq().reverse().keyOf(searchValue); + return key === undefined ? -1 : key; + + // var index = + // return this.toSeq().reverse().indexOf(searchValue); + }, + + reverse: function() { + return reify(this, reverseFactory(this, false)); + }, + + slice: function(begin, end) { + return reify(this, sliceFactory(this, begin, end, false)); + }, + + splice: function(index, removeNum /*, ...values*/) { + var numArgs = arguments.length; + removeNum = Math.max(removeNum | 0, 0); + if (numArgs === 0 || (numArgs === 2 && !removeNum)) { + return this; + } + // If index is negative, it should resolve relative to the size of the + // collection. However size may be expensive to compute if not cached, so + // only call count() if the number is in fact negative. + index = resolveBegin(index, index < 0 ? this.count() : this.size); + var spliced = this.slice(0, index); + return reify( + this, + numArgs === 1 ? + spliced : + spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum)) + ); + }, + + + // ### More collection methods + + findLastIndex: function(predicate, context) { + var key = this.toKeyedSeq().findLastKey(predicate, context); + return key === undefined ? -1 : key; + }, + + first: function() { + return this.get(0); + }, + + flatten: function(depth) { + return reify(this, flattenFactory(this, depth, false)); + }, + + get: function(index, notSetValue) { + index = wrapIndex(this, index); + return (index < 0 || (this.size === Infinity || + (this.size !== undefined && index > this.size))) ? + notSetValue : + this.find(function(_, key) {return key === index}, undefined, notSetValue); + }, + + has: function(index) { + index = wrapIndex(this, index); + return index >= 0 && (this.size !== undefined ? + this.size === Infinity || index < this.size : + this.indexOf(index) !== -1 + ); + }, + + interpose: function(separator) { + return reify(this, interposeFactory(this, separator)); + }, + + interleave: function(/*...iterables*/) { + var iterables = [this].concat(arrCopy(arguments)); + var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables); + var interleaved = zipped.flatten(true); + if (zipped.size) { + interleaved.size = zipped.size * iterables.length; + } + return reify(this, interleaved); + }, + + last: function() { + return this.get(-1); + }, + + skipWhile: function(predicate, context) { + return reify(this, skipWhileFactory(this, predicate, context, false)); + }, + + zip: function(/*, ...iterables */) { + var iterables = [this].concat(arrCopy(arguments)); + return reify(this, zipWithFactory(this, defaultZipper, iterables)); + }, + + zipWith: function(zipper/*, ...iterables */) { + var iterables = arrCopy(arguments); + iterables[0] = this; + return reify(this, zipWithFactory(this, zipper, iterables)); + } + + }); + + IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true; + IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true; + + + + mixin(SetIterable, { + + // ### ES6 Collection methods (ES6 Array and Map) + + get: function(value, notSetValue) { + return this.has(value) ? value : notSetValue; + }, + + includes: function(value) { + return this.has(value); + }, + + + // ### More sequential methods + + keySeq: function() { + return this.valueSeq(); + } + + }); + + SetIterable.prototype.has = IterablePrototype.includes; + + + // Mixin subclasses + + mixin(KeyedSeq, KeyedIterable.prototype); + mixin(IndexedSeq, IndexedIterable.prototype); + mixin(SetSeq, SetIterable.prototype); + + mixin(KeyedCollection, KeyedIterable.prototype); + mixin(IndexedCollection, IndexedIterable.prototype); + mixin(SetCollection, SetIterable.prototype); + + + // #pragma Helper functions + + function keyMapper(v, k) { + return k; + } + + function entryMapper(v, k) { + return [k, v]; + } + + function not(predicate) { + return function() { + return !predicate.apply(this, arguments); + } + } + + function neg(predicate) { + return function() { + return -predicate.apply(this, arguments); + } + } + + function quoteString(value) { + return typeof value === 'string' ? JSON.stringify(value) : value; + } + + function defaultZipper() { + return arrCopy(arguments); + } + + function defaultNegComparator(a, b) { + return a < b ? 1 : a > b ? -1 : 0; + } + + function hashIterable(iterable) { + if (iterable.size === Infinity) { + return 0; + } + var ordered = isOrdered(iterable); + var keyed = isKeyed(iterable); + var h = ordered ? 1 : 0; + var size = iterable.__iterate( + keyed ? + ordered ? + function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } : + function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } : + ordered ? + function(v ) { h = 31 * h + hash(v) | 0; } : + function(v ) { h = h + hash(v) | 0; } + ); + return murmurHashOfSize(size, h); + } + + function murmurHashOfSize(size, h) { + h = imul(h, 0xCC9E2D51); + h = imul(h << 15 | h >>> -15, 0x1B873593); + h = imul(h << 13 | h >>> -13, 5); + h = (h + 0xE6546B64 | 0) ^ size; + h = imul(h ^ h >>> 16, 0x85EBCA6B); + h = imul(h ^ h >>> 13, 0xC2B2AE35); + h = smi(h ^ h >>> 16); + return h; + } + + function hashMerge(a, b) { + return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int + } + + var Immutable = { + + Iterable: Iterable, + + Seq: Seq, + Collection: Collection, + Map: Map, + OrderedMap: OrderedMap, + List: List, + Stack: Stack, + Set: Set, + OrderedSet: OrderedSet, + + Record: Record, + Range: Range, + Repeat: Repeat, + + is: is, + fromJS: fromJS + + }; + + return Immutable; + + })); + +/***/ }, +/* 230 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _jquery = __webpack_require__(196); + + var _jquery2 = _interopRequireDefault(_jquery); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // jQuery no parents filter + _jquery2.default.expr[':']['noparents'] = _jquery2.default.expr.createPseudo(function (text) { + return function (element) { + return (0, _jquery2.default)(element).parents(text).length < 1; + }; + }); + +/***/ }, +/* 231 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Instance = undefined; + + var _jquery = __webpack_require__(196); + + var _jquery2 = _interopRequireDefault(_jquery); + + var _toastr = __webpack_require__(194); + + var _toastr2 = _interopRequireDefault(_toastr); + + var _gravConfig = __webpack_require__(198); + + var _state = __webpack_require__(228); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var Form = function () { + function Form(form) { + var _this = this; + + _classCallCheck(this, Form); + + this.form = (0, _jquery2.default)(form); + if (!this.form.length || this.form.prop('tagName').toLowerCase() !== 'form') { + return; + } + + this.form.on('submit', function (event) { + if (_state.Instance.equals()) { + event.preventDefault(); + _toastr2.default.info(_gravConfig.translations.PLUGIN_ADMIN.NOTHING_TO_SAVE); + } + }); + + this._attachShortcuts(); + this._attachToggleables(); + this._attachDisabledFields(); + + this.observer = new MutationObserver(this.addedNodes); + this.form.each(function (index, form) { + return _this.observer.observe(form, { subtree: true, childList: true }); + }); + } + + _createClass(Form, [{ + key: '_attachShortcuts', + value: function _attachShortcuts() { + // CTRL + S / CMD + S - shortcut for [Save] when available + var saveTask = (0, _jquery2.default)('[name="task"][value="save"]').filter(function (index, element) { + element = (0, _jquery2.default)(element); + return !element.parents('.remodal-overlay').length; + }); + + if (saveTask.length) { + (0, _jquery2.default)(window).on('keydown', function (event) { + var key = String.fromCharCode(event.which).toLowerCase(); + if ((event.ctrlKey || event.metaKey) && key === 's') { + event.preventDefault(); + saveTask.click(); + } + }); + } + } + }, { + key: '_attachToggleables', + value: function _attachToggleables() { + var query = '[data-grav-field="toggleable"] input[type="checkbox"]'; + + this.form.on('change', query, function (event) { + var toggle = (0, _jquery2.default)(event.target); + var enabled = toggle.is(':checked'); + var parent = toggle.parents('.form-field'); + var label = parent.find('label.toggleable'); + var fields = parent.find('.form-data'); + var inputs = fields.find('input, select, textarea'); + + label.add(fields).css('opacity', enabled ? '' : 0.7); + inputs.map(function (index, input) { + var isSelectize = input.selectize; + input = (0, _jquery2.default)(input); + + if (isSelectize) { + isSelectize[enabled ? 'enable' : 'disable'](); + } else { + input.prop('disabled', !enabled); + } + }); + }); + + this.form.find(query).trigger('change'); + } + }, { + key: '_attachDisabledFields', + value: function _attachDisabledFields() { + var prefix = '.form-field-toggleable .form-data'; + var query = []; + + ['input', 'select', 'label[for]', 'textarea', '.selectize-control'].forEach(function (item) { + query.push(prefix + ' ' + item); + }); + + this.form.on('mousedown', query.join(', '), function (event) { + var target = (0, _jquery2.default)(event.target); + var input = target; + var isFor = input.prop('for'); + var isSelectize = (input.hasClass('selectize-control') || input.parents('.selectize-control')).length; + + if (isFor) { + input = (0, _jquery2.default)('[id="' + isFor + '"]'); + } + if (isSelectize) { + input = input.closest('.selectize-control').siblings('select[name]'); + } + + if (!input.prop('disabled')) { + return true; + } + + var toggle = input.closest('.form-field').find('[data-grav-field="toggleable"] input[type="checkbox"]'); + toggle.trigger('click'); + }); + } + }, { + key: 'addedNodes', + value: function addedNodes(mutations) { + var _this2 = this; + + mutations.forEach(function (mutation) { + if (mutation.type !== 'childList' || !mutation.addedNodes) { + return; + } + + (0, _jquery2.default)('body').trigger('mutation._grav', mutation.target, mutation, _this2); + }); + } + }]); + + return Form; + }(); + + exports.default = Form; + var Instance = exports.Instance = new Form('form#blueprints'); + +/***/ }, +/* 232 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + + var _selectize = __webpack_require__(233); + + var _selectize2 = _interopRequireDefault(_selectize); + + var _array = __webpack_require__(234); + + var _array2 = _interopRequireDefault(_array); + + var _collections = __webpack_require__(235); + + var _collections2 = _interopRequireDefault(_collections); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + exports.default = { + SelectizeField: { + SelectizeField: _selectize2.default, + Instance: _selectize.Instance + }, + ArrayField: { + ArrayField: _array2.default, + Instance: _array.Instance + }, + CollectionsField: { + CollectionsField: _collections2.default, + Instance: _collections.Instance + } + }; + +/***/ }, +/* 233 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Instance = undefined; + + var _jquery = __webpack_require__(196); + + var _jquery2 = _interopRequireDefault(_jquery); + + __webpack_require__(217); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var SelectizeField = function () { + function SelectizeField() { + var _this = this; + + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + _classCallCheck(this, SelectizeField); + + this.options = Object.assign({}, options); + this.elements = []; + + (0, _jquery2.default)('[data-grav-selectize]').each(function (index, element) { + return _this.add(element); + }); + (0, _jquery2.default)('body').on('mutation._grav', this._onAddedNodes.bind(this)); + } + + _createClass(SelectizeField, [{ + key: 'add', + value: function add(element) { + element = (0, _jquery2.default)(element); + var tag = element.prop('tagName').toLowerCase(); + var isInput = tag === 'input' || tag === 'select'; + + var data = (isInput ? element.closest('[data-grav-selectize]') : element).data('grav-selectize') || {}; + var field = isInput ? element : element.find('input, select'); + + if (!field.length || field.get(0).selectize) { + return; + } + field.selectize(data); + + this.elements.push(field.data('selectize')); + } + }, { + key: '_onAddedNodes', + value: function _onAddedNodes(event, target /* , record, instance */) { + var _this2 = this; + + var fields = (0, _jquery2.default)(target).find('select.fancy, input.fancy'); + if (!fields.length) { + return; + } + + fields.each(function (index, field) { + return _this2.add(field); + }); + } + }]); + + return SelectizeField; + }(); + + exports.default = SelectizeField; + var Instance = exports.Instance = new SelectizeField(); + +/***/ }, +/* 234 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Instance = undefined; + + var _jquery = __webpack_require__(196); + + var _jquery2 = _interopRequireDefault(_jquery); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var body = (0, _jquery2.default)('body'); + + var Template = function () { + function Template(container) { + _classCallCheck(this, Template); + + this.container = (0, _jquery2.default)(container); + + if (this.getName() === undefined) { + this.container = this.container.closest('[data-grav-array-name]'); + } + } + + _createClass(Template, [{ + key: 'getName', + value: function getName() { + return this.container.data('grav-array-name') || ''; + } + }, { + key: 'getKeyPlaceholder', + value: function getKeyPlaceholder() { + return this.container.data('grav-array-keyname') || 'Key'; + } + }, { + key: 'getValuePlaceholder', + value: function getValuePlaceholder() { + return this.container.data('grav-array-valuename') || 'Value'; + } + }, { + key: 'isValueOnly', + value: function isValueOnly() { + return this.container.find('[data-grav-array-mode="value_only"]:first').length || false; + } + }, { + key: 'shouldBeDisabled', + value: function shouldBeDisabled() { + // check for toggleables, if field is toggleable and it's not enabled, render disabled + var toggle = this.container.closest('.form-field').find('[data-grav-field="toggleable"] input[type="checkbox"]'); + return toggle.length && toggle.is(':not(:checked)'); + } + }, { + key: 'getNewRow', + value: function getNewRow() { + var tpl = ''; + + if (this.isValueOnly()) { + tpl += '\n
\n \n '; + } else { + tpl += '\n
\n \n \n '; + } + + tpl += '\n \n \n
'; + + return tpl; + } + }]); + + return Template; + }(); + + var ArrayField = function () { + function ArrayField() { + var _this = this; + + _classCallCheck(this, ArrayField); + + body.on('input', '[data-grav-array-type="key"], [data-grav-array-type="value"]', function (event) { + return _this.actionInput(event); + }); + body.on('click touch', '[data-grav-array-action]', function (event) { + return _this.actionEvent(event); + }); + } + + _createClass(ArrayField, [{ + key: 'actionInput', + value: function actionInput(event) { + var element = (0, _jquery2.default)(event.target); + var type = element.data('grav-array-type'); + + this._setTemplate(element); + + var template = element.data('array-template'); + var keyElement = type === 'key' ? element : element.siblings('[data-grav-array-type="key"]:first'); + var valueElement = type === 'value' ? element : element.siblings('[data-grav-array-type="value"]:first'); + + var name = template.getName() + '[' + (!template.isValueOnly() ? keyElement.val() : this.getIndexFor(element)) + ']'; + valueElement.attr('name', !valueElement.val() ? template.getName() : name); + + this.refreshNames(template); + } + }, { + key: 'actionEvent', + value: function actionEvent(event) { + var element = (0, _jquery2.default)(event.target); + var action = element.data('grav-array-action'); + + this._setTemplate(element); + + this[action + 'Action'](element); + } + }, { + key: 'addAction', + value: function addAction(element) { + var template = element.data('array-template'); + var row = element.closest('[data-grav-array-type="row"]'); + + row.after(template.getNewRow()); + } + }, { + key: 'remAction', + value: function remAction(element) { + var template = element.data('array-template'); + var row = element.closest('[data-grav-array-type="row"]'); + var isLast = !row.siblings().length; + + if (isLast) { + var newRow = (0, _jquery2.default)(template.getNewRow()); + row.after(newRow); + newRow.find('[data-grav-array-type="value"]:last').attr('name', template.getName()); + } + + row.remove(); + this.refreshNames(template); + } + }, { + key: 'refreshNames', + value: function refreshNames(template) { + if (!template.isValueOnly()) { + return; + } + + var row = template.container.find('> div > [data-grav-array-type="row"]'); + var inputs = row.find('[name]:not([name=""])'); + + inputs.each(function (index, input) { + input = (0, _jquery2.default)(input); + var name = input.attr('name'); + name = name.replace(/\[\d+\]$/, '[' + index + ']'); + input.attr('name', name); + }); + + if (!inputs.length) { + row.find('[data-grav-array-type="value"]').attr('name', template.getName()); + } + } + }, { + key: 'getIndexFor', + value: function getIndexFor(element) { + var template = element.data('array-template'); + var row = element.closest('[data-grav-array-type="row"]'); + + return template.container.find((template.isValueOnly() ? '> div ' : '') + ' > [data-grav-array-type="row"]').index(row); + } + }, { + key: '_setTemplate', + value: function _setTemplate(element) { + if (!element.data('array-template')) { + element.data('array-template', new Template(element.closest('[data-grav-array-name]'))); + } + } + }]); + + return ArrayField; + }(); + + exports.default = ArrayField; + var Instance = exports.Instance = new ArrayField(); + +/***/ }, +/* 235 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Instance = undefined; + + var _jquery = __webpack_require__(196); + + var _jquery2 = _interopRequireDefault(_jquery); + + var _sortablejs = __webpack_require__(212); + + var _sortablejs2 = _interopRequireDefault(_sortablejs); + + __webpack_require__(230); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + var CollectionsField = function () { + function CollectionsField() { + var _this = this; + + _classCallCheck(this, CollectionsField); + + this.lists = (0, _jquery2.default)(); + + (0, _jquery2.default)('[data-type="collection"]').each(function (index, list) { + return _this.addList(list); + }); + (0, _jquery2.default)('body').on('mutation._grav', this._onAddedNodes.bind(this)); + } + + _createClass(CollectionsField, [{ + key: 'addList', + value: function addList(list) { + var _this2 = this; + + list = (0, _jquery2.default)(list); + this.lists = this.lists.add(list); + + list.on('click', '> .collection-actions [data-action="add"]', function (event) { + return _this2.addItem(event); + }); + list.on('click', '> ul > li > .item-actions [data-action="delete"]', function (event) { + return _this2.removeItem(event); + }); + + list.find('[data-collection-holder]').each(function (index, container) { + container = (0, _jquery2.default)(container); + if (container.data('collection-sort')) { + return; + } + + container.data('collection-sort', new _sortablejs2.default(container.get(0), { + forceFallback: true, + animation: 150, + onUpdate: function onUpdate() { + return _this2.reindex(container); + } + })); + }); + } + }, { + key: 'addItem', + value: function addItem(event) { + var button = (0, _jquery2.default)(event.currentTarget); + var list = button.closest('[data-type="collection"]'); + var template = (0, _jquery2.default)(list.find('> [data-collection-template="new"]').data('collection-template-html')); + + list.find('> [data-collection-holder]').append(template); + this.reindex(list); + // button.data('key-index', keyIndex + 1); + + // process markdown editors + /* var field = template.find('[name]').filter('textarea'); + if (field.length && field.data('grav-mdeditor') && typeof MDEditors !== 'undefined') { + MDEditors.add(field); + }*/ + } + }, { + key: 'removeItem', + value: function removeItem(event) { + var button = (0, _jquery2.default)(event.currentTarget); + var item = button.closest('[data-collection-item]'); + var list = button.closest('[data-type="collection"]'); + + item.remove(); + this.reindex(list); + } + }, { + key: 'reindex', + value: function reindex(list) { + list = (0, _jquery2.default)(list).closest('[data-type="collection"]'); + + var items = list.find('> ul > [data-collection-item]'); + + items.each(function (index, item) { + item = (0, _jquery2.default)(item); + item.attr('data-collection-key', index); + + ['name', 'data-grav-field-name', 'id', 'for'].forEach(function (prop) { + item.find('[' + prop + ']').each(function () { + var element = (0, _jquery2.default)(this); + var indexes = []; + element.parents('[data-collection-key]').map(function (idx, parent) { + return indexes.push((0, _jquery2.default)(parent).attr('data-collection-key')); + }); + indexes.reverse(); + + var replaced = element.attr(prop).replace(/\[(\d+|\*)\]/g, function () /* str, p1, offset */{ + return '[' + indexes.shift() + ']'; + }); + + element.attr(prop, replaced); + }); + }); + }); + } + }, { + key: '_onAddedNodes', + value: function _onAddedNodes(event, target /* , record, instance */) { + var _this3 = this; + + var collections = (0, _jquery2.default)(target).find('[data-type="collection"]'); + if (!collections.length) { + return; + } + + collections.each(function (index, collection) { + collection = (0, _jquery2.default)(collection); + if (! ~_this3.lists.index(collection)) { + _this3.addList(collection); + } + }); + } + }]); + + return CollectionsField; + }(); + + exports.default = CollectionsField; + var Instance = exports.Instance = new CollectionsField(); + +/***/ }, +/* 236 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _jquery = __webpack_require__(196); + + var _jquery2 = _interopRequireDefault(_jquery); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // Plugins sliders details + (0, _jquery2.default)('.gpm-name, .gpm-actions').on('click', function (e) { + var element = (0, _jquery2.default)(this); + var target = (0, _jquery2.default)(e.target); + var tag = target.prop('tagName').toLowerCase(); + + if (tag === 'a' || element.parent('a').length) { + return true; + } + + var wrapper = element.siblings('.gpm-details').find('.table-wrapper'); + + wrapper.slideToggle({ + duration: 350, + complete: function complete() { + var visible = wrapper.is(':visible'); + wrapper.closest('tr').find('.gpm-details-expand i').removeClass('fa-chevron-' + (visible ? 'down' : 'up')).addClass('fa-chevron-' + (visible ? 'up' : 'down')); + } + }); + }); + +/***/ }, +/* 237 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var _jquery = __webpack_require__(196); + + var _jquery2 = _interopRequireDefault(_jquery); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + + // Themes Switcher Warning + (0, _jquery2.default)(document).on('mousedown', '[data-remodal-target="theme-switch-warn"]', function (event) { + var name = (0, _jquery2.default)(event.target).closest('[data-gpm-theme]').find('.gpm-name a:first').text(); + var remodal = (0, _jquery2.default)('.remodal.theme-switcher'); + + remodal.find('strong').text(name); + remodal.find('.button.continue').attr('href', (0, _jquery2.default)(event.target).attr('href')); + }); + +/***/ } +]); +//# sourceMappingURL=admin.js.map \ No newline at end of file diff --git a/themes/grav/js/admin.js.map b/themes/grav/js/admin.js.map new file mode 100644 index 00000000..fe456be7 --- /dev/null +++ b/themes/grav/js/admin.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./app/main.js","webpack:///./app/utils/gpm.js","webpack:///./~/whatwg-fetch/fetch.js","webpack:///./~/babel-polyfill/lib/index.js","webpack:///./~/core-js/shim.js","webpack:///./~/core-js/modules/es5.js","webpack:///./~/core-js/modules/$.js","webpack:///./~/core-js/modules/$.export.js","webpack:///./~/core-js/modules/$.global.js","webpack:///./~/core-js/modules/$.core.js","webpack:///./~/core-js/modules/$.hide.js","webpack:///./~/core-js/modules/$.property-desc.js","webpack:///./~/core-js/modules/$.descriptors.js","webpack:///./~/core-js/modules/$.fails.js","webpack:///./~/core-js/modules/$.redefine.js","webpack:///./~/core-js/modules/$.uid.js","webpack:///./~/core-js/modules/$.ctx.js","webpack:///./~/core-js/modules/$.a-function.js","webpack:///./~/core-js/modules/$.html.js","webpack:///./~/core-js/modules/$.dom-create.js","webpack:///./~/core-js/modules/$.is-object.js","webpack:///./~/core-js/modules/$.has.js","webpack:///./~/core-js/modules/$.cof.js","webpack:///./~/core-js/modules/$.invoke.js","webpack:///./~/core-js/modules/$.an-object.js","webpack:///./~/core-js/modules/$.to-object.js","webpack:///./~/core-js/modules/$.defined.js","webpack:///./~/core-js/modules/$.to-iobject.js","webpack:///./~/core-js/modules/$.iobject.js","webpack:///./~/core-js/modules/$.to-integer.js","webpack:///./~/core-js/modules/$.to-index.js","webpack:///./~/core-js/modules/$.to-length.js","webpack:///./~/core-js/modules/$.array-methods.js","webpack:///./~/core-js/modules/$.array-species-create.js","webpack:///./~/core-js/modules/$.is-array.js","webpack:///./~/core-js/modules/$.wks.js","webpack:///./~/core-js/modules/$.shared.js","webpack:///./~/core-js/modules/$.array-includes.js","webpack:///./~/core-js/modules/es6.symbol.js","webpack:///./~/core-js/modules/$.set-to-string-tag.js","webpack:///./~/core-js/modules/$.keyof.js","webpack:///./~/core-js/modules/$.get-names.js","webpack:///./~/core-js/modules/$.enum-keys.js","webpack:///./~/core-js/modules/$.library.js","webpack:///./~/core-js/modules/es6.object.assign.js","webpack:///./~/core-js/modules/$.object-assign.js","webpack:///./~/core-js/modules/es6.object.is.js","webpack:///./~/core-js/modules/$.same-value.js","webpack:///./~/core-js/modules/es6.object.set-prototype-of.js","webpack:///./~/core-js/modules/$.set-proto.js","webpack:///./~/core-js/modules/es6.object.to-string.js","webpack:///./~/core-js/modules/$.classof.js","webpack:///./~/core-js/modules/es6.object.freeze.js","webpack:///./~/core-js/modules/$.object-sap.js","webpack:///./~/core-js/modules/es6.object.seal.js","webpack:///./~/core-js/modules/es6.object.prevent-extensions.js","webpack:///./~/core-js/modules/es6.object.is-frozen.js","webpack:///./~/core-js/modules/es6.object.is-sealed.js","webpack:///./~/core-js/modules/es6.object.is-extensible.js","webpack:///./~/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./~/core-js/modules/es6.object.get-prototype-of.js","webpack:///./~/core-js/modules/es6.object.keys.js","webpack:///./~/core-js/modules/es6.object.get-own-property-names.js","webpack:///./~/core-js/modules/es6.function.name.js","webpack:///./~/core-js/modules/es6.function.has-instance.js","webpack:///./~/core-js/modules/es6.number.constructor.js","webpack:///./~/core-js/modules/$.to-primitive.js","webpack:///./~/core-js/modules/$.string-trim.js","webpack:///./~/core-js/modules/es6.number.epsilon.js","webpack:///./~/core-js/modules/es6.number.is-finite.js","webpack:///./~/core-js/modules/es6.number.is-integer.js","webpack:///./~/core-js/modules/$.is-integer.js","webpack:///./~/core-js/modules/es6.number.is-nan.js","webpack:///./~/core-js/modules/es6.number.is-safe-integer.js","webpack:///./~/core-js/modules/es6.number.max-safe-integer.js","webpack:///./~/core-js/modules/es6.number.min-safe-integer.js","webpack:///./~/core-js/modules/es6.number.parse-float.js","webpack:///./~/core-js/modules/es6.number.parse-int.js","webpack:///./~/core-js/modules/es6.math.acosh.js","webpack:///./~/core-js/modules/$.math-log1p.js","webpack:///./~/core-js/modules/es6.math.asinh.js","webpack:///./~/core-js/modules/es6.math.atanh.js","webpack:///./~/core-js/modules/es6.math.cbrt.js","webpack:///./~/core-js/modules/$.math-sign.js","webpack:///./~/core-js/modules/es6.math.clz32.js","webpack:///./~/core-js/modules/es6.math.cosh.js","webpack:///./~/core-js/modules/es6.math.expm1.js","webpack:///./~/core-js/modules/$.math-expm1.js","webpack:///./~/core-js/modules/es6.math.fround.js","webpack:///./~/core-js/modules/es6.math.hypot.js","webpack:///./~/core-js/modules/es6.math.imul.js","webpack:///./~/core-js/modules/es6.math.log10.js","webpack:///./~/core-js/modules/es6.math.log1p.js","webpack:///./~/core-js/modules/es6.math.log2.js","webpack:///./~/core-js/modules/es6.math.sign.js","webpack:///./~/core-js/modules/es6.math.sinh.js","webpack:///./~/core-js/modules/es6.math.tanh.js","webpack:///./~/core-js/modules/es6.math.trunc.js","webpack:///./~/core-js/modules/es6.string.from-code-point.js","webpack:///./~/core-js/modules/es6.string.raw.js","webpack:///./~/core-js/modules/es6.string.trim.js","webpack:///./~/core-js/modules/es6.string.iterator.js","webpack:///./~/core-js/modules/$.string-at.js","webpack:///./~/core-js/modules/$.iter-define.js","webpack:///./~/core-js/modules/$.iterators.js","webpack:///./~/core-js/modules/$.iter-create.js","webpack:///./~/core-js/modules/es6.string.code-point-at.js","webpack:///./~/core-js/modules/es6.string.ends-with.js","webpack:///./~/core-js/modules/$.string-context.js","webpack:///./~/core-js/modules/$.is-regexp.js","webpack:///./~/core-js/modules/$.fails-is-regexp.js","webpack:///./~/core-js/modules/es6.string.includes.js","webpack:///./~/core-js/modules/es6.string.repeat.js","webpack:///./~/core-js/modules/$.string-repeat.js","webpack:///./~/core-js/modules/es6.string.starts-with.js","webpack:///./~/core-js/modules/es6.array.from.js","webpack:///./~/core-js/modules/$.iter-call.js","webpack:///./~/core-js/modules/$.is-array-iter.js","webpack:///./~/core-js/modules/core.get-iterator-method.js","webpack:///./~/core-js/modules/$.iter-detect.js","webpack:///./~/core-js/modules/es6.array.of.js","webpack:///./~/core-js/modules/es6.array.iterator.js","webpack:///./~/core-js/modules/$.add-to-unscopables.js","webpack:///./~/core-js/modules/$.iter-step.js","webpack:///./~/core-js/modules/es6.array.species.js","webpack:///./~/core-js/modules/$.set-species.js","webpack:///./~/core-js/modules/es6.array.copy-within.js","webpack:///./~/core-js/modules/$.array-copy-within.js","webpack:///./~/core-js/modules/es6.array.fill.js","webpack:///./~/core-js/modules/$.array-fill.js","webpack:///./~/core-js/modules/es6.array.find.js","webpack:///./~/core-js/modules/es6.array.find-index.js","webpack:///./~/core-js/modules/es6.regexp.constructor.js","webpack:///./~/core-js/modules/$.flags.js","webpack:///./~/core-js/modules/es6.regexp.flags.js","webpack:///./~/core-js/modules/es6.regexp.match.js","webpack:///./~/core-js/modules/$.fix-re-wks.js","webpack:///./~/core-js/modules/es6.regexp.replace.js","webpack:///./~/core-js/modules/es6.regexp.search.js","webpack:///./~/core-js/modules/es6.regexp.split.js","webpack:///./~/core-js/modules/es6.promise.js","webpack:///./~/core-js/modules/$.strict-new.js","webpack:///./~/core-js/modules/$.for-of.js","webpack:///./~/core-js/modules/$.species-constructor.js","webpack:///./~/core-js/modules/$.microtask.js","webpack:///./~/core-js/modules/$.task.js","webpack:///./~/core-js/modules/$.redefine-all.js","webpack:///./~/core-js/modules/es6.map.js","webpack:///./~/core-js/modules/$.collection-strong.js","webpack:///./~/core-js/modules/$.collection.js","webpack:///./~/core-js/modules/es6.set.js","webpack:///./~/core-js/modules/es6.weak-map.js","webpack:///./~/core-js/modules/$.collection-weak.js","webpack:///./~/core-js/modules/es6.weak-set.js","webpack:///./~/core-js/modules/es6.reflect.apply.js","webpack:///./~/core-js/modules/es6.reflect.construct.js","webpack:///./~/core-js/modules/es6.reflect.define-property.js","webpack:///./~/core-js/modules/es6.reflect.delete-property.js","webpack:///./~/core-js/modules/es6.reflect.enumerate.js","webpack:///./~/core-js/modules/es6.reflect.get.js","webpack:///./~/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///./~/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///./~/core-js/modules/es6.reflect.has.js","webpack:///./~/core-js/modules/es6.reflect.is-extensible.js","webpack:///./~/core-js/modules/es6.reflect.own-keys.js","webpack:///./~/core-js/modules/$.own-keys.js","webpack:///./~/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///./~/core-js/modules/es6.reflect.set.js","webpack:///./~/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./~/core-js/modules/es7.array.includes.js","webpack:///./~/core-js/modules/es7.string.at.js","webpack:///./~/core-js/modules/es7.string.pad-left.js","webpack:///./~/core-js/modules/$.string-pad.js","webpack:///./~/core-js/modules/es7.string.pad-right.js","webpack:///./~/core-js/modules/es7.string.trim-left.js","webpack:///./~/core-js/modules/es7.string.trim-right.js","webpack:///./~/core-js/modules/es7.regexp.escape.js","webpack:///./~/core-js/modules/$.replacer.js","webpack:///./~/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./~/core-js/modules/es7.object.values.js","webpack:///./~/core-js/modules/$.object-to-array.js","webpack:///./~/core-js/modules/es7.object.entries.js","webpack:///./~/core-js/modules/es7.map.to-json.js","webpack:///./~/core-js/modules/$.collection-to-json.js","webpack:///./~/core-js/modules/es7.set.to-json.js","webpack:///./~/core-js/modules/js.array.statics.js","webpack:///./~/core-js/modules/web.timers.js","webpack:///./~/core-js/modules/$.partial.js","webpack:///./~/core-js/modules/$.path.js","webpack:///./~/core-js/modules/web.immediate.js","webpack:///./~/core-js/modules/web.dom.iterable.js","webpack:///./~/babel-regenerator-runtime/runtime.js","webpack:///./~/process/browser.js","webpack:///./app/utils/response.js","webpack:///./app/utils/toastr.js","webpack:///external \"GravAdmin\"","webpack:///./~/events/events.js","webpack:///./app/utils/keepalive.js","webpack:///./app/updates/index.js","webpack:///./app/utils/formatbytes.js","webpack:///./app/updates/check.js","webpack:///./app/updates/update.js","webpack:///./app/utils/request.js","webpack:///./app/dashboard/index.js","webpack:///./app/dashboard/chart.js","webpack:///./app/dashboard/cache.js","webpack:///./app/dashboard/backup.js","webpack:///./app/pages/index.js","webpack:///./app/pages/filter.js","webpack:///./~/debounce/index.js","webpack:///./~/date-now/index.js","webpack:///./app/pages/tree.js","webpack:///./app/pages/page/index.js","webpack:///./app/pages/page/add.js","webpack:///./app/pages/page/move.js","webpack:///./app/pages/page/delete.js","webpack:///./app/pages/page/media.js","webpack:///./app/forms/index.js","webpack:///./app/forms/state.js","webpack:///./~/immutable/dist/immutable.js","webpack:///./app/utils/jquery-utils.js","webpack:///./app/forms/form.js","webpack:///./app/forms/fields/index.js","webpack:///./app/forms/fields/selectize.js","webpack:///./app/forms/fields/array.js","webpack:///./app/forms/fields/collections.js","webpack:///./app/plugins/index.js","webpack:///./app/themes/index.js"],"names":[],"mappings":"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CP;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA,wCAAuC,0BAA0B;AACjE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,gCAA+B,0BAA0B,eAAe;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;;AAEP;AACA,MAAK;AACL;AACA;AACA,EAAC;;;AAGD;AACA;AACA,EAAC,e;;;;;;;ACpYD;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAC,e;;;;;;;AChBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yC;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,gBAAgB,UAAU,GAAG;AACzE,IAAG;AACH;AACA;AACA;AACA,MAAK,UAAU;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,UAAU;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;AACH;AACA;AACA,EAAC;;AAED;AACA;AACA,2BAA0B,SAAS;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,UAAU;AACnB;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,8BAA6B,iCAAiC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,sCAAsC;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,WAAW;AACpB;AACA;AACA,EAAC;;AAED;AACA,6BAA4B,gBAAgB,kBAAkB,GAAG;;AAEjE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACnRD;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAqF,uBAAuB;AAC5G,oEAAmE;AACnE,iEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,eAAc;AACd,eAAc;AACd,eAAc;AACd,gBAAe;AACf,gBAAe;AACf,0B;;;;;;ACxCA;AACA;AACA;AACA,wCAAuC,gC;;;;;;ACHvC,8BAA6B;AAC7B,sCAAqC,gC;;;;;;ACDrC;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,G;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACPA;AACA;AACA,kCAAiC,QAAQ,gBAAgB,UAAU,GAAG;AACtE,EAAC,E;;;;;;ACHD;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,EAAC;AACD;AACA,EAAC,E;;;;;;AC1BD;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACnBA;AACA;AACA;AACA,G;;;;;;ACHA,8E;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACNA;AACA;AACA,G;;;;;;ACFA,wBAAuB;AACvB;AACA;AACA,G;;;;;;ACHA,kBAAiB;;AAEjB;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,G;;;;;;ACfA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACLA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACNA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D,G;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,eAAe;AACxB;AACA;AACA;AACA,uCAAsC;AACtC;AACA,+BAA8B;AAC9B,8BAA6B;AAC7B,gCAA+B;AAC/B,oCAAmC;AACnC,UAAS,+BAA+B;AACxC;AACA;AACA;AACA;AACA,G;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,G;;;;;;ACfA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACNA;AACA;AACA,oDAAmD;AACnD;AACA,wCAAuC;AACvC,G;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,WAAW,eAAe;AAC/B;AACA,MAAK;AACL;AACA,G;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA2B;AAC3B,qBAAoB,4BAA4B,SAAS,IAAI;AAC7D,IAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+DAA8D;AAC9D;AACA,MAAK;AACL;AACA,uBAAsB,iCAAiC;AACvD,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD,KAAK,QAAQ,iCAAiC;AAClG,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH,yBAAwB,eAAe,EAAE;AACzC,yBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;;AAEA,iCAAgC,gBAAgB;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,8EAA6E,sBAAsB;;AAEnG;AACA;AACA;AACA;AACA;AACA,2C;;;;;;AClOA;AACA;AACA;;AAEA;AACA,mEAAkE,+BAA+B;AACjG,G;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACTA;AACA;AACA;AACA,mBAAkB;;AAElB;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,G;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACbA,wB;;;;;;ACAA;AACA;;AAEA,2CAA0C,gCAAqC,E;;;;;;ACH/E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,UAAU,EAAE;AAC9C,cAAa,gCAAgC;AAC7C,EAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,iB;;;;;;AChCD;AACA;AACA,+BAA8B,4BAA8B,E;;;;;;ACF5D;AACA;AACA;AACA,G;;;;;;ACHA;AACA;AACA,+BAA8B,4CAA6C,E;;;;;;ACF3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,QAAO,UAAU,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,MAAK,GAAG;AACR;AACA,G;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,E;;;;;;ACTA;AACA;AACA;AACA;AACA,0BAAyB,kBAAkB,EAAE;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA,oDAAmD,OAAO,EAAE;AAC5D,G;;;;;;ACTA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;AACA;AACA,EAAC,E;;;;;;ACHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACfD;AACA;AACA;AACA;AACA;AACA;AACA,6EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA,GAAE,E;;;;;;ACZF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD,MAAK;AACL;AACA,wCAAuC,cAAc,OAAO;AAC5D,wCAAuC,cAAc,OAAO;AAC5D;AACA;AACA,oEAAmE,OAAO;AAC1E;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,0BAA0B,EAAE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,E;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2B;;;;;;AC5BA;AACA;;AAEA,+BAA8B,0BAA0B,E;;;;;;ACHxD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;;AAEA,+BAA8B,mCAAqC,E;;;;;;ACHnE;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACLA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACTD;AACA;;AAEA,+BAA8B,mCAAmC,E;;;;;;ACHjE;AACA;;AAEA,+BAA8B,oCAAoC,E;;;;;;ACHlE;AACA;;AAEA,+BAA8B,uBAAuB,E;;;;;;ACHrD;AACA;;AAEA,+BAA8B,mBAAmB,E;;;;;;ACHjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACbD;AACA;AACA;AACA,G;;;;;;ACHA;AACA;;AAEA;AACA;AACA;;AAEA,6BAA4B,aAAa,E;;;;;;ACPzC;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;AACA;AACA,G;;;;;;ACHA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;;AAEA,6BAA4B,+BAAiC,E;;;;;;ACH7D;AACA;AACA;AACA,G;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACzBD;AACA;AACA;;AAEA;AACA,yCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,EAAC,E;;;;;;ACzBD;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;AChBD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA,6BAA4B,+BAAiC,E;;;;;;ACH7D;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;;AAEA,6BAA4B,8BAA+B,E;;;;;;ACH3D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACdD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACXD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,E;;;;;;ACvBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,E;;;;;;AClBD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACND;AACA;;AAEA;AACA;AACA,8BAA6B;AAC7B,eAAc;AACd;AACA,EAAC;AACD;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA,WAAU;AACV,EAAC,E;;;;;;AChBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,aAAa;;AAEzC;AACA;AACA;AACA;AACA;AACA,yCAAwC,oCAAoC;AAC5E,6CAA4C,oCAAoC;AAChF,MAAK,2BAA2B,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,mBAAmB;AACrC;AACA;AACA,oCAAmC,2BAA2B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,G;;;;;;ACjEA,qB;;;;;;ACAA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAAkF,aAAa,EAAE;;AAEjG;AACA,wDAAuD,0BAA0B;AACjF;AACA,G;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACpBD,uBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA,G;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK,UAAU;AACf,IAAG;AACH,G;;;;;;ACXA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACXD;;AAEA;AACA;AACA;AACA,EAAC,E;;;;;;ACLD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO,MAAM;AACb;AACA,G;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;AClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA2E,kBAAkB,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAoD,gCAAgC;AACpF;AACA;AACA,MAAK;AACL;AACA,kCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;;;;;;ACnCD;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,G;;;;;;ACXA;AACA;AACA;AACA;;AAEA;AACA;AACA,G;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACPA;AACA;;AAEA;AACA;AACA,gCAA+B,qBAAqB;AACpD,gCAA+B,SAAS,EAAE;AAC1C,EAAC,UAAU;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,aAAa;AACxC,gCAA+B,aAAa;AAC5C;AACA,IAAG,UAAU;AACb;AACA,G;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;AClBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC,eAAc;AACd,kBAAiB;AACjB;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA;AACA;AACA,6B;;;;;;ACjCA;AACA;AACA;AACA,4FAAuF;AACvF;AACA;AACA,G;;;;;;ACNA;AACA,WAAU;AACV,G;;;;;;ACFA,mC;;;;;;ACAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC,IAAG;AACH,G;;;;;;ACZA;AACA;;AAEA,8BAA6B,qCAA6C;;AAE1E,wC;;;;;;ACLA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,G;;;;;;AC1BA;AACA;;AAEA,8BAA6B,+BAAgC;;AAE7D,kC;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,gBAAgB,EAAE;AACxD;AACA;AACA;AACA;AACA,EAAC;AACD,+B;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,gBAAgB,EAAE;AACxD;AACA;AACA;AACA;AACA,EAAC;AACD,+B;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,kBAAkB,EAAE;AAC1C,yBAAwB,gBAAgB;AACxC,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;;AAEA,oC;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACTD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA2B,UAAU;AACrC;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,+BAA8B,yCAAyC;AACvE;AACA;AACA,0BAAyB,oCAAoC;AAC7D;AACA;AACA,G;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACXD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACTD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACXD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,cAAc,WAAW;AACnE;AACA,yCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA,6BAA4B;AAC5B,yBAAwB,2BAA2B;AACnD,QAAO;AACP;AACA;AACA,IAAG,UAAU,eAAe;AAC5B;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,YAAW;AACX,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA,4CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,oBAAmB,gCAAgC;AACnD,UAAS;AACT;AACA;AACA,QAAO;AACP,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAuB,qBAAqB;AAC5C;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA,IAAG;AACH,mBAAkB,oBAAoB,KAAK;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA,2DAA0D,WAAW;AACrE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA,oCAAmC;AACnC,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA,EAAC,E;;;;;;AChSD;AACA;AACA;AACA,G;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAgE,gBAAgB;AAChF;AACA,IAAG,2CAA2C,gCAAgC;AAC9E;AACA;AACA,G;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA,sCAAqC,oBAAoB,EAAE;AAC3D;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,IAAG;AACH,G;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AC1EA;AACA;AACA;AACA;AACA,G;;;;;;ACJA;AACA;;AAEA;AACA;AACA,yBAAwB,mEAAmE;AAC3F,EAAC;AACD;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,EAAC,gB;;;;;;AChBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B,2BAA0B;AAC1B,2BAA0B;AAC1B,sBAAqB;AACrB;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,8DAA6D,OAAO;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,0BAAyB;AACzB,sBAAqB;AACrB,2BAA0B;AAC1B,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,G;;;;;;AC9JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA,QAAO,kCAAkC,gCAAgC,aAAa;AACtF,8BAA6B,mCAAmC,aAAa;AAC7E;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,4DAA2D;AAC3D;AACA,iDAAgD,iBAAiB,EAAE;AACnE;AACA,2DAA0D,aAAa,EAAE;AACzE;AACA;AACA,2B;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,G;;;;;;AC9EA;AACA;;AAEA;AACA;AACA,yBAAwB,mEAAmE;AAC3F,EAAC;AACD;AACA;AACA;AACA;AACA,EAAC,U;;;;;;ACXD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,mEAAmE;AAC/F,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL,IAAG;AACH,E;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAqB;AACrB,2BAA0B;AAC1B;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL,4CAA2C;AAC3C;AACA,MAAK;AACL,IAAG;AACH;AACA;AACA,G;;;;;;ACrFA;AACA;;AAEA;AACA;AACA,6BAA4B,mEAAmE;AAC/F,EAAC;AACD;AACA;AACA;AACA;AACA,EAAC,qB;;;;;;ACXD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAAyC;AACzC,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACrCD;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAqC,MAAM,SAAS,OAAO,SAAS;AACpE,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC,E;;;;;;AClBD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACVD;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC;AACtC,IAAG;AACH,WAAU;AACV,EAAC;;AAED;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACzBD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAA+B,SAAS,E;;;;;;ACnBxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACTD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACTD;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACPD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACVD;AACA;;AAEA,gCAA+B,kCAAiC,E;;;;;;ACHhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACRA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC,E;;;;;;ACfD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAA+B,SAAS,E;;;;;;AC5BxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,EAAC,E;;;;;;ACdD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED,sC;;;;;;ACXA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACTD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AChBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACND;AACA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACND;AACA;AACA,0DAAwD;;AAExD,+BAA8B,4BAA4B,gBAAgB,GAAG;;;;;;;ACJ7E;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,G;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC,E;;;;;;ACtBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,G;;;;;;ACfA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACRD;AACA;;AAEA,4BAA2B,wCAAiD,E;;;;;;ACH5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACVA;AACA;;AAEA,4BAA2B,wCAAiD,E;;;;;;ACH5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA,sC;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAmB,WAAW;AAC9B;AACA;AACA;AACA,G;;;;;;ACvBA,yC;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA,EAAC,E;;;;;;ACLD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0E;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,MAAK;AACL,eAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,WAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAW;AACX;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;;AAEA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAiC,kBAAkB;AACnD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAY;AACZ;AACA;;AAEA;AACA,aAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAa;AACb;AACA;;AAEA,YAAW;AACX;AACA;AACA;;AAEA,YAAW;AACX;AACA;AACA;;AAEA,YAAW;AACX;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,+CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA,MAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,QAAO;AACP;AACA;AACA,MAAK;;AAEL;AACA,+CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA,+CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChpBA;;AAE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;;;ACHxC,4B;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAG;AACH,qBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;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ACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,8CAA6C,wBAAwB;AACrE;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA,aAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAmC,KAAK;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,gBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,gBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;;;;AAKA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,gBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,wCAAuC,SAAS;AAChD;AACA;;AAEA;AACA;AACA,oFAAmF,yCAAyC;AAC5H;AACA;AACA,kFAAiF,yCAAyC;AAC1H;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA,0BAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAsB,gBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA,4DAA2D;AAC3D;AACA;AACA,UAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB,gBAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA,4CAA2C;;AAE3C,8CAA6C;;AAE7C,0CAAyC;;;AAGzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAgB;AAChB,iBAAgB;AAChB;AACA;AACA;AACA,8EAA6E;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAK;AACL;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,+BAA8B,SAAS;AACvC;AACA,MAAK;AACL;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,qBAAqB;AAC7D,UAAS;AACT;;AAEA;AACA,oCAAmC,KAAK;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,2DAA0D,SAAS;AACnE;;AAEA;AACA;AACA;;AAEA;AACA,kDAAiD,eAAe;AAChE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,iDAAgD;AAChD;AACA;;AAEA,gDAA+C;AAC/C;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qDAAoD;AACpD;AACA;;AAEA,oDAAmD;AACnD;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sDAAqD;AACrD;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,UAAU;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qCAAoC,WAAW;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA4C,UAAU;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAoC,WAAW;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA,oDAAmD,gBAAgB;AACnE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kDAAiD,UAAU;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,uCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,UAAS;AACT;AACA;AACA;AACA,uBAAsB,mBAAmB;AACzC;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,sBAAsB;AAC5D,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAwB,oBAAoB;AAC5C;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,oBAAoB;AAC5C;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kDAAiD;AACjD;AACA;;AAEA;AACA;AACA;;AAEA,sDAAqD;AACrD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC,iBAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAwC,qBAAqB;AAC7D,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C,KAAK;AAC/C;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6DAA4D;AAC5D;AACA,2BAA0B,+CAA+C;AACzE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB;AACxB;AACA;AACA;AACA;AACA,sDAAqD,wCAAwC;AAC7F,6DAA4D,gBAAgB;AAC5E;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qDAAoD;AACpD;AACA;AACA,kDAAiD;AACjD;AACA;AACA;;AAEA,gEAA+D;AAC/D;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;;AAEA,kEAAiE;AACjE;AACA;AACA;AACA,4BAA2B,wBAAwB;AACnD;AACA,2BAA0B,4CAA4C;AACtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oEAAmE;AACnE;AACA,iDAAgD,mCAAmC;AACnF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gEAA+D;AAC/D,iDAAgD,wBAAwB;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,sCAAqC;AACrC;AACA,2DAA0D;AAC1D,4CAA2C;AAC3C;AACA;AACA,wCAAuC;AACvC,6CAA4C;AAC5C;AACA,8DAA6D;AAC7D,kDAAiD,kCAAkC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,0CAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,gEAA+D;AAC/D;AACA,6BAA4B,8DAA8D;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP,mDAAkD;AAClD;AACA,0DAAyD;AACzD,kDAAiD,wBAAwB;AACzE;AACA;AACA,iCAAgC;AAChC;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA,MAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA,MAAK;AACL;AACA,uCAAsC,oCAAoC;AAC1E;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;;AAEA;AACA;;;AAGA;AACA;AACA,6DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,gEAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA,8DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,gEAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA,MAAK,uBAAuB,oBAAoB;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,8CAA6C;AAC7C;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;;;AAGA;AACA;AACA;AACA,mEAAkE;AAClE;AACA;AACA,UAAS;AACT,+CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA,mCAAkC,6CAA6C;AAC/E;AACA,wBAAuB,uBAAuB,EAAE;AAChD,wBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B,mCAAmC;AACjE,kCAAiC,kDAAkD;AACnF;AACA,MAAK;AACL,+CAA8C,4CAA4C;AAC1F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,8DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,gBAAgB;AAC9D,6CAA4C,cAAc;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAqD,eAAe;AACpE;AACA,QAAO;AACP;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oDAAmD,KAAK;AACxD;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4DAA2D;AAC3D,sEAAqE,qBAAqB;AAC1F;;AAEA,yDAAwD;AACxD,sEAAqE,qBAAqB;AAC1F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,kBAAkB;AACvD,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAmC,KAAK;AACxC;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,uCAAsC;AACtC,0CAAyC,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,mBAAmB;AAC3C,4DAA2D,sBAAsB;AACjF;AACA,QAAO;AACP;;AAEA,2CAA0C;AAC1C;AACA;AACA;AACA,0CAAyC,yBAAyB;AAClE;AACA;AACA;AACA,6CAA4C,4BAA4B;AACxE;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA,0CAAyC;AACzC;AACA;AACA;AACA,0CAAyC,yBAAyB;AAClE;AACA;AACA;AACA,2CAA0C,4BAA4B;AACtE;AACA;AACA,UAAS;AACT,QAAO;AACP;;AAEA;AACA;AACA;;AAEA,iDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sDAAqD;AACrD,mDAAkD,wBAAwB;AAC1E;;AAEA;AACA,6CAA4C,SAAS;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,kBAAkB;AACvD,UAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,2CAA0C,KAAK;AAC/C;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;;;AAGA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC,oCAAoC;AACxE;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,kDAAiD,cAAc,EAAE;AACjE;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,2BAA0B;AAC1B;AACA,MAAK;;AAEL;AACA;AACA,2BAA0B;AAC1B;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,uCAAsC,eAAe,EAAE;AACvD;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;;AAGL;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAK;;;AAGL;;AAEA,yBAAwB;AACxB;AACA,MAAK;;AAEL;AACA,0CAAyC,8BAA8B;AACvE,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;;AAGL;;AAEA;AACA;AACA,MAAK;;AAEL;AACA,kFAAiF,YAAY;AAC7F,MAAK;;AAEL;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA,2CAA0C,0BAA0B;AACpE,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,2CAA0C,4BAA4B;AACtE,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;;AAGL;;AAEA;AACA;AACA;;;AAGA;;AAEA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA2C,wBAAwB;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL,IAAG;;;;AAIH;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA,6CAA4C,8BAA8B;AAC1E,MAAK;;AAEL;AACA,iDAAgD,8BAA8B;AAC9E,MAAK;;AAEL,4CAA2C;AAC3C;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA,MAAK;;AAEL,yCAAwC;AACxC;AACA;AACA,4BAA2B;AAC3B;AACA;AACA;;AAEA,IAAG;;AAEH;AACA;AACA;AACA;AACA,8DAA6D;;;;AAI7D;;AAEA;;AAEA;AACA;AACA,MAAK;;;AAGL;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;;AAGL;;AAEA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,sCAAqC,qBAAqB;AAC1D,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA,MAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,IAAG;;AAEH;AACA;;;;AAIA;;AAEA;;AAEA;AACA;AACA,MAAK;;AAEL;AACA;AACA,MAAK;;;AAGL;;AAEA;AACA;AACA;;AAEA,IAAG;;AAEH;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,8CAA8C,EAAE;AAC3E,4BAA2B,yCAAyC,EAAE;AACtE;AACA,yBAAwB,0BAA0B,EAAE;AACpD,yBAAwB,qBAAqB;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yDAAwD;AACxD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;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","file":"admin.js","sourcesContent":["import GPM, { Instance as gpm } from './utils/gpm';\nimport KeepAlive from './utils/keepalive';\nimport Updates, { Instance as updates } from './updates';\nimport Dashboard from './dashboard';\nimport Pages from './pages';\nimport Forms from './forms';\nimport './plugins';\nimport './themes';\n\n// bootstrap jQuery extensions\nimport 'bootstrap/js/dropdown';\n\n// starts the keep alive, auto runs every X seconds\nKeepAlive.start();\n\nexport default {\n GPM: {\n GPM,\n Instance: gpm\n },\n KeepAlive,\n Dashboard,\n Pages,\n Forms,\n Updates: {\n Updates,\n Instance: updates\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/main.js\n **/","import { parseJSON, parseStatus, userFeedbackError } from './response';\nimport { config } from 'grav-config';\nimport { EventEmitter } from 'events';\n\nexport default class GPM extends EventEmitter {\n constructor(action = 'getUpdates') {\n super();\n this.payload = {};\n this.raw = {};\n this.action = action;\n }\n\n setPayload(payload = {}) {\n this.payload = payload;\n this.emit('payload', payload);\n\n return this;\n }\n\n setAction(action = 'getUpdates') {\n this.action = action;\n this.emit('action', action);\n\n return this;\n }\n\n fetch(callback = () => true, flush = false) {\n let data = new FormData();\n data.append('task', 'GPM');\n data.append('action', this.action);\n\n if (flush) {\n data.append('flush', true);\n }\n\n this.emit('fetching', this);\n\n fetch(config.base_url_relative, {\n credentials: 'same-origin',\n method: 'post',\n body: data\n }).then((response) => { this.raw = response; return response; })\n .then(parseStatus)\n .then(parseJSON)\n .then((response) => this.response(response))\n .then((response) => callback(response, this.raw))\n .then((response) => this.emit('fetched', this.payload, this.raw, this))\n .catch(userFeedbackError);\n }\n\n response(response) {\n this.payload = response;\n\n return response;\n }\n}\n\nexport let Instance = new GPM();\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/utils/gpm.js\n **/","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n(function() {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var list = this.map[name]\n if (!list) {\n list = []\n this.map[name] = list\n }\n list.push(value)\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n var values = this.map[normalizeName(name)]\n return values ? values[0] : null\n }\n\n Headers.prototype.getAll = function(name) {\n return this.map[normalizeName(name)] || []\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = [normalizeValue(value)]\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n Object.getOwnPropertyNames(this.map).forEach(function(name) {\n this.map[name].forEach(function(value) {\n callback.call(thisArg, value, name, this)\n }, this)\n }, this)\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n reader.readAsArrayBuffer(blob)\n return fileReaderReady(reader)\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n reader.readAsText(blob)\n return fileReaderReady(reader)\n }\n\n var support = {\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob();\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n function Body() {\n this.bodyUsed = false\n\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (!body) {\n this._bodyText = ''\n } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) {\n // Only support ArrayBuffers for POST method.\n // Receiving ArrayBuffers happens via Blobs, instead.\n } else {\n throw new Error('unsupported BodyInit type')\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n } else {\n this.text = function() {\n var rejected = consumed(this)\n return rejected ? rejected : Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n if (Request.prototype.isPrototypeOf(input)) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = input\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this)\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function headers(xhr) {\n var head = new Headers()\n var pairs = xhr.getAllResponseHeaders().trim().split('\\n')\n pairs.forEach(function(header) {\n var split = header.trim().split(':')\n var key = split.shift().trim()\n var value = split.join(':').trim()\n head.append(key, value)\n })\n return head\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this._initBody(bodyInit)\n this.type = 'default'\n this.status = options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText\n this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers)\n this.url = options.url || ''\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request\n if (Request.prototype.isPrototypeOf(input) && !init) {\n request = input\n } else {\n request = new Request(input, init)\n }\n\n var xhr = new XMLHttpRequest()\n\n function responseURL() {\n if ('responseURL' in xhr) {\n return xhr.responseURL\n }\n\n // Avoid security warnings on getResponseHeader when not allowed by CORS\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL')\n }\n\n return;\n }\n\n xhr.onload = function() {\n var status = (xhr.status === 1223) ? 204 : xhr.status\n if (status < 100 || status > 599) {\n reject(new TypeError('Network request failed'))\n return\n }\n var options = {\n status: status,\n statusText: xhr.statusText,\n headers: headers(xhr),\n url: responseURL()\n }\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})();\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = global.fetch\n}.call(global));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/imports-loader?this=>global!./~/exports-loader?global.fetch!./~/whatwg-fetch/fetch.js\n ** module id = 2\n ** module chunks = 0\n **/","/*** IMPORTS FROM imports-loader ***/\n(function() {\n\n\"use strict\";\n\nrequire(\"core-js/shim\");\n\nrequire(\"babel-regenerator-runtime\");\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = global.Promise\n}.call(global));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/imports-loader?this=>global!./~/exports-loader?global.Promise!./~/babel-polyfill/lib/index.js\n ** module id = 3\n ** module chunks = 0\n **/","require('./modules/es5');\nrequire('./modules/es6.symbol');\nrequire('./modules/es6.object.assign');\nrequire('./modules/es6.object.is');\nrequire('./modules/es6.object.set-prototype-of');\nrequire('./modules/es6.object.to-string');\nrequire('./modules/es6.object.freeze');\nrequire('./modules/es6.object.seal');\nrequire('./modules/es6.object.prevent-extensions');\nrequire('./modules/es6.object.is-frozen');\nrequire('./modules/es6.object.is-sealed');\nrequire('./modules/es6.object.is-extensible');\nrequire('./modules/es6.object.get-own-property-descriptor');\nrequire('./modules/es6.object.get-prototype-of');\nrequire('./modules/es6.object.keys');\nrequire('./modules/es6.object.get-own-property-names');\nrequire('./modules/es6.function.name');\nrequire('./modules/es6.function.has-instance');\nrequire('./modules/es6.number.constructor');\nrequire('./modules/es6.number.epsilon');\nrequire('./modules/es6.number.is-finite');\nrequire('./modules/es6.number.is-integer');\nrequire('./modules/es6.number.is-nan');\nrequire('./modules/es6.number.is-safe-integer');\nrequire('./modules/es6.number.max-safe-integer');\nrequire('./modules/es6.number.min-safe-integer');\nrequire('./modules/es6.number.parse-float');\nrequire('./modules/es6.number.parse-int');\nrequire('./modules/es6.math.acosh');\nrequire('./modules/es6.math.asinh');\nrequire('./modules/es6.math.atanh');\nrequire('./modules/es6.math.cbrt');\nrequire('./modules/es6.math.clz32');\nrequire('./modules/es6.math.cosh');\nrequire('./modules/es6.math.expm1');\nrequire('./modules/es6.math.fround');\nrequire('./modules/es6.math.hypot');\nrequire('./modules/es6.math.imul');\nrequire('./modules/es6.math.log10');\nrequire('./modules/es6.math.log1p');\nrequire('./modules/es6.math.log2');\nrequire('./modules/es6.math.sign');\nrequire('./modules/es6.math.sinh');\nrequire('./modules/es6.math.tanh');\nrequire('./modules/es6.math.trunc');\nrequire('./modules/es6.string.from-code-point');\nrequire('./modules/es6.string.raw');\nrequire('./modules/es6.string.trim');\nrequire('./modules/es6.string.iterator');\nrequire('./modules/es6.string.code-point-at');\nrequire('./modules/es6.string.ends-with');\nrequire('./modules/es6.string.includes');\nrequire('./modules/es6.string.repeat');\nrequire('./modules/es6.string.starts-with');\nrequire('./modules/es6.array.from');\nrequire('./modules/es6.array.of');\nrequire('./modules/es6.array.iterator');\nrequire('./modules/es6.array.species');\nrequire('./modules/es6.array.copy-within');\nrequire('./modules/es6.array.fill');\nrequire('./modules/es6.array.find');\nrequire('./modules/es6.array.find-index');\nrequire('./modules/es6.regexp.constructor');\nrequire('./modules/es6.regexp.flags');\nrequire('./modules/es6.regexp.match');\nrequire('./modules/es6.regexp.replace');\nrequire('./modules/es6.regexp.search');\nrequire('./modules/es6.regexp.split');\nrequire('./modules/es6.promise');\nrequire('./modules/es6.map');\nrequire('./modules/es6.set');\nrequire('./modules/es6.weak-map');\nrequire('./modules/es6.weak-set');\nrequire('./modules/es6.reflect.apply');\nrequire('./modules/es6.reflect.construct');\nrequire('./modules/es6.reflect.define-property');\nrequire('./modules/es6.reflect.delete-property');\nrequire('./modules/es6.reflect.enumerate');\nrequire('./modules/es6.reflect.get');\nrequire('./modules/es6.reflect.get-own-property-descriptor');\nrequire('./modules/es6.reflect.get-prototype-of');\nrequire('./modules/es6.reflect.has');\nrequire('./modules/es6.reflect.is-extensible');\nrequire('./modules/es6.reflect.own-keys');\nrequire('./modules/es6.reflect.prevent-extensions');\nrequire('./modules/es6.reflect.set');\nrequire('./modules/es6.reflect.set-prototype-of');\nrequire('./modules/es7.array.includes');\nrequire('./modules/es7.string.at');\nrequire('./modules/es7.string.pad-left');\nrequire('./modules/es7.string.pad-right');\nrequire('./modules/es7.string.trim-left');\nrequire('./modules/es7.string.trim-right');\nrequire('./modules/es7.regexp.escape');\nrequire('./modules/es7.object.get-own-property-descriptors');\nrequire('./modules/es7.object.values');\nrequire('./modules/es7.object.entries');\nrequire('./modules/es7.map.to-json');\nrequire('./modules/es7.set.to-json');\nrequire('./modules/js.array.statics');\nrequire('./modules/web.timers');\nrequire('./modules/web.immediate');\nrequire('./modules/web.dom.iterable');\nmodule.exports = require('./modules/$.core');\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/core-js/shim.js\n ** module id = 4\n ** module chunks = 0\n **/","'use strict';\nvar $ = require('./$')\n , $export = require('./$.export')\n , DESCRIPTORS = require('./$.descriptors')\n , createDesc = require('./$.property-desc')\n , html = require('./$.html')\n , cel = require('./$.dom-create')\n , has = require('./$.has')\n , cof = require('./$.cof')\n , invoke = require('./$.invoke')\n , fails = require('./$.fails')\n , anObject = require('./$.an-object')\n , aFunction = require('./$.a-function')\n , isObject = require('./$.is-object')\n , toObject = require('./$.to-object')\n , toIObject = require('./$.to-iobject')\n , toInteger = require('./$.to-integer')\n , toIndex = require('./$.to-index')\n , toLength = require('./$.to-length')\n , IObject = require('./$.iobject')\n , IE_PROTO = require('./$.uid')('__proto__')\n , createArrayMethod = require('./$.array-methods')\n , arrayIndexOf = require('./$.array-includes')(false)\n , ObjectProto = Object.prototype\n , ArrayProto = Array.prototype\n , arraySlice = ArrayProto.slice\n , arrayJoin = ArrayProto.join\n , defineProperty = $.setDesc\n , getOwnDescriptor = $.getDesc\n , defineProperties = $.setDescs\n , factories = {}\n , IE8_DOM_DEFINE;\n\nif(!DESCRIPTORS){\n IE8_DOM_DEFINE = !fails(function(){\n return defineProperty(cel('div'), 'a', {get: function(){ return 7; }}).a != 7;\n });\n $.setDesc = function(O, P, Attributes){\n if(IE8_DOM_DEFINE)try {\n return defineProperty(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)anObject(O)[P] = Attributes.value;\n return O;\n };\n $.getDesc = function(O, P){\n if(IE8_DOM_DEFINE)try {\n return getOwnDescriptor(O, P);\n } catch(e){ /* empty */ }\n if(has(O, P))return createDesc(!ObjectProto.propertyIsEnumerable.call(O, P), O[P]);\n };\n $.setDescs = defineProperties = function(O, Properties){\n anObject(O);\n var keys = $.getKeys(Properties)\n , length = keys.length\n , i = 0\n , P;\n while(length > i)$.setDesc(O, P = keys[i++], Properties[P]);\n return O;\n };\n}\n$export($export.S + $export.F * !DESCRIPTORS, 'Object', {\n // 19.1.2.6 / 15.2.3.3 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $.getDesc,\n // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n defineProperty: $.setDesc,\n // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n defineProperties: defineProperties\n});\n\n // IE 8- don't enum bug keys\nvar keys1 = ('constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,' +\n 'toLocaleString,toString,valueOf').split(',')\n // Additional keys for getOwnPropertyNames\n , keys2 = keys1.concat('length', 'prototype')\n , keysLen1 = keys1.length;\n\n// Create object with `null` prototype: use iframe Object with cleared prototype\nvar createDict = function(){\n // Thrash, waste and sodomy: IE GC bug\n var iframe = cel('iframe')\n , i = keysLen1\n , gt = '>'\n , iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write('*/\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/pages/page/media.js\n **/","import FormState, { Instance as FormStateInstance } from './state';\nimport Form, { Instance as FormInstance } from './form';\n\nimport Fields from './fields';\n\nexport default {\n Form: {\n Form,\n Instance: FormInstance\n },\n Fields,\n FormState: {\n FormState,\n Instance: FormStateInstance\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/forms/index.js\n **/","import $ from 'jquery';\nimport Immutable from 'immutable';\nimport '../utils/jquery-utils';\n\nlet FormLoadState = {};\n\nconst DOMBehaviors = {\n attach() {\n this.preventUnload();\n this.preventClickAway();\n },\n\n preventUnload() {\n if ($._data(window, 'events') && ($._data(window, 'events').beforeunload || []).filter((event) => event.namespace === '_grav')) {\n return;\n }\n\n // Catch browser uri change / refresh attempt and stop it if the form state is dirty\n $(window).on('beforeunload._grav', () => {\n if (Instance.equals() === false) {\n return `You have made changes on this page that you have not yet confirmed. If you navigate away from this page you will lose your unsaved changes.`;\n }\n });\n },\n\n preventClickAway() {\n let selector = 'a[href]:not([href^=#])';\n\n if ($._data($(selector).get(0), 'events') && ($._data($(selector).get(0), 'events').click || []).filter((event) => event.namespace === '_grav')) {\n return;\n }\n\n // Prevent clicking away if the form state is dirty\n // instead, display a confirmation before continuing\n $(selector).on('click._grav', function(event) {\n let isClean = Instance.equals();\n if (isClean === null || isClean) { return true; }\n\n event.preventDefault();\n\n let destination = $(this).attr('href');\n let modal = $('[data-remodal-id=\"changes\"]');\n let lookup = $.remodal.lookup[modal.data('remodal')];\n let buttons = $('a.button', modal);\n\n let handler = function(event) {\n event.preventDefault();\n let action = $(this).data('leave-action');\n\n buttons.off('click', handler);\n lookup.close();\n\n if (action === 'continue') {\n $(window).off('beforeunload');\n window.location.href = destination;\n }\n };\n\n buttons.on('click', handler);\n lookup.open();\n });\n }\n};\n\nexport default class FormState {\n constructor(options = {\n ignore: [],\n form_id: 'blueprints'\n }) {\n this.options = options;\n this.refresh();\n\n if (!this.form || !this.fields.length) { return; }\n FormLoadState = this.collect();\n DOMBehaviors.attach();\n }\n\n refresh() {\n this.form = $(`form#${this.options.form_id}`).filter(':noparents(.remodal)');\n this.fields = $(`form#${this.options.form_id} *, [form=\"${this.options.form_id}\"]`).filter(':input:not(.no-form)').filter(':noparents(.remodal)');\n\n return this;\n }\n\n collect() {\n if (!this.form || !this.fields.length) { return; }\n\n let values = {};\n this.refresh().fields.each((index, field) => {\n field = $(field);\n let name = field.prop('name');\n let type = field.prop('type');\n let value;\n\n switch (type) {\n case 'checkbox':\n case 'radio':\n value = field.is(':checked');\n break;\n default:\n value = field.val();\n }\n\n if (name && !~this.options.ignore.indexOf(name)) {\n values[name] = value;\n }\n });\n\n return Immutable.OrderedMap(values);\n }\n\n // When the form doesn't exist or there are no fields, `equals` returns `null`\n // for this reason, _NEVER_ check with !Instance.equals(), use Instance.equals() === false\n equals() {\n if (!this.form || !this.fields.length) { return null; }\n return Immutable.is(FormLoadState, this.collect());\n }\n};\n\nexport let Instance = new FormState();\n\nexport { DOMBehaviors };\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/forms/state.js\n **/","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.Immutable = factory();\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step > 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n findEntry: function(predicate, context) {\n var found;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findLastEntry: function(predicate, context) {\n return this.toSeq().reverse().findEntry(predicate, context);\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n // Temporary warning about using length\n (function () {\n try {\n Object.defineProperty(IterablePrototype, 'length', {\n get: function () {\n if (!Iterable.noLengthWarning) {\n var stack;\n try {\n throw new Error();\n } catch (error) {\n stack = error.stack;\n }\n if (stack.indexOf('_wrapObject') === -1) {\n console && console.warn && console.warn(\n 'iterable.length has been deprecated, '+\n 'use iterable.size or iterable.count(). '+\n 'This warning will become a silent error in a future version. ' +\n stack\n );\n return this.size;\n }\n }\n }\n });\n } catch (e) {}\n })();\n\n\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLastKey: function(predicate, context) {\n return this.toSeq().reverse().findKey(predicate, context);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n lastKeyOf: function(searchValue) {\n return this.findLastKey(function(value ) {return is(value, searchValue)});\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.toKeyedSeq().keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.toKeyedSeq().reverse().keyOf(searchValue);\n return key === undefined ? -1 : key;\n\n // var index =\n // return this.toSeq().reverse().indexOf(searchValue);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var key = this.toKeyedSeq().findLastKey(predicate, context);\n return key === undefined ? -1 : key;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : value;\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/immutable/dist/immutable.js\n ** module id = 229\n ** module chunks = 0\n **/","import $ from 'jquery';\n\n// jQuery no parents filter\n$.expr[':']['noparents'] = $.expr.createPseudo((text) => (element) => $(element).parents(text).length < 1);\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/utils/jquery-utils.js\n **/","import $ from 'jquery';\nimport toastr from '../utils/toastr';\nimport { translations } from 'grav-config';\nimport { Instance as FormState } from './state';\n\nexport default class Form {\n constructor(form) {\n this.form = $(form);\n if (!this.form.length || this.form.prop('tagName').toLowerCase() !== 'form') { return; }\n\n this.form.on('submit', (event) => {\n if (FormState.equals()) {\n event.preventDefault();\n toastr.info(translations.PLUGIN_ADMIN.NOTHING_TO_SAVE);\n }\n });\n\n this._attachShortcuts();\n this._attachToggleables();\n this._attachDisabledFields();\n\n this.observer = new MutationObserver(this.addedNodes);\n this.form.each((index, form) => this.observer.observe(form, { subtree: true, childList: true }));\n }\n\n _attachShortcuts() {\n // CTRL + S / CMD + S - shortcut for [Save] when available\n let saveTask = $('[name=\"task\"][value=\"save\"]').filter(function(index, element) {\n element = $(element);\n return !(element.parents('.remodal-overlay').length);\n });\n\n if (saveTask.length) {\n $(window).on('keydown', function(event) {\n var key = String.fromCharCode(event.which).toLowerCase();\n if ((event.ctrlKey || event.metaKey) && key === 's') {\n event.preventDefault();\n saveTask.click();\n }\n });\n }\n }\n\n _attachToggleables() {\n let query = '[data-grav-field=\"toggleable\"] input[type=\"checkbox\"]';\n\n this.form.on('change', query, (event) => {\n let toggle = $(event.target);\n let enabled = toggle.is(':checked');\n let parent = toggle.parents('.form-field');\n let label = parent.find('label.toggleable');\n let fields = parent.find('.form-data');\n let inputs = fields.find('input, select, textarea');\n\n label.add(fields).css('opacity', enabled ? '' : 0.7);\n inputs.map((index, input) => {\n let isSelectize = input.selectize;\n input = $(input);\n\n if (isSelectize) {\n isSelectize[enabled ? 'enable' : 'disable']();\n } else {\n input.prop('disabled', !enabled);\n }\n });\n });\n\n this.form.find(query).trigger('change');\n }\n\n _attachDisabledFields() {\n let prefix = '.form-field-toggleable .form-data';\n let query = [];\n\n ['input', 'select', 'label[for]', 'textarea', '.selectize-control'].forEach((item) => {\n query.push(`${prefix} ${item}`);\n });\n\n this.form.on('mousedown', query.join(', '), (event) => {\n let target = $(event.target);\n let input = target;\n let isFor = input.prop('for');\n let isSelectize = (input.hasClass('selectize-control') || input.parents('.selectize-control')).length;\n\n if (isFor) { input = $(`[id=\"${isFor}\"]`); }\n if (isSelectize) { input = input.closest('.selectize-control').siblings('select[name]'); }\n\n if (!input.prop('disabled')) { return true; }\n\n let toggle = input.closest('.form-field').find('[data-grav-field=\"toggleable\"] input[type=\"checkbox\"]');\n toggle.trigger('click');\n });\n }\n\n addedNodes(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.type !== 'childList' || !mutation.addedNodes) { return; }\n\n $('body').trigger('mutation._grav', mutation.target, mutation, this);\n });\n }\n}\n\nexport let Instance = new Form('form#blueprints');\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/forms/form.js\n **/","import SelectizeField, { Instance as SelectizeFieldInstance } from './selectize';\nimport ArrayField, { Instance as ArrayFieldInstance } from './array';\nimport CollectionsField, { Instance as CollectionsFieldInstance } from './collections';\n\nexport default {\n SelectizeField: {\n SelectizeField,\n Instance: SelectizeFieldInstance\n },\n ArrayField: {\n ArrayField,\n Instance: ArrayFieldInstance\n },\n CollectionsField: {\n CollectionsField,\n Instance: CollectionsFieldInstance\n }\n};\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/forms/fields/index.js\n **/","import $ from 'jquery';\nimport 'selectize';\n\nexport default class SelectizeField {\n constructor(options = {}) {\n this.options = Object.assign({}, options);\n this.elements = [];\n\n $('[data-grav-selectize]').each((index, element) => this.add(element));\n $('body').on('mutation._grav', this._onAddedNodes.bind(this));\n }\n\n add(element) {\n element = $(element);\n let tag = element.prop('tagName').toLowerCase();\n let isInput = tag === 'input' || tag === 'select';\n\n let data = (isInput ? element.closest('[data-grav-selectize]') : element).data('grav-selectize') || {};\n let field = (isInput ? element : element.find('input, select'));\n\n if (!field.length || field.get(0).selectize) { return; }\n field.selectize(data);\n\n this.elements.push(field.data('selectize'));\n }\n\n _onAddedNodes(event, target/* , record, instance */) {\n let fields = $(target).find('select.fancy, input.fancy');\n if (!fields.length) { return; }\n\n fields.each((index, field) => this.add(field));\n }\n}\n\nexport let Instance = new SelectizeField();\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/forms/fields/selectize.js\n **/","import $ from 'jquery';\n\nlet body = $('body');\n\nclass Template {\n constructor(container) {\n this.container = $(container);\n\n if (this.getName() === undefined) {\n this.container = this.container.closest('[data-grav-array-name]');\n }\n }\n\n getName() {\n return this.container.data('grav-array-name') || '';\n }\n\n getKeyPlaceholder() {\n return this.container.data('grav-array-keyname') || 'Key';\n }\n\n getValuePlaceholder() {\n return this.container.data('grav-array-valuename') || 'Value';\n }\n\n isValueOnly() {\n return this.container.find('[data-grav-array-mode=\"value_only\"]:first').length || false;\n }\n\n shouldBeDisabled() {\n // check for toggleables, if field is toggleable and it's not enabled, render disabled\n let toggle = this.container.closest('.form-field').find('[data-grav-field=\"toggleable\"] input[type=\"checkbox\"]');\n return toggle.length && toggle.is(':not(:checked)');\n }\n\n getNewRow() {\n let tpl = '';\n\n if (this.isValueOnly()) {\n tpl += `\n
\n \n `;\n } else {\n tpl += `\n
\n \n \n `;\n }\n\n tpl += `\n \n \n
`;\n\n return tpl;\n }\n}\n\nexport default class ArrayField {\n constructor() {\n body.on('input', '[data-grav-array-type=\"key\"], [data-grav-array-type=\"value\"]', (event) => this.actionInput(event));\n body.on('click touch', '[data-grav-array-action]', (event) => this.actionEvent(event));\n }\n\n actionInput(event) {\n let element = $(event.target);\n let type = element.data('grav-array-type');\n\n this._setTemplate(element);\n\n let template = element.data('array-template');\n let keyElement = type === 'key' ? element : element.siblings('[data-grav-array-type=\"key\"]:first');\n let valueElement = type === 'value' ? element : element.siblings('[data-grav-array-type=\"value\"]:first');\n\n let name = `${template.getName()}[${!template.isValueOnly() ? keyElement.val() : this.getIndexFor(element)}]`;\n valueElement.attr('name', !valueElement.val() ? template.getName() : name);\n\n this.refreshNames(template);\n }\n\n actionEvent(event) {\n let element = $(event.target);\n let action = element.data('grav-array-action');\n\n this._setTemplate(element);\n\n this[`${action}Action`](element);\n }\n\n addAction(element) {\n let template = element.data('array-template');\n let row = element.closest('[data-grav-array-type=\"row\"]');\n\n row.after(template.getNewRow());\n }\n\n remAction(element) {\n let template = element.data('array-template');\n let row = element.closest('[data-grav-array-type=\"row\"]');\n let isLast = !row.siblings().length;\n\n if (isLast) {\n let newRow = $(template.getNewRow());\n row.after(newRow);\n newRow.find('[data-grav-array-type=\"value\"]:last').attr('name', template.getName());\n }\n\n row.remove();\n this.refreshNames(template);\n }\n\n refreshNames(template) {\n if (!template.isValueOnly()) { return; }\n\n let row = template.container.find('> div > [data-grav-array-type=\"row\"]');\n let inputs = row.find('[name]:not([name=\"\"])');\n\n inputs.each((index, input) => {\n input = $(input);\n let name = input.attr('name');\n name = name.replace(/\\[\\d+\\]$/, `[${index}]`);\n input.attr('name', name);\n });\n\n if (!inputs.length) {\n row.find('[data-grav-array-type=\"value\"]').attr('name', template.getName());\n }\n }\n\n getIndexFor(element) {\n let template = element.data('array-template');\n let row = element.closest('[data-grav-array-type=\"row\"]');\n\n return template.container.find(`${template.isValueOnly() ? '> div ' : ''} > [data-grav-array-type=\"row\"]`).index(row);\n }\n\n _setTemplate(element) {\n if (!element.data('array-template')) {\n element.data('array-template', new Template(element.closest('[data-grav-array-name]')));\n }\n }\n}\n\nexport let Instance = new ArrayField();\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/forms/fields/array.js\n **/","import $ from 'jquery';\nimport Sortable from 'sortablejs';\nimport '../../utils/jquery-utils';\n\nexport default class CollectionsField {\n constructor() {\n this.lists = $();\n\n $('[data-type=\"collection\"]').each((index, list) => this.addList(list));\n $('body').on('mutation._grav', this._onAddedNodes.bind(this));\n\n }\n\n addList(list) {\n list = $(list);\n this.lists = this.lists.add(list);\n\n list.on('click', '> .collection-actions [data-action=\"add\"]', (event) => this.addItem(event));\n list.on('click', '> ul > li > .item-actions [data-action=\"delete\"]', (event) => this.removeItem(event));\n\n list.find('[data-collection-holder]').each((index, container) => {\n container = $(container);\n if (container.data('collection-sort')) { return; }\n\n container.data('collection-sort', new Sortable(container.get(0), {\n forceFallback: true,\n animation: 150,\n onUpdate: () => this.reindex(container)\n }));\n });\n }\n\n addItem(event) {\n let button = $(event.currentTarget);\n let list = button.closest('[data-type=\"collection\"]');\n let template = $(list.find('> [data-collection-template=\"new\"]').data('collection-template-html'));\n\n list.find('> [data-collection-holder]').append(template);\n this.reindex(list);\n // button.data('key-index', keyIndex + 1);\n\n // process markdown editors\n /* var field = template.find('[name]').filter('textarea');\n if (field.length && field.data('grav-mdeditor') && typeof MDEditors !== 'undefined') {\n MDEditors.add(field);\n }*/\n }\n\n removeItem(event) {\n let button = $(event.currentTarget);\n let item = button.closest('[data-collection-item]');\n let list = button.closest('[data-type=\"collection\"]');\n\n item.remove();\n this.reindex(list);\n }\n\n reindex(list) {\n list = $(list).closest('[data-type=\"collection\"]');\n\n let items = list.find('> ul > [data-collection-item]');\n\n items.each((index, item) => {\n item = $(item);\n item.attr('data-collection-key', index);\n\n ['name', 'data-grav-field-name', 'id', 'for'].forEach((prop) => {\n item.find('[' + prop + ']').each(function() {\n let element = $(this);\n let indexes = [];\n element.parents('[data-collection-key]').map((idx, parent) => indexes.push($(parent).attr('data-collection-key')));\n indexes.reverse();\n\n let replaced = element.attr(prop).replace(/\\[(\\d+|\\*)\\]/g, (/* str, p1, offset */) => {\n return `[${indexes.shift()}]`;\n });\n\n element.attr(prop, replaced);\n });\n });\n\n });\n }\n\n _onAddedNodes(event, target/* , record, instance */) {\n let collections = $(target).find('[data-type=\"collection\"]');\n if (!collections.length) { return; }\n\n collections.each((index, collection) => {\n collection = $(collection);\n if (!~this.lists.index(collection)) {\n this.addList(collection);\n }\n });\n }\n}\n\nexport let Instance = new CollectionsField();\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/forms/fields/collections.js\n **/","import $ from 'jquery';\n\n// Plugins sliders details\n$('.gpm-name, .gpm-actions').on('click', function(e) {\n let element = $(this);\n let target = $(e.target);\n let tag = target.prop('tagName').toLowerCase();\n\n if (tag === 'a' || element.parent('a').length) { return true; }\n\n let wrapper = element.siblings('.gpm-details').find('.table-wrapper');\n\n wrapper.slideToggle({\n duration: 350,\n complete: () => {\n let visible = wrapper.is(':visible');\n wrapper\n .closest('tr')\n .find('.gpm-details-expand i')\n .removeClass('fa-chevron-' + (visible ? 'down' : 'up'))\n .addClass('fa-chevron-' + (visible ? 'up' : 'down'));\n }\n });\n});\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/plugins/index.js\n **/","import $ from 'jquery';\n\n// Themes Switcher Warning\n$(document).on('mousedown', '[data-remodal-target=\"theme-switch-warn\"]', (event) => {\n let name = $(event.target).closest('[data-gpm-theme]').find('.gpm-name a:first').text();\n let remodal = $('.remodal.theme-switcher');\n\n remodal.find('strong').text(name);\n remodal.find('.button.continue').attr('href', $(event.target).attr('href'));\n});\n\n\n\n/** WEBPACK FOOTER **\n ** ./app/themes/index.js\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/themes/grav/js/admin.min.js b/themes/grav/js/admin.min.js new file mode 100644 index 00000000..102d6eac --- /dev/null +++ b/themes/grav/js/admin.min.js @@ -0,0 +1,6 @@ +var Grav=webpackJsonpGrav([0],[function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),a=n(200),u=r(a),s=n(201),c=r(s),f=n(206),l=r(f),h=n(211),d=r(h),p=n(227),v=r(p);n(236),n(237),n(238),u["default"].start(),e["default"]={GPM:{GPM:o["default"],Instance:i.Instance},KeepAlive:u["default"],Dashboard:l["default"],Pages:d["default"],Forms:v["default"],Updates:{Updates:c["default"],Instance:s.Instance}}},function(t,e,n){(function(t){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n-1?e:t}function f(t,e){e=e||{};var n=e.body;if(f.prototype.isPrototypeOf(t)){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new r(t.headers)),this.method=t.method,this.mode=t.mode,n||(n=t._bodyInit,t.bodyUsed=!0)}else this.url=t;if(this.credentials=e.credentials||this.credentials||"omit",(e.headers||!this.headers)&&(this.headers=new r(e.headers)),this.method=c(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function l(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var n=t.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(r),decodeURIComponent(i))}}),e}function h(t){var e=new r,n=t.getAllResponseHeaders().trim().split("\n");return n.forEach(function(t){var n=t.trim().split(":"),r=n.shift().trim(),i=n.join(":").trim();e.append(r,i)}),e}function d(t,e){e||(e={}),this._initBody(t),this.type="default",this.status=e.status,this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText,this.headers=e.headers instanceof r?e.headers:new r(e.headers),this.url=e.url||""}if(!self.fetch){r.prototype.append=function(e,r){e=t(e),r=n(r);var i=this.map[e];i||(i=[],this.map[e]=i),i.push(r)},r.prototype["delete"]=function(e){delete this.map[t(e)]},r.prototype.get=function(e){var n=this.map[t(e)];return n?n[0]:null},r.prototype.getAll=function(e){return this.map[t(e)]||[]},r.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},r.prototype.set=function(e,r){this.map[t(e)]=[n(r)]},r.prototype.forEach=function(t,e){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){t.call(e,r,n,this)},this)},this)};var p={blob:"FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in self,arrayBuffer:"ArrayBuffer"in self},v=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];f.prototype.clone=function(){return new f(this)},s.call(f.prototype),s.call(d.prototype),d.prototype.clone=function(){return new d(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new r(this.headers),url:this.url})},d.error=function(){var t=new d(null,{status:0,statusText:""});return t.type="error",t};var y=[301,302,303,307,308];d.redirect=function(t,e){if(-1===y.indexOf(e))throw new RangeError("Invalid status code");return new d(null,{status:e,headers:{location:t}})},self.Headers=r,self.Request=f,self.Response=d,self.fetch=function(t,n){return new e(function(e,r){function i(){return"responseURL"in a?a.responseURL:/^X-Request-URL:/m.test(a.getAllResponseHeaders())?a.getResponseHeader("X-Request-URL"):void 0}var o;o=f.prototype.isPrototypeOf(t)&&!n?t:new f(t,n);var a=new XMLHttpRequest;a.onload=function(){var t=1223===a.status?204:a.status;if(100>t||t>599)return void r(new TypeError("Network request failed"));var n={status:t,statusText:a.statusText,headers:h(a),url:i()},o="response"in a?a.response:a.responseText;e(new d(o,n))},a.onerror=function(){r(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),"responseType"in a&&p.blob&&(a.responseType="blob"),o.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send("undefined"==typeof o._bodyInit?null:o._bodyInit)})},self.fetch.polyfill=!0}}(),t.exports=n.fetch}).call(n)}).call(e,n(3),function(){return this}())},function(t,e,n){(function(e){(function(){"use strict";if(n(4),n(191),e._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");e._babelPolyfill=!0,t.exports=e.Promise}).call(e)}).call(e,function(){return this}())},function(t,e,n){n(5),n(38),n(44),n(46),n(48),n(50),n(52),n(54),n(55),n(56),n(57),n(58),n(59),n(60),n(61),n(62),n(63),n(64),n(65),n(68),n(69),n(70),n(72),n(73),n(74),n(75),n(76),n(77),n(78),n(80),n(81),n(82),n(84),n(85),n(86),n(88),n(89),n(90),n(91),n(92),n(93),n(94),n(95),n(96),n(97),n(98),n(99),n(100),n(101),n(106),n(107),n(111),n(112),n(114),n(115),n(120),n(121),n(124),n(126),n(128),n(130),n(131),n(132),n(134),n(135),n(137),n(138),n(139),n(140),n(147),n(150),n(151),n(153),n(154),n(155),n(156),n(157),n(158),n(159),n(160),n(161),n(162),n(163),n(164),n(166),n(167),n(168),n(169),n(170),n(171),n(173),n(174),n(175),n(176),n(178),n(179),n(181),n(182),n(184),n(185),n(186),n(189),n(190),t.exports=n(9)},function(t,e,n){"use strict";var r,i=n(6),o=n(7),a=n(12),u=n(11),s=n(18),c=n(19),f=n(21),l=n(22),h=n(23),d=n(13),p=n(24),v=n(17),y=n(20),g=n(25),_=n(27),m=n(29),b=n(30),w=n(31),S=n(28),I=n(15)("__proto__"),x=n(32),O=n(37)(!1),k=Object.prototype,E=Array.prototype,M=E.slice,A=E.join,z=i.setDesc,D=i.getDesc,j=i.setDescs,P={};a||(r=!d(function(){return 7!=z(c("div"),"a",{get:function(){return 7}}).a}),i.setDesc=function(t,e,n){if(r)try{return z(t,e,n)}catch(i){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(p(t)[e]=n.value),t},i.getDesc=function(t,e){if(r)try{return D(t,e)}catch(n){}return f(t,e)?u(!k.propertyIsEnumerable.call(t,e),t[e]):void 0},i.setDescs=j=function(t,e){p(t);for(var n,r=i.getKeys(e),o=r.length,a=0;o>a;)i.setDesc(t,n=r[a++],e[n]);return t}),o(o.S+o.F*!a,"Object",{getOwnPropertyDescriptor:i.getDesc,defineProperty:i.setDesc,defineProperties:j});var N="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),L=N.concat("length","prototype"),T=N.length,F=function(){var t,e=c("iframe"),n=T,r=">";for(e.style.display="none",s.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(" + {%- endfilter -%}">
-
+
diff --git a/themes/grav/templates/forms/fields/markdown/markdown.html.twig b/themes/grav/templates/forms/fields/markdown/markdown.html.twig index eb37954e..21972844 100644 --- a/themes/grav/templates/forms/fields/markdown/markdown.html.twig +++ b/themes/grav/templates/forms/fields/markdown/markdown.html.twig @@ -9,7 +9,12 @@ {% block field %}
- +
-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/themes/grav/templates/forms/fields/order/order.html.twig b/themes/grav/templates/forms/fields/order/order.html.twig index aad5b139..64715929 100644 --- a/themes/grav/templates/forms/fields/order/order.html.twig +++ b/themes/grav/templates/forms/fields/order/order.html.twig @@ -15,7 +15,12 @@
- + {% if data.parent.header.content.items %} Parent setting order, ordering disabled {% elseif not data.visible %} @@ -33,17 +38,4 @@ {% endif %}
- diff --git a/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig b/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig index 47fd5287..e9ff8ab5 100644 --- a/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig +++ b/themes/grav/templates/forms/fields/pagemedia/pagemedia.html.twig @@ -4,158 +4,8 @@

{{ field.label|tu }}

-
+
{{ value|join("\n") }} -
{% else %} diff --git a/themes/grav/templates/forms/fields/pagemediaselect/pagemediaselect.html.twig b/themes/grav/templates/forms/fields/pagemediaselect/pagemediaselect.html.twig index 9d8bd13e..e00234fd 100644 --- a/themes/grav/templates/forms/fields/pagemediaselect/pagemediaselect.html.twig +++ b/themes/grav/templates/forms/fields/pagemediaselect/pagemediaselect.html.twig @@ -24,7 +24,7 @@ {% if field.classes is defined %}class="{{ field.classes }}" {% endif %} {% if field.id is defined %}id="{{ field.id|e }}" {% endif %} {% if field.style is defined %}style="{{ field.style|e }}" {% endif %} - {% if field.disabled or files is empty %}disabled="disabled"{% endif %} + {% if field.disabled or files is empty or isDisabledToggleable %}disabled="disabled"{% endif %} {% if field.autofocus in ['on', 'true', 1] %}autofocus="autofocus"{% endif %} {% if field.novalidate in ['on', 'true', 1] %}novalidate="novalidate"{% endif %} {% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %} diff --git a/themes/grav/templates/forms/fields/pages/pages.html.twig b/themes/grav/templates/forms/fields/pages/pages.html.twig index ff4f9b49..2e35101c 100644 --- a/themes/grav/templates/forms/fields/pages/pages.html.twig +++ b/themes/grav/templates/forms/fields/pages/pages.html.twig @@ -7,7 +7,7 @@ {% endfor %} {% endif %} - + {% if field.show_root and depth == 0 %} {% set depth = depth +1 %} @@ -43,6 +43,7 @@ {% if field.novalidate in ['on', 'true', 1] %}novalidate="novalidate"{% endif %} {% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %} {% if field.multiple in ['on', 'true', 1] %}multiple="multiple"{% endif %} + {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %} > {{ _self.options(field,pages,value, 0) }} diff --git a/themes/grav/templates/forms/fields/tabs/tabs.html.twig b/themes/grav/templates/forms/fields/tabs/tabs.html.twig index f28d87c0..17f5879c 100644 --- a/themes/grav/templates/forms/fields/tabs/tabs.html.twig +++ b/themes/grav/templates/forms/fields/tabs/tabs.html.twig @@ -9,7 +9,7 @@ {% endif %} {% if field.fields %} - {% for tab in field.fields %}{% endfor %} + {% for tab in field.fields %}{% endfor %}
{% for field in field.fields %} {% set value = data.value(field.name) %} diff --git a/themes/grav/templates/forms/fields/themeselect/themeselect.html.twig b/themes/grav/templates/forms/fields/themeselect/themeselect.html.twig index 78e2d5e6..edbc92bb 100644 --- a/themes/grav/templates/forms/fields/themeselect/themeselect.html.twig +++ b/themes/grav/templates/forms/fields/themeselect/themeselect.html.twig @@ -20,7 +20,7 @@ {% if field.novalidate in ['on', 'true', 1] %}novalidate="novalidate"{% endif %} {% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %} {% if field.multiple in ['on', 'true', 1] %}multiple="multiple"{% endif %} - > + {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}> {% for key, text in options %} {% endfor %} diff --git a/themes/grav/templates/forms/fields/toggle/toggle.html.twig b/themes/grav/templates/forms/fields/toggle/toggle.html.twig index 76f85371..29ff794a 100644 --- a/themes/grav/templates/forms/fields/toggle/toggle.html.twig +++ b/themes/grav/templates/forms/fields/toggle/toggle.html.twig @@ -39,6 +39,7 @@ {% if field.highlight is defined %} class="{{ field.highlight == '' ~ key ? 'highlight' : '' }}" {% endif %} + {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %} {% if field.toggleable %} {% if '' ~ key == '' ~ value %}checked="checked" {% endif %} {% if value is defined and (key == 1 or key == '1') %}checked="checked" {% endif %} diff --git a/themes/grav/templates/pages.html.twig b/themes/grav/templates/pages.html.twig index b6e17908..c7d18726 100644 --- a/themes/grav/templates/pages.html.twig +++ b/themes/grav/templates/pages.html.twig @@ -40,14 +40,14 @@ {% endblock %} {% block javascripts %} - {% do assets.addJs(theme_url~'/js/pages-all.js') %} + {#{% do assets.addJs(theme_url~'/js/pages-all.js') %} {% do assets.addJs(theme_url~'/js/speakingurl.min.js') %} {% do assets.addJs(theme_url~'/js/slugify.min.js') %} {% if mode == 'edit' %} {% do assets.addJs(theme_url~'/js/codemirror-compressed.js') %} {% do assets.addJs(theme_url~'/js/mdeditor.js') %} {% do assets.addJs(theme_url~'/js/dropzone.min.js') %} - {% endif %} + {% endif %}#} {{ parent() }} {% endblock %} @@ -260,7 +260,7 @@ {% else %}
- +
diff --git a/themes/grav/templates/partials/base.html.twig b/themes/grav/templates/partials/base.html.twig index 651f1d09..68cb434c 100644 --- a/themes/grav/templates/partials/base.html.twig +++ b/themes/grav/templates/partials/base.html.twig @@ -37,7 +37,9 @@ {% include 'partials/javascript-config.html.twig' %} {% block javascripts %} {% do assets.add('jquery',101) %} - {% do assets.addJs(theme_url~'/js/modernizr.custom.71422.js') %} + {% do assets.addJs(theme_url~'/js/vendor.js', { 'loading':'defer' }) %} + {% do assets.addJs(theme_url~'/js/admin.js' , { 'loading':'defer' }) %} + {#{% do assets.addJs(theme_url~'/js/modernizr.custom.71422.js') %} {% do assets.addJs(theme_url~'/js/chartist.min.js') %} {% do assets.addJs(theme_url~'/js/selectize.min.js') %} {% do assets.addJS(theme_url~'/js/sortable.min.js') %} @@ -58,11 +60,11 @@ {% do assets.addJs(theme_url~'/js/forms/fields/selectize.js') %} {% do assets.addJs(theme_url~'/js/forms/fields/checkboxes.js') %} {% do assets.addJs(theme_url~'/js/forms/fields/toggle.js') %} - {% do assets.addJs(theme_url~'/js/forms.js') %} + {% do assets.addJs(theme_url~'/js/forms.js') %}#} - {% if browser.getBrowser == 'msie' or browser.getBrowser == 'edge' %} + {#{% if browser.getBrowser == 'msie' or browser.getBrowser == 'edge' %} {% do assets.addJs(theme_url~'/js/form-attr.polyfill.js') %} - {% endif %} + {% endif %}#} {{ assets.js() }} {% endblock %} diff --git a/themes/grav/templates/partials/blueprints.html.twig b/themes/grav/templates/partials/blueprints.html.twig index b5342c97..5f5e040a 100644 --- a/themes/grav/templates/partials/blueprints.html.twig +++ b/themes/grav/templates/partials/blueprints.html.twig @@ -17,7 +17,7 @@
{% endif %} {% endfor %} - +{{ dump(data.extra) }} {% if data.extra %} {% for name, value in data.extra %} {% if name not in ['_json','task','admin-nonce'] %} diff --git a/themes/grav/templates/partials/dashboard-maintenance.html.twig b/themes/grav/templates/partials/dashboard-maintenance.html.twig index 4c040ece..a1068968 100644 --- a/themes/grav/templates/partials/dashboard-maintenance.html.twig +++ b/themes/grav/templates/partials/dashboard-maintenance.html.twig @@ -5,40 +5,25 @@

{{ "PLUGIN_ADMIN.MAINTENANCE"|tu }}

-
+

 

-
+
- {{ backup.days }}{{ "PLUGIN_ADMIN.DAYS"|tu|lower }}

{{ "PLUGIN_ADMIN.LAST_BACKUP"|tu }}

- +
-{% endif %} \ No newline at end of file +{% endif %} diff --git a/themes/grav/templates/partials/dashboard-statistics.html.twig b/themes/grav/templates/partials/dashboard-statistics.html.twig index db3402fa..901c5e0e 100644 --- a/themes/grav/templates/partials/dashboard-statistics.html.twig +++ b/themes/grav/templates/partials/dashboard-statistics.html.twig @@ -1,39 +1,8 @@ {% if authorize(['admin.statistics', 'admin.super']) %} -
+

{{ "PLUGIN_ADMIN.STATISTICS"|tu }}

-
{{ popularity.getDailyTotal }} @@ -50,4 +19,4 @@
-{% endif %} \ No newline at end of file +{% endif %} diff --git a/themes/grav/templates/partials/page-move.html.twig b/themes/grav/templates/partials/page-move.html.twig index 6f576560..4ab50ade 100644 --- a/themes/grav/templates/partials/page-move.html.twig +++ b/themes/grav/templates/partials/page-move.html.twig @@ -11,7 +11,7 @@ {% endfor %}
- {{ "PLUGIN_ADMIN.CANCEL"|tu }} +
diff --git a/themes/grav/templates/partials/plugins-details.html.twig b/themes/grav/templates/partials/plugins-details.html.twig index 78148045..089a844d 100644 --- a/themes/grav/templates/partials/plugins-details.html.twig +++ b/themes/grav/templates/partials/plugins-details.html.twig @@ -42,3 +42,17 @@ {{ "PLUGIN_ADMIN.INSTALL_PLUGIN"|tu }}
{% endif %} + +
+
+

{{ "PLUGIN_ADMIN.MODAL_CHANGED_DETECTED_TITLE"|tu }}

+

+ {{ "PLUGIN_ADMIN.MODAL_CHANGED_DETECTED_DESC"|tu }} +

+
+ +
+
diff --git a/themes/grav/templates/partials/themes-details.html.twig b/themes/grav/templates/partials/themes-details.html.twig index 3cd5c71f..94093c6e 100644 --- a/themes/grav/templates/partials/themes-details.html.twig +++ b/themes/grav/templates/partials/themes-details.html.twig @@ -111,6 +111,16 @@
{% endif %} - - - +
+
+

{{ "PLUGIN_ADMIN.MODAL_CHANGED_DETECTED_TITLE"|tu }}

+

+ {{ "PLUGIN_ADMIN.MODAL_CHANGED_DETECTED_DESC"|tu }} +

+
+ +
+
diff --git a/themes/grav/templates/partials/themes-list.html.twig b/themes/grav/templates/partials/themes-list.html.twig index 3e6e4f54..1a58737f 100644 --- a/themes/grav/templates/partials/themes-list.html.twig +++ b/themes/grav/templates/partials/themes-list.html.twig @@ -58,7 +58,7 @@


- {{ "PLUGIN_ADMIN.CANCEL"|tu }} + {{ "PLUGIN_ADMIN.CONTINUE"|tu }}
diff --git a/themes/grav/templates/plugins.html.twig b/themes/grav/templates/plugins.html.twig index 3d8b17d0..21b1f04a 100644 --- a/themes/grav/templates/plugins.html.twig +++ b/themes/grav/templates/plugins.html.twig @@ -24,8 +24,8 @@ {% endblock %} {% block javascripts %} - {% do assets.addJs(theme_url~'/js/codemirror-compressed.js') %} - {% do assets.addJs(theme_url~'/js/mdeditor.js') %} + {#{% do assets.addJs(theme_url~'/js/codemirror-compressed.js') %} + {% do assets.addJs(theme_url~'/js/mdeditor.js') %}#} {{ parent() }} {% endblock %} {% endif %} diff --git a/themes/grav/templates/themes.html.twig b/themes/grav/templates/themes.html.twig index 36631310..e5377c1b 100644 --- a/themes/grav/templates/themes.html.twig +++ b/themes/grav/templates/themes.html.twig @@ -24,8 +24,8 @@ {% endblock %} {% block javascripts %} - {% do assets.addJs(theme_url~'/js/codemirror-compressed.js') %} - {% do assets.addJs(theme_url~'/js/mdeditor.js') %} + {#{% do assets.addJs(theme_url~'/js/codemirror-compressed.js') %} + {% do assets.addJs(theme_url~'/js/mdeditor.js') %}#} {{ parent() }} {% endblock %} {% endif %} diff --git a/themes/grav/webpack.conf.js b/themes/grav/webpack.conf.js new file mode 100644 index 00000000..aa64aedc --- /dev/null +++ b/themes/grav/webpack.conf.js @@ -0,0 +1,44 @@ +var path = require('path'), + webpack = require('webpack'); + +module.exports = { + entry: { + app: './app/main.js', + vendor: [ + 'chartist', + 'selectize', + 'remodal', + 'toastr', + 'bootstrap', + 'sortablejs', + 'jquery-slugify', + 'dropzone', + 'eonasdan-bootstrap-datetimepicker' + ] + }, + output: { + path: path.resolve(__dirname, 'js'), + library: 'Grav' + }, + externals: { + jquery: 'jQuery', + 'grav-config': 'GravAdmin' + }, + module: { + preLoaders: [ + { + test: /\.js$/, + loader: 'eslint', + exclude: /node_modules/ + } + ], + loaders: [ + { + test: /\.js$/, + loader: 'babel', + exclude: /node_modules/, + query: { presets: ['es2015'] } + } + ] + } +};