diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ca4b26f..650e34f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # v1.10.8 ## mm/dd/2021 +1. [](#improved) + * Include alt text and title for images added to the editor [#2098](https://github.com/getgrav/grav-plugin-admin/issues/2098) 1. [](#bugfix) * Fixed issue replacing `wildcard` field names in flex collections [#2092](https://github.com/getgrav/grav-plugin-admin/pull/2092) diff --git a/themes/grav/app/forms/fields/files.js b/themes/grav/app/forms/fields/files.js index 5b15a422..00052c1d 100644 --- a/themes/grav/app/forms/fields/files.js +++ b/themes/grav/app/forms/fields/files.js @@ -335,7 +335,9 @@ export function UriToMarkdown(uri) { uri = uri.replace(/\(/g, '%28'); uri = uri.replace(/\)/g, '%29'); - return uri.match(/\.(jpe?g|png|gif|svg|mp4|webm|ogv|mov)$/i) ? `` : `[${decodeURI(uri)}](${uri})`; + const title = uri.split('.').slice(0, -1).join('.'); + + return uri.match(/\.(jpe?g|png|gif|svg|mp4|webm|ogv|mov)$/i) ? `` : `[${decodeURI(uri)}](${uri})`; } let instances = []; diff --git a/themes/grav/js/admin.min.js b/themes/grav/js/admin.min.js index dbc52a19..ebd0f804 100644 --- a/themes/grav/js/admin.min.js +++ b/themes/grav/js/admin.min.js @@ -83,7 +83,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ CollectionsField,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var sortablejs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! sortablejs */ \"./node_modules/sortablejs/modular/sortable.complete.esm.js\");\n/* harmony import */ var _utils_jquery_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/jquery-utils */ \"./app/utils/jquery-utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar CollectionsField = /*#__PURE__*/function () {\n function CollectionsField() {\n var _this = this;\n\n _classCallCheck(this, CollectionsField);\n\n this.lists = jquery__WEBPACK_IMPORTED_MODULE_0___default()();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-type=\"collection\"]').each(function (index, list) {\n return _this.addList(list);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('mutation._grav', this._onAddedNodes.bind(this));\n }\n\n _createClass(CollectionsField, [{\n key: \"addList\",\n value: function addList(list) {\n var _this2 = this;\n\n list = jquery__WEBPACK_IMPORTED_MODULE_0___default()(list);\n this.lists = this.lists.add(list);\n list.on('click', '> .collection-actions [data-action=\"add\"]', function (event) {\n return _this2.addItem(event);\n });\n list.on('click', '> ul > li > .item-actions [data-action=\"delete\"]', function (event) {\n return _this2.removeItem(event);\n });\n list.on('click', '> ul > li > .item-actions [data-action=\"collapse\"]', function (event) {\n return _this2.collapseItem(event);\n });\n list.on('click', '> ul > li > .item-actions [data-action=\"expand\"]', function (event) {\n return _this2.expandItem(event);\n });\n list.on('click', '> .collection-actions [data-action-sort=\"date\"]', function (event) {\n return _this2.sortItems(event);\n });\n list.on('click', '> .collection-actions [data-action=\"collapse_all\"]', function (event) {\n return _this2.collapseItems(event);\n });\n list.on('click', '> .collection-actions [data-action=\"expand_all\"]', function (event) {\n return _this2.expandItems(event);\n });\n list.on('input change', '[data-key-observe]', function (event) {\n return _this2.observeKey(event);\n });\n list.find('[data-collection-holder]').each(function (index, container) {\n container = jquery__WEBPACK_IMPORTED_MODULE_0___default()(container);\n\n if (container.data('collection-sort') || container[0].hasAttribute('data-collection-nosort')) {\n return;\n }\n\n container.data('collection-sort', new sortablejs__WEBPACK_IMPORTED_MODULE_1__.default(container.get(0), {\n forceFallback: false,\n handle: '.collection-sort',\n animation: 150,\n onUpdate: function onUpdate() {\n return _this2.reindex(container);\n }\n }));\n });\n\n this._updateActionsStateBasedOnMinMax(list);\n }\n }, {\n key: \"addItem\",\n value: function addItem(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var position = button.data('action-add') || 'bottom';\n var list = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]'));\n var template = jquery__WEBPACK_IMPORTED_MODULE_0___default()(list.find('> [data-collection-template=\"new\"]').data('collection-template-html'));\n\n this._updateActionsStateBasedOnMinMax(list);\n\n var items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var maxItems = list.data('max');\n\n if (typeof maxItems !== 'undefined' && items.length >= maxItems) {\n return;\n }\n\n list.find('> [data-collection-holder]')[position === 'top' ? 'prepend' : 'append'](template);\n this.reindex(list);\n items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var topAction = list.closest('[data-type=\"collection\"]').find('[data-action-add=\"top\"]');\n var sortAction = list.closest('[data-type=\"collection\"]').find('[data-action=\"sort\"]');\n\n if (items.length) {\n if (topAction.length) {\n topAction.parent().removeClass('hidden');\n }\n\n if (sortAction.length && items.length > 1) {\n sortAction.removeClass('hidden');\n }\n } // refresh toggleables in a list\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-grav-field=\"toggleable\"] input[type=\"checkbox\"]').trigger('change');\n }\n }, {\n key: \"removeItem\",\n value: function removeItem(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var item = button.closest('[data-collection-item]');\n var list = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]'));\n var items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var minItems = list.data('min');\n\n if (typeof minItems !== 'undefined' && items.length <= minItems) {\n return;\n }\n\n item.remove();\n this.reindex(list);\n items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var topAction = list.closest('[data-type=\"collection\"]').find('[data-action-add=\"top\"]');\n var sortAction = list.closest('[data-type=\"collection\"]').find('[data-action=\"sort\"]');\n\n if (!items.length) {\n if (topAction.length) {\n topAction.parent().addClass('hidden');\n }\n }\n\n if (sortAction.length && items.length <= 1) {\n sortAction.addClass('hidden');\n }\n\n this._updateActionsStateBasedOnMinMax(list);\n }\n }, {\n key: \"collapseItems\",\n value: function collapseItems(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var items = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]')).find('> ul > [data-collection-item] > .item-actions [data-action=\"collapse\"]');\n items.click();\n }\n }, {\n key: \"collapseItem\",\n value: function collapseItem(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var item = button.closest('[data-collection-item]');\n button.attr('data-action', 'expand').removeClass('fa-chevron-circle-down').addClass('fa-chevron-circle-right');\n item.addClass('collection-collapsed');\n }\n }, {\n key: \"expandItems\",\n value: function expandItems(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var items = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]')).find('> ul > [data-collection-item] > .item-actions [data-action=\"expand\"]');\n items.click();\n }\n }, {\n key: \"expandItem\",\n value: function expandItem(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var item = button.closest('[data-collection-item]');\n button.attr('data-action', 'collapse').removeClass('fa-chevron-circle-right').addClass('fa-chevron-circle-down');\n item.removeClass('collection-collapsed');\n }\n }, {\n key: \"sortItems\",\n value: function sortItems(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var sortby = button.data('action-sort');\n var sortby_dir = button.data('action-sort-dir') || 'asc';\n var list = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]'));\n var items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n items.sort(function (a, b) {\n var A = jquery__WEBPACK_IMPORTED_MODULE_0___default()(a).find('[name$=\"[' + sortby + ']\"]');\n var B = jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).find('[name$=\"[' + sortby + ']\"]');\n var sort;\n\n if (sortby_dir === 'asc') {\n sort = A.val() < B.val() ? -1 : A.val() > B.val() ? 1 : 0;\n } else {\n sort = A.val() > B.val() ? -1 : A.val() < B.val() ? 1 : 0;\n }\n\n return sort;\n }).each(function (_, container) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(container).parent().append(container);\n });\n this.reindex(list);\n }\n }, {\n key: \"observeKey\",\n value: function observeKey(event) {\n var input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var value = input.val();\n var item = input.closest('[data-collection-key]');\n item.data('collection-key-backup', item.data('collection-key')).data('collection-key', value);\n this.reindex(null, item);\n }\n }, {\n key: \"reindex\",\n value: function reindex(list, items) {\n items = items || jquery__WEBPACK_IMPORTED_MODULE_0___default()(list).closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n items.each(function (index, item) {\n item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(item);\n var observed = item.find('[data-key-observe]');\n var observedValue = observed.val();\n var hasCustomKey = observed.length;\n var currentKey = item.data('collection-key-backup');\n item.attr('data-collection-key', hasCustomKey ? observedValue : index);\n ['name', 'data-grav-field-name', 'for', 'id', 'data-grav-file-settings', 'data-grav-array-name'].forEach(function (prop) {\n item.find('[' + prop + '], [_' + prop + ']').each(function () {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var indexes = [];\n var array_index = null;\n var regexps = [new RegExp('\\\\[(\\\\d+|\\\\*|' + currentKey + ')\\\\]', 'g'), new RegExp('\\\\.(\\\\d+|\\\\*|' + currentKey + ')\\\\.', 'g')]; // special case to preserve array field index keys\n\n if (prop === 'name' && element.data('gravArrayType')) {\n var match_index = element.attr(prop).match(/\\[[0-9]{1,}\\]$/);\n var pattern = element[0].closest('[data-grav-array-name]').dataset.gravArrayName;\n\n if (match_index && pattern) {\n array_index = match_index[0];\n element.attr(prop, \"\".concat(pattern).concat(match_index[0]));\n return;\n }\n }\n\n if (hasCustomKey && !observedValue) {\n element.attr(\"_\".concat(prop), element.attr(prop));\n element.attr(prop, null);\n return;\n }\n\n if (element.attr(\"_\".concat(prop))) {\n element.attr(prop, element.attr(\"_\".concat(prop)));\n element.attr(\"_\".concat(prop), null);\n }\n\n element.parents('[data-collection-key]').map(function (idx, parent) {\n return indexes.push(jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).attr('data-collection-key'));\n });\n indexes.reverse();\n var matchedKey = currentKey;\n var replaced = element.attr(prop).replace(regexps[0], function ()\n /* str, p1, offset */\n {\n var extras = '';\n\n if (array_index) {\n extras = array_index;\n console.log(indexes, extras);\n }\n\n matchedKey = indexes.shift() || matchedKey;\n return \"[\".concat(matchedKey, \"]\").concat(extras);\n });\n replaced = replaced.replace(regexps[1], function ()\n /* str, p1, offset */\n {\n matchedKey = indexes.shift() || matchedKey;\n return \".\".concat(matchedKey, \".\");\n });\n element.attr(prop, replaced);\n });\n });\n });\n }\n }, {\n key: \"_onAddedNodes\",\n value: function _onAddedNodes(event, target\n /* , record, instance */\n ) {\n var _this3 = this;\n\n var collections = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).find('[data-type=\"collection\"]');\n\n if (!collections.length) {\n return;\n }\n\n collections.each(function (index, collection) {\n collection = jquery__WEBPACK_IMPORTED_MODULE_0___default()(collection);\n\n if (!~_this3.lists.index(collection)) {\n _this3.addList(collection);\n }\n });\n }\n }, {\n key: \"_updateActionsStateBasedOnMinMax\",\n value: function _updateActionsStateBasedOnMinMax(list) {\n var items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var minItems = list.data('min');\n var maxItems = list.data('max');\n list.find('> .collection-actions [data-action=\"add\"]').attr('disabled', false);\n list.find('> ul > li > .item-actions [data-action=\"delete\"]').attr('disabled', false);\n\n if (typeof minItems !== 'undefined' && items.length <= minItems) {\n list.find('> ul > li > .item-actions [data-action=\"delete\"]').attr('disabled', true);\n }\n\n if (typeof maxItems !== 'undefined' && items.length >= maxItems) {\n list.find('> .collection-actions [data-action=\"add\"]').attr('disabled', true);\n }\n }\n }]);\n\n return CollectionsField;\n}();\n\n\nvar Instance = new CollectionsField();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9jb2xsZWN0aW9ucy5qcz82YzU1Il0sIm5hbWVzIjpbIkNvbGxlY3Rpb25zRmllbGQiLCJsaXN0cyIsIiQiLCJlYWNoIiwiaW5kZXgiLCJsaXN0IiwiYWRkTGlzdCIsIm9uIiwiX29uQWRkZWROb2RlcyIsImJpbmQiLCJhZGQiLCJldmVudCIsImFkZEl0ZW0iLCJyZW1vdmVJdGVtIiwiY29sbGFwc2VJdGVtIiwiZXhwYW5kSXRlbSIsInNvcnRJdGVtcyIsImNvbGxhcHNlSXRlbXMiLCJleHBhbmRJdGVtcyIsIm9ic2VydmVLZXkiLCJmaW5kIiwiY29udGFpbmVyIiwiZGF0YSIsImhhc0F0dHJpYnV0ZSIsIlNvcnRhYmxlIiwiZ2V0IiwiZm9yY2VGYWxsYmFjayIsImhhbmRsZSIsImFuaW1hdGlvbiIsIm9uVXBkYXRlIiwicmVpbmRleCIsIl91cGRhdGVBY3Rpb25zU3RhdGVCYXNlZE9uTWluTWF4IiwiYnV0dG9uIiwiY3VycmVudFRhcmdldCIsInBvc2l0aW9uIiwiY2xvc2VzdCIsInRlbXBsYXRlIiwiaXRlbXMiLCJtYXhJdGVtcyIsImxlbmd0aCIsInRvcEFjdGlvbiIsInNvcnRBY3Rpb24iLCJwYXJlbnQiLCJyZW1vdmVDbGFzcyIsInRyaWdnZXIiLCJpdGVtIiwibWluSXRlbXMiLCJyZW1vdmUiLCJhZGRDbGFzcyIsImNsaWNrIiwiYXR0ciIsInNvcnRieSIsInNvcnRieV9kaXIiLCJzb3J0IiwiYSIsImIiLCJBIiwiQiIsInZhbCIsIl8iLCJhcHBlbmQiLCJpbnB1dCIsInRhcmdldCIsInZhbHVlIiwib2JzZXJ2ZWQiLCJvYnNlcnZlZFZhbHVlIiwiaGFzQ3VzdG9tS2V5IiwiY3VycmVudEtleSIsImZvckVhY2giLCJwcm9wIiwiZWxlbWVudCIsImluZGV4ZXMiLCJhcnJheV9pbmRleCIsInJlZ2V4cHMiLCJSZWdFeHAiLCJtYXRjaF9pbmRleCIsIm1hdGNoIiwicGF0dGVybiIsImRhdGFzZXQiLCJncmF2QXJyYXlOYW1lIiwicGFyZW50cyIsIm1hcCIsImlkeCIsInB1c2giLCJyZXZlcnNlIiwibWF0Y2hlZEtleSIsInJlcGxhY2VkIiwicmVwbGFjZSIsImV4dHJhcyIsImNvbnNvbGUiLCJsb2ciLCJzaGlmdCIsImNvbGxlY3Rpb25zIiwiY29sbGVjdGlvbiIsIkluc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7O0lBRXFCQSxnQjtBQUNqQiw4QkFBYztBQUFBOztBQUFBOztBQUNWLFNBQUtDLEtBQUwsR0FBYUMsNkNBQUMsRUFBZDtBQUVBQSxpREFBQyxDQUFDLDBCQUFELENBQUQsQ0FBOEJDLElBQTlCLENBQW1DLFVBQUNDLEtBQUQsRUFBUUMsSUFBUjtBQUFBLGFBQWlCLEtBQUksQ0FBQ0MsT0FBTCxDQUFhRCxJQUFiLENBQWpCO0FBQUEsS0FBbkM7QUFDQUgsaURBQUMsQ0FBQyxNQUFELENBQUQsQ0FBVUssRUFBVixDQUFhLGdCQUFiLEVBQStCLEtBQUtDLGFBQUwsQ0FBbUJDLElBQW5CLENBQXdCLElBQXhCLENBQS9CO0FBRUg7Ozs7NEJBRU9KLEksRUFBTTtBQUFBOztBQUNWQSxVQUFJLEdBQUdILDZDQUFDLENBQUNHLElBQUQsQ0FBUjtBQUNBLFdBQUtKLEtBQUwsR0FBYSxLQUFLQSxLQUFMLENBQVdTLEdBQVgsQ0FBZUwsSUFBZixDQUFiO0FBRUFBLFVBQUksQ0FBQ0UsRUFBTCxDQUFRLE9BQVIsRUFBaUIsMkNBQWpCLEVBQThELFVBQUNJLEtBQUQ7QUFBQSxlQUFXLE1BQUksQ0FBQ0MsT0FBTCxDQUFhRCxLQUFiLENBQVg7QUFBQSxPQUE5RDtBQUNBTixVQUFJLENBQUNFLEVBQUwsQ0FBUSxPQUFSLEVBQWlCLGtEQUFqQixFQUFxRSxVQUFDSSxLQUFEO0FBQUEsZUFBVyxNQUFJLENBQUNFLFVBQUwsQ0FBZ0JGLEtBQWhCLENBQVg7QUFBQSxPQUFyRTtBQUNBTixVQUFJLENBQUNFLEVBQUwsQ0FBUSxPQUFSLEVBQWlCLG9EQUFqQixF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QUFJMEIsUUFBUSxHQUFHekMsSUFBSSxDQUFDaUIsSUFBTCxDQUFVLEtBQVYsQ0FBZjtBQUNBLFVBQUlnQixRQUFRLEdBQUdqQyxJQUFJLENBQUNpQixJQUFMLENBQVUsS0FBVixDQUFmO0FBRUFqQixVQUFJLENBQUNlLElBQUwsQ0FBVSwyQ0FBVixFQUF1RDhCLElBQXZELENBQTRELFVBQTVELEVBQXdFLEtBQXhFO0FBQ0E3QyxVQUFJLENBQUNlLElBQUwsQ0FBVSxrREFBVixFQUE4RDhCLElBQTlELENBQW1FLFVBQW5FLEVBQStFLEtBQS9FOztBQUVBLFVBQUksT0FBT0osUUFBUCxLQUFvQixXQUFwQixJQUFtQ1QsS0FBSyxDQUFDRSxNQUFOLElBQWdCTyxRQUF2RCxFQUFpRTtBQUM3RHpDLFlBQUksQ0FBQ2UsSUFBTCxDQUFVLGtEQUFWLEVBQThEOEIsSUFBOUQsQ0FBbUUsVUFBbkUsRUFBK0UsSUFBL0U7QUFDSDs7QUFFRCxVQUFJLE9BQU9aLFFBQVAsS0FBb0IsV0FBcEIsSUFBbUNELEtBQUssQ0FBQ0UsTUFBTixJQUFnQkQsUUFBdkQsRUFBaUU7QUFDN0RqQyxZQUFJLENBQUNlLElBQUwsQ0FBVSwyQ0FBVixFQUF1RDhCLElBQXZELENBQTRELFVBQTVELEVBQXdFLElBQXhFO0FBQ0g7QUFDSjs7Ozs7OztBQUdFLElBQUk0QyxRQUFRLEdBQUcsSUFBSTlGLGdCQUFKLEVBQWYiLCJmaWxlIjoiLi9hcHAvZm9ybXMvZmllbGRzL2NvbGxlY3Rpb25zLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCBTb3J0YWJsZSBmcm9tICdzb3J0YWJsZWpzJztcbmltcG9ydCAnLi4vLi4vdXRpbHMvanF1ZXJ5LXV0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGVjdGlvbnNGaWVsZCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGlzdHMgPSAkKCk7XG5cbiAgICAgICAgJCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKS5lYWNoKChpbmRleCwgbGlzdCkgPT4gdGhpcy5hZGRMaXN0KGxpc3QpKTtcbiAgICAgICAgJCgnYm9keScpLm9uKCdtdXRhdGlvbi5fZ3JhdicsIHRoaXMuX29uQWRkZWROb2Rlcy5iaW5kKHRoaXMpKTtcblxuICAgIH1cblxuICAgIGFkZExpc3QobGlzdCkge1xuICAgICAgICBsaXN0ID0gJChsaXN0KTtcbiAgICAgICAgdGhpcy5saXN0cyA9IHRoaXMubGlzdHMuYWRkKGxpc3QpO1xuXG4gICAgICAgIGxpc3Qub24oJ2NsaWNrJywgJz4gLmNvbGxlY3Rpb24tYWN0aW9ucyBbZGF0YS1hY3Rpb249XCJhZGRcIl0nLCAoZXZlbnQpID0+IHRoaXMuYWRkSXRlbShldmVudCkpO1xuICAgICAgICBsaXN0Lm9uKCdjbGljaycsICc+IHVsID4gbGkgPiAuaXRlbS1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImRlbGV0ZVwiXScsIChldmVudCkgPT4gdGhpcy5yZW1vdmVJdGVtKGV2ZW50KSk7XG4gICAgICAgIGxpc3Qub24oJ2NsaWNrJywgJz4gdWwgPiBsaSA+IC5pdGVtLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiY29sbGFwc2VcIl0nLCAoZXZlbnQpID0+IHRoaXMuY29sbGFwc2VJdGVtKGV2ZW50KSk7XG4gICAgICAgIGxpc3Qub24oJ2NsaWNrJywgJz4gdWwgPiBsaSA+IC5pdGVtLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiZXhwYW5kXCJdJywgKGV2ZW50KSA9PiB0aGlzLmV4cGFuZEl0ZW0oZXZlbnQpKTtcbiAgICAgICAgbGlzdC5vbignY2xpY2snLCAnPiAuY29sbGVjdGlvbi1hY3Rpb25zIFtkYXRhLWFjdGlvbi1zb3J0PVwiZGF0ZVwiXScsIChldmVudCkgPT4gdGhpcy5zb3J0SXRlbXMoZXZlbnQpKTtcbiAgICAgICAgbGlzdC5vbignY2xpY2snLCAnPiAuY29sbGVjdGlvbi1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImNvbGxhcHNlX2FsbFwiXScsIChldmVudCkgPT4gdGhpcy5jb2xsYXBzZUl0ZW1zKGV2ZW50KSk7XG4gICAgICAgIGxpc3Qub24oJ2NsaWNrJywgJz4gLmNvbGxlY3Rpb24tYWN0aW9ucyBbZGF0YS1hY3Rpb249XCJleHBhbmRfYWxsXCJdJywgKGV2ZW50KSA9PiB0aGlzLmV4cGFuZEl0ZW1zKGV2ZW50KSk7XG4gICAgICAgIGxpc3Qub24oJ2lucHV0IGNoYW5nZScsICdbZGF0YS1rZXktb2JzZXJ2ZV0nLCAoZXZlbnQpID0+IHRoaXMub2JzZXJ2ZUtleShldmVudCkpO1xuXG4gICAgICAgIGxpc3QuZmluZCgnW2RhdGEtY29sbGVjdGlvbi1ob2xkZXJdJykuZWFjaCgoaW5kZXgsIGNvbnRhaW5lcikgPT4ge1xuICAgICAgICAgICAgY29udGFpbmVyID0gJChjb250YWluZXIpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lci5kYXRhKCdjb2xsZWN0aW9uLXNvcnQnKSB8fCBjb250YWluZXJbMF0uaGFzQXR0cmlidXRlKCdkYXRhLWNvbGxlY3Rpb24tbm9zb3J0JykpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5kYXRhKCdjb2xsZWN0aW9uLXNvcnQnLCBuZXcgU29ydGFibGUoY29udGFpbmVyLmdldCgwKSwge1xuICAgICAgICAgICAgICAgIGZvcmNlRmFsbGJhY2s6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhhbmRsZTogJy5jb2xsZWN0aW9uLXNvcnQnLFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogMTUwLFxuICAgICAgICAgICAgICAgIG9uVXBkYXRlOiAoKSA9PiB0aGlzLnJlaW5kZXgoY29udGFpbmVyKVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl91cGRhdGVBY3Rpb25zU3RhdGVCYXNlZE9uTWluTWF4KGxpc3QpO1xuICAgIH1cblxuICAgIGFkZEl0ZW0oZXZlbnQpIHtcbiAgICAgICAgbGV0IGJ1dHRvbiA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgIGxldCBwb3NpdGlvbiA9IGJ1dHRvbi5kYXRhKCdhY3Rpb24tYWRkJykgfHwgJ2JvdHRvbSc7XG4gICAgICAgIGxldCBsaXN0ID0gJChidXR0b24uY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKSk7XG4gICAgICAgIGxldCB0ZW1wbGF0ZSA9ICQobGlzdC5maW5kKCc+IFtkYXRhLWNvbGxlY3Rpb24tdGVtcGxhdGU9XCJuZXdcIl0nKS5kYXRhKCdjb2xsZWN0aW9uLXRlbXBsYXRlLWh0bWwnKSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlQWN0aW9uc1N0YXRlQmFzZWRPbk1pbk1heChsaXN0KTtcbiAgICAgICAgbGV0IGl0ZW1zID0gbGlzdC5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpLmZpbmQoJz4gdWwgPiBbZGF0YS1jb2xsZWN0aW9uLWl0ZW1dJyk7XG4gICAgICAgIGxldCBtYXhJdGVtcyA9IGxpc3QuZGF0YSgnbWF4Jyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWF4SXRlbXMgIT09ICd1bmRlZmluZWQnICYmIGl0ZW1zLmxlbmd0aCA+PSBtYXhJdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGlzdC5maW5kKCc+IFtkYXRhLWNvbGxlY3Rpb24taG9sZGVyXScpW3Bvc2l0aW9uID09PSAndG9wJyA/ICdwcmVwZW5kJyA6ICdhcHBlbmQnXSh0ZW1wbGF0ZSk7XG4gICAgICAgIHRoaXMucmVpbmRleChsaXN0KTtcblxuICAgICAgICBpdGVtcyA9IGxpc3QuY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKS5maW5kKCc+IHVsID4gW2RhdGEtY29sbGVjdGlvbi1pdGVtXScpO1xuICAgICAgICBsZXQgdG9wQWN0aW9uID0gbGlzdC5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpLmZpbmQoJ1tkYXRhLWFjdGlvbi1hZGQ9XCJ0b3BcIl0nKTtcbiAgICAgICAgbGV0IHNvcnRBY3Rpb24gPSBsaXN0LmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykuZmluZCgnW2RhdGEtYWN0aW9uPVwic29ydFwiXScpO1xuXG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0b3BBY3Rpb24ubGVuZ3RoKSB7IHRvcEFjdGlvbi5wYXJlbnQoKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7IH1cbiAgICAgICAgICAgIGlmIChzb3J0QWN0aW9uLmxlbmd0aCAmJiBpdGVtcy5sZW5ndGggPiAxKSB7IHNvcnRBY3Rpb24ucmVtb3ZlQ2xhc3MoJ2hpZGRlbicpOyB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZWZyZXNoIHRvZ2dsZWFibGVzIGluIGEgbGlzdFxuICAgICAgICAkKCdbZGF0YS1ncmF2LWZpZWxkPVwidG9nZ2xlYWJsZVwiXSBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9XG5cbiAgICByZW1vdmVJdGVtKGV2ZW50KSB7XG4gICAgICAgIGxldCBidXR0b24gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBsZXQgaXRlbSA9IGJ1dHRvbi5jbG9zZXN0KCdbZGF0YS1jb2xsZWN0aW9uLWl0ZW1dJyk7XG4gICAgICAgIGxldCBsaXN0ID0gJChidXR0b24uY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKSk7XG5cbiAgICAgICAgbGV0IGl0ZW1zID0gbGlzdC5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpLmZpbmQoJz4gdWwgPiBbZGF0YS1jb2xsZWN0aW9uLWl0ZW1dJyk7XG4gICAgICAgIGxldCBtaW5JdGVtcyA9IGxpc3QuZGF0YSgnbWluJyk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBtaW5JdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbXMubGVuZ3RoIDw9IG1pbkl0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLnJlaW5kZXgobGlzdCk7XG5cbiAgICAgICAgaXRlbXMgPSBsaXN0LmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykuZmluZCgnPiB1bCA+IFtkYXRhLWNvbGxlY3Rpb24taXRlbV0nKTtcbiAgICAgICAgbGV0IHRvcEFjdGlvbiA9IGxpc3QuY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKS5maW5kKCdbZGF0YS1hY3Rpb24tYWRkPVwidG9wXCJdJyk7XG4gICAgICAgIGxldCBzb3J0QWN0aW9uID0gbGlzdC5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpLmZpbmQoJ1tkYXRhLWFjdGlvbj1cInNvcnRcIl0nKTtcblxuICAgICAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRvcEFjdGlvbi5sZW5ndGgpIHsgdG9wQWN0aW9uLnBhcmVudCgpLmFkZENsYXNzKCdoaWRkZW4nKTsgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNvcnRBY3Rpb24ubGVuZ3RoICYmIGl0ZW1zLmxlbmd0aCA8PSAxKSB7IHNvcnRBY3Rpb24uYWRkQ2xhc3MoJ2hpZGRlbicpOyB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZUFjdGlvbnNTdGF0ZUJhc2VkT25NaW5NYXgobGlzdCk7XG4gICAgfVxuXG4gICAgY29sbGFwc2VJdGVtcyhldmVudCkge1xuICAgICAgICBsZXQgYnV0dG9uID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgbGV0IGl0ZW1zID0gJChidXR0b24uY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKSkuZmluZCgnPiB1bCA+IFtkYXRhLWNvbGxlY3Rpb24taXRlbV0gPiAuaXRlbS1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImNvbGxhcHNlXCJdJyk7XG5cbiAgICAgICAgaXRlbXMuY2xpY2soKTtcbiAgICB9XG5cbiAgICBjb2xsYXBzZUl0ZW0oZXZlbnQpIHtcbiAgICAgICAgbGV0IGJ1dHRvbiA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgIGxldCBpdGVtID0gYnV0dG9uLmNsb3Nlc3QoJ1tkYXRhLWNvbGxlY3Rpb24taXRlbV0nKTtcblxuICAgICAgICBidXR0b24uYXR0cignZGF0YS1hY3Rpb24nLCAnZXhwYW5kJykucmVtb3ZlQ2xhc3MoJ2ZhLWNoZXZyb24tY2lyY2xlLWRvd24nKS5hZGRDbGFzcygnZmEtY2hldnJvbi1jaXJjbGUtcmlnaHQnKTtcbiAgICAgICAgaXRlbS5hZGRDbGFzcygnY29sbGVjdGlvbi1jb2xsYXBzZWQnKTtcbiAgICB9XG5cbiAgICBleHBhbmRJdGVtcyhldmVudCkge1xuICAgICAgICBsZXQgYnV0dG9uID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgbGV0IGl0ZW1zID0gJChidXR0b24uY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKSkuZmluZCgnPiB1bCA+IFtkYXRhLWNvbGxlY3Rpb24taXRlbV0gPiAuaXRlbS1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImV4cGFuZFwiXScpO1xuXG4gICAgICAgIGl0ZW1zLmNsaWNrKCk7XG4gICAgfVxuXG4gICAgZXhwYW5kSXRlbShldmVudCkge1xuICAgICAgICBsZXQgYnV0dG9uID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgbGV0IGl0ZW0gPSBidXR0b24uY2xvc2VzdCgnW2RhdGEtY29sbGVjdGlvbi1pdGVtXScpO1xuXG4gICAgICAgIGJ1dHRvbi5hdHRyKCdkYXRhLWFjdGlvbicsICdjb2xsYXBzZScpLnJlbW92ZUNsYXNzKCdmYS1jaGV2cm9uLWNpcmNsZS1yaWdodCcpLmFkZENsYXNzKCdmYS1jaGV2cm9uLWNpcmNsZS1kb3duJyk7XG4gICAgICAgIGl0ZW0ucmVtb3ZlQ2xhc3MoJ2NvbGxlY3Rpb24tY29sbGFwc2VkJyk7XG4gICAgfVxuXG4gICAgc29ydEl0ZW1zKGV2ZW50KSB7XG4gICAgICAgIGxldCBidXR0b24gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBsZXQgc29ydGJ5ID0gYnV0dG9uLmRhdGEoJ2FjdGlvbi1zb3J0Jyk7XG4gICAgICAgIGxldCBzb3J0YnlfZGlyID0gYnV0dG9uLmRhdGEoJ2FjdGlvbi1zb3J0LWRpcicpIHx8ICdhc2MnO1xuICAgICAgICBsZXQgbGlzdCA9ICQoYnV0dG9uLmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykpO1xuICAgICAgICBsZXQgaXRlbXMgPSBsaXN0LmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykuZmluZCgnPiB1bCA+IFtkYXRhLWNvbGxlY3Rpb24taXRlbV0nKTtcblxuICAgICAgICBpdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBsZXQgQSA9ICQoYSkuZmluZCgnW25hbWUkPVwiWycgKyBzb3J0YnkgKyAnXVwiXScpO1xuICAgICAgICAgICAgbGV0IEIgPSAkKGIpLmZpbmQoJ1tuYW1lJD1cIlsnICsgc29ydGJ5ICsgJ11cIl0nKTtcbiAgICAgICAgICAgIGxldCBzb3J0O1xuXG4gICAgICAgICAgICBpZiAoc29ydGJ5X2RpciA9PT0gJ2FzYycpIHtcbiAgICAgICAgICAgICAgICBzb3J0ID0gKEEudmFsKCkgPCBCLnZhbCgpKSA/IC0xIDogKEEudmFsKCkgPiBCLnZhbCgpKSA/IDEgOiAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzb3J0ID0gKEEudmFsKCkgPiBCLnZhbCgpKSA/IC0xIDogKEEudmFsKCkgPCBCLnZhbCgpKSA/IDEgOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc29ydDtcbiAgICAgICAgfSkuZWFjaCgoXywgY29udGFpbmVyKSA9PiB7XG4gICAgICAgICAgICAkKGNvbnRhaW5lcikucGFyZW50KCkuYXBwZW5kKGNvbnRhaW5lcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVpbmRleChsaXN0KTtcbiAgICB9XG5cbiAgICBvYnNlcnZlS2V5KGV2ZW50KSB7XG4gICAgICAgIGxldCBpbnB1dCA9ICQoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgbGV0IHZhbHVlID0gaW5wdXQudmFsKCk7XG4gICAgICAgIGxldCBpdGVtID0gaW5wdXQuY2xvc2VzdCgnW2RhdGEtY29sbGVjdGlvbi1rZXldJyk7XG5cbiAgICAgICAgaXRlbS5kYXRhKCdjb2xsZWN0aW9uLWtleS1iYWNrdXAnLCBpdGVtLmRhdGEoJ2NvbGxlY3Rpb24ta2V5JykpLmRhdGEoJ2NvbGxlY3Rpb24ta2V5JywgdmFsdWUpO1xuICAgICAgICB0aGlzLnJlaW5kZXgobnVsbCwgaXRlbSk7XG4gICAgfVxuXG4gICAgcmVpbmRleChsaXN0LCBpdGVtcykge1xuICAgICAgICBpdGVtcyA9IGl0ZW1zIHx8ICQobGlzdCkuY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKS5maW5kKCc+IHVsID4gW2RhdGEtY29sbGVjdGlvbi1pdGVtXScpO1xuXG4gICAgICAgIGl0ZW1zLmVhY2goKGluZGV4LCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtID0gJChpdGVtKTtcblxuICAgICAgICAgICAgbGV0IG9ic2VydmVkID0gaXRlbS5maW5kKCdbZGF0YS1rZXktb2JzZXJ2ZV0nKTtcbiAgICAgICAgICAgIGxldCBvYnNlcnZlZFZhbHVlID0gb2JzZXJ2ZWQudmFsKCk7XG4gICAgICAgICAgICBsZXQgaGFzQ3VzdG9tS2V5ID0gb2JzZXJ2ZWQubGVuZ3RoO1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRLZXkgPSBpdGVtLmRhdGEoJ2NvbGxlY3Rpb24ta2V5LWJhY2t1cCcpO1xuXG4gICAgICAgICAgICBpdGVtLmF0dHIoJ2RhdGEtY29sbGVjdGlvbi1rZXknLCBoYXNDdXN0b21LZXkgPyBvYnNlcnZlZFZhbHVlIDogaW5kZXgpO1xuXG4gICAgICAgICAgICBbJ25hbWUnLCAnZGF0YS1ncmF2LWZpZWxkLW5hbWUnLCAnZm9yJywgJ2lkJywgJ2RhdGEtZ3Jhdi1maWxlLXNldHRpbmdzJywgJ2RhdGEtZ3Jhdi1hcnJheS1uYW1lJ10uZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uZmluZCgnWycgKyBwcm9wICsgJ10sIFtfJyArIHByb3AgKyAnXScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFycmF5X2luZGV4ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ2V4cHMgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVnRXhwKCdcXFxcWyhcXFxcZCt8XFxcXCp8JyArIGN1cnJlbnRLZXkgKyAnKVxcXFxdJywgJ2cnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBSZWdFeHAoJ1xcXFwuKFxcXFxkK3xcXFxcKnwnICsgY3VycmVudEtleSArICcpXFxcXC4nLCAnZycpXG4gICAgICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRvIHByZXNlcnZlIGFycmF5IGZpZWxkIGluZGV4IGtleXNcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3AgPT09ICduYW1lJyAmJiBlbGVtZW50LmRhdGEoJ2dyYXZBcnJheVR5cGUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hfaW5kZXggPSBlbGVtZW50LmF0dHIocHJvcCkubWF0Y2goL1xcW1swLTldezEsfVxcXSQvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdHRlcm4gPSBlbGVtZW50WzBdLmNsb3Nlc3QoJ1tkYXRhLWdyYXYtYXJyYXktbmFtZV0nKS5kYXRhc2V0LmdyYXZBcnJheU5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hfaW5kZXggJiYgcGF0dGVybikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2luZGV4ID0gbWF0Y2hfaW5kZXhbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hdHRyKHByb3AsIGAke3BhdHRlcm59JHttYXRjaF9pbmRleFswXX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ3VzdG9tS2V5ICYmICFvYnNlcnZlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmF0dHIoYF8ke3Byb3B9YCwgZWxlbWVudC5hdHRyKHByb3ApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXR0cihwcm9wLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmF0dHIoYF8ke3Byb3B9YCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXR0cihwcm9wLCBlbGVtZW50LmF0dHIoYF8ke3Byb3B9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hdHRyKGBfJHtwcm9wfWAsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5wYXJlbnRzKCdbZGF0YS1jb2xsZWN0aW9uLWtleV0nKS5tYXAoKGlkeCwgcGFyZW50KSA9PiBpbmRleGVzLnB1c2goJChwYXJlbnQpLmF0dHIoJ2RhdGEtY29sbGVjdGlvbi1rZXknKSkpO1xuICAgICAgICAgICAgICAgICAgICBpbmRleGVzLnJldmVyc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2hlZEtleSA9IGN1cnJlbnRLZXk7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXBsYWNlZCA9IGVsZW1lbnQuYXR0cihwcm9wKS5yZXBsYWNlKHJlZ2V4cHNbMF0sICgvKiBzdHIsIHAxLCBvZmZzZXQgKi8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHRyYXMgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcnJheV9pbmRleCkgeyBleHRyYXMgPSBhcnJheV9pbmRleDsgY29uc29sZS5sb2coaW5kZXhlcywgZXh0cmFzKTsgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkS2V5ID0gaW5kZXhlcy5zaGlmdCgpIHx8IG1hdGNoZWRLZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFske21hdGNoZWRLZXl9XSR7ZXh0cmFzfWA7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkID0gcmVwbGFjZWQucmVwbGFjZShyZWdleHBzWzFdLCAoLyogc3RyLCBwMSwgb2Zmc2V0ICovKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkS2V5ID0gaW5kZXhlcy5zaGlmdCgpIHx8IG1hdGNoZWRLZXk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYC4ke21hdGNoZWRLZXl9LmA7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXR0cihwcm9wLCByZXBsYWNlZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX29uQWRkZWROb2RlcyhldmVudCwgdGFyZ2V0LyogLCByZWNvcmQsIGluc3RhbmNlICovKSB7XG4gICAgICAgIGxldCBjb2xsZWN0aW9ucyA9ICQodGFyZ2V0KS5maW5kKCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpO1xuICAgICAgICBpZiAoIWNvbGxlY3Rpb25zLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICBjb2xsZWN0aW9ucy5lYWNoKChpbmRleCwgY29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgICAgY29sbGVjdGlvbiA9ICQoY29sbGVjdGlvbik7XG4gICAgICAgICAgICBpZiAoIX50aGlzLmxpc3RzLmluZGV4KGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRMaXN0KGNvbGxlY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBfdXBkYXRlQWN0aW9uc1N0YXRlQmFzZWRPbk1pbk1heChsaXN0KSB7XG4gICAgICAgIGxldCBpdGVtcyA9IGxpc3QuY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKS5maW5kKCc+IHVsID4gW2RhdGEtY29sbGVjdGlvbi1pdGVtXScpO1xuICAgICAgICBsZXQgbWluSXRlbXMgPSBsaXN0LmRhdGEoJ21pbicpO1xuICAgICAgICBsZXQgbWF4SXRlbXMgPSBsaXN0LmRhdGEoJ21heCcpO1xuXG4gICAgICAgIGxpc3QuZmluZCgnPiAuY29sbGVjdGlvbi1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImFkZFwiXScpLmF0dHIoJ2Rpc2FibGVkJywgZmFsc2UpO1xuICAgICAgICBsaXN0LmZpbmQoJz4gdWwgPiBsaSA+IC5pdGVtLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiZGVsZXRlXCJdJykuYXR0cignZGlzYWJsZWQnLCBmYWxzZSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBtaW5JdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbXMubGVuZ3RoIDw9IG1pbkl0ZW1zKSB7XG4gICAgICAgICAgICBsaXN0LmZpbmQoJz4gdWwgPiBsaSA+IC5pdGVtLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiZGVsZXRlXCJdJykuYXR0cignZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgbWF4SXRlbXMgIT09ICd1bmRlZmluZWQnICYmIGl0ZW1zLmxlbmd0aCA+PSBtYXhJdGVtcykge1xuICAgICAgICAgICAgbGlzdC5maW5kKCc+IC5jb2xsZWN0aW9uLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiYWRkXCJdJykuYXR0cignZGlzYWJsZWQnLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGxldCBJbnN0YW5jZSA9IG5ldyBDb2xsZWN0aW9uc0ZpZWxkKCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/forms/fields/collections.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ CollectionsField,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var sortablejs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! sortablejs */ \"./node_modules/sortablejs/modular/sortable.complete.esm.js\");\n/* harmony import */ var _utils_jquery_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/jquery-utils */ \"./app/utils/jquery-utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar CollectionsField = /*#__PURE__*/function () {\n function CollectionsField() {\n var _this = this;\n\n _classCallCheck(this, CollectionsField);\n\n this.lists = jquery__WEBPACK_IMPORTED_MODULE_0___default()();\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-type=\"collection\"]').each(function (index, list) {\n return _this.addList(list);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('mutation._grav', this._onAddedNodes.bind(this));\n }\n\n _createClass(CollectionsField, [{\n key: \"addList\",\n value: function addList(list) {\n var _this2 = this;\n\n list = jquery__WEBPACK_IMPORTED_MODULE_0___default()(list);\n this.lists = this.lists.add(list);\n list.on('click', '> .collection-actions [data-action=\"add\"]', function (event) {\n return _this2.addItem(event);\n });\n list.on('click', '> ul > li > .item-actions [data-action=\"delete\"]', function (event) {\n return _this2.removeItem(event);\n });\n list.on('click', '> ul > li > .item-actions [data-action=\"collapse\"]', function (event) {\n return _this2.collapseItem(event);\n });\n list.on('click', '> ul > li > .item-actions [data-action=\"expand\"]', function (event) {\n return _this2.expandItem(event);\n });\n list.on('click', '> .collection-actions [data-action-sort=\"date\"]', function (event) {\n return _this2.sortItems(event);\n });\n list.on('click', '> .collection-actions [data-action=\"collapse_all\"]', function (event) {\n return _this2.collapseItems(event);\n });\n list.on('click', '> .collection-actions [data-action=\"expand_all\"]', function (event) {\n return _this2.expandItems(event);\n });\n list.on('input change', '[data-key-observe]', function (event) {\n return _this2.observeKey(event);\n });\n list.find('[data-collection-holder]').each(function (index, container) {\n container = jquery__WEBPACK_IMPORTED_MODULE_0___default()(container);\n\n if (container.data('collection-sort') || container[0].hasAttribute('data-collection-nosort')) {\n return;\n }\n\n container.data('collection-sort', new sortablejs__WEBPACK_IMPORTED_MODULE_1__.default(container.get(0), {\n forceFallback: false,\n handle: '.collection-sort',\n animation: 150,\n onUpdate: function onUpdate() {\n return _this2.reindex(container);\n }\n }));\n });\n\n this._updateActionsStateBasedOnMinMax(list);\n }\n }, {\n key: \"addItem\",\n value: function addItem(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var position = button.data('action-add') || 'bottom';\n var list = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]'));\n var template = jquery__WEBPACK_IMPORTED_MODULE_0___default()(list.find('> [data-collection-template=\"new\"]').data('collection-template-html'));\n\n this._updateActionsStateBasedOnMinMax(list);\n\n var items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var maxItems = list.data('max');\n\n if (typeof maxItems !== 'undefined' && items.length >= maxItems) {\n return;\n }\n\n list.find('> [data-collection-holder]')[position === 'top' ? 'prepend' : 'append'](template);\n this.reindex(list);\n items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var topAction = list.closest('[data-type=\"collection\"]').find('[data-action-add=\"top\"]');\n var sortAction = list.closest('[data-type=\"collection\"]').find('[data-action=\"sort\"]');\n\n if (items.length) {\n if (topAction.length) {\n topAction.parent().removeClass('hidden');\n }\n\n if (sortAction.length && items.length > 1) {\n sortAction.removeClass('hidden');\n }\n } // refresh toggleables in a list\n\n\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-grav-field=\"toggleable\"] input[type=\"checkbox\"]').trigger('change');\n }\n }, {\n key: \"removeItem\",\n value: function removeItem(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var item = button.closest('[data-collection-item]');\n var list = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]'));\n var items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var minItems = list.data('min');\n\n if (typeof minItems !== 'undefined' && items.length <= minItems) {\n return;\n }\n\n item.remove();\n this.reindex(list);\n items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var topAction = list.closest('[data-type=\"collection\"]').find('[data-action-add=\"top\"]');\n var sortAction = list.closest('[data-type=\"collection\"]').find('[data-action=\"sort\"]');\n\n if (!items.length) {\n if (topAction.length) {\n topAction.parent().addClass('hidden');\n }\n }\n\n if (sortAction.length && items.length <= 1) {\n sortAction.addClass('hidden');\n }\n\n this._updateActionsStateBasedOnMinMax(list);\n }\n }, {\n key: \"collapseItems\",\n value: function collapseItems(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var items = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]')).find('> ul > [data-collection-item] > .item-actions [data-action=\"collapse\"]');\n items.click();\n }\n }, {\n key: \"collapseItem\",\n value: function collapseItem(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var item = button.closest('[data-collection-item]');\n button.attr('data-action', 'expand').removeClass('fa-chevron-circle-down').addClass('fa-chevron-circle-right');\n item.addClass('collection-collapsed');\n }\n }, {\n key: \"expandItems\",\n value: function expandItems(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var items = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]')).find('> ul > [data-collection-item] > .item-actions [data-action=\"expand\"]');\n items.click();\n }\n }, {\n key: \"expandItem\",\n value: function expandItem(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var item = button.closest('[data-collection-item]');\n button.attr('data-action', 'collapse').removeClass('fa-chevron-circle-right').addClass('fa-chevron-circle-down');\n item.removeClass('collection-collapsed');\n }\n }, {\n key: \"sortItems\",\n value: function sortItems(event) {\n var button = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.currentTarget);\n var sortby = button.data('action-sort');\n var sortby_dir = button.data('action-sort-dir') || 'asc';\n var list = jquery__WEBPACK_IMPORTED_MODULE_0___default()(button.closest('[data-type=\"collection\"]'));\n var items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n items.sort(function (a, b) {\n var A = jquery__WEBPACK_IMPORTED_MODULE_0___default()(a).find('[name$=\"[' + sortby + ']\"]');\n var B = jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).find('[name$=\"[' + sortby + ']\"]');\n var sort;\n\n if (sortby_dir === 'asc') {\n sort = A.val() < B.val() ? -1 : A.val() > B.val() ? 1 : 0;\n } else {\n sort = A.val() > B.val() ? -1 : A.val() < B.val() ? 1 : 0;\n }\n\n return sort;\n }).each(function (_, container) {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(container).parent().append(container);\n });\n this.reindex(list);\n }\n }, {\n key: \"observeKey\",\n value: function observeKey(event) {\n var input = jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var value = input.val();\n var item = input.closest('[data-collection-key]');\n item.data('collection-key-backup', item.data('collection-key')).data('collection-key', value);\n this.reindex(null, item);\n }\n }, {\n key: \"reindex\",\n value: function reindex(list, items) {\n items = items || jquery__WEBPACK_IMPORTED_MODULE_0___default()(list).closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n items.each(function (index, item) {\n item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(item);\n var observed = item.find('[data-key-observe]');\n var observedValue = observed.val();\n var hasCustomKey = observed.length;\n var currentKey = item.data('collection-key-backup');\n item.attr('data-collection-key', hasCustomKey ? observedValue : index);\n ['name', 'data-grav-field-name', 'for', 'id', 'data-grav-file-settings', 'data-file-post-add', 'data-file-post-remove', 'data-grav-array-name'].forEach(function (prop) {\n item.find('[' + prop + '], [_' + prop + ']').each(function () {\n var element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);\n var indexes = [];\n var array_index = null;\n var regexps = [new RegExp('\\\\[(\\\\d+|\\\\*|' + currentKey + ')\\\\]', 'g'), new RegExp('\\\\.(\\\\d+|\\\\*|' + currentKey + ')\\\\.', 'g')]; // special case to preserve array field index keys\n\n if (prop === 'name' && element.data('gravArrayType')) {\n var match_index = element.attr(prop).match(/\\[[0-9]{1,}\\]$/);\n var pattern = element[0].closest('[data-grav-array-name]').dataset.gravArrayName;\n\n if (match_index && pattern) {\n array_index = match_index[0];\n element.attr(prop, \"\".concat(pattern).concat(match_index[0]));\n return;\n }\n }\n\n if (hasCustomKey && !observedValue) {\n element.attr(\"_\".concat(prop), element.attr(prop));\n element.attr(prop, null);\n return;\n }\n\n if (element.attr(\"_\".concat(prop))) {\n element.attr(prop, element.attr(\"_\".concat(prop)));\n element.attr(\"_\".concat(prop), null);\n }\n\n element.parents('[data-collection-key]').map(function (idx, parent) {\n return indexes.push(jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).attr('data-collection-key'));\n });\n indexes.reverse();\n var matchedKey = currentKey;\n var replaced = element.attr(prop).replace(regexps[0], function ()\n /* str, p1, offset */\n {\n var extras = '';\n\n if (array_index) {\n extras = array_index;\n console.log(indexes, extras);\n }\n\n matchedKey = indexes.shift() || matchedKey;\n return \"[\".concat(matchedKey, \"]\").concat(extras);\n });\n replaced = replaced.replace(regexps[1], function ()\n /* str, p1, offset */\n {\n matchedKey = indexes.shift() || matchedKey;\n return \".\".concat(matchedKey, \".\");\n });\n element.attr(prop, replaced);\n });\n });\n });\n }\n }, {\n key: \"_onAddedNodes\",\n value: function _onAddedNodes(event, target\n /* , record, instance */\n ) {\n var _this3 = this;\n\n var collections = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).find('[data-type=\"collection\"]');\n\n if (!collections.length) {\n return;\n }\n\n collections.each(function (index, collection) {\n collection = jquery__WEBPACK_IMPORTED_MODULE_0___default()(collection);\n\n if (!~_this3.lists.index(collection)) {\n _this3.addList(collection);\n }\n });\n }\n }, {\n key: \"_updateActionsStateBasedOnMinMax\",\n value: function _updateActionsStateBasedOnMinMax(list) {\n var items = list.closest('[data-type=\"collection\"]').find('> ul > [data-collection-item]');\n var minItems = list.data('min');\n var maxItems = list.data('max');\n list.find('> .collection-actions [data-action=\"add\"]').attr('disabled', false);\n list.find('> ul > li > .item-actions [data-action=\"delete\"]').attr('disabled', false);\n\n if (typeof minItems !== 'undefined' && items.length <= minItems) {\n list.find('> ul > li > .item-actions [data-action=\"delete\"]').attr('disabled', true);\n }\n\n if (typeof maxItems !== 'undefined' && items.length >= maxItems) {\n list.find('> .collection-actions [data-action=\"add\"]').attr('disabled', true);\n }\n }\n }]);\n\n return CollectionsField;\n}();\n\n\nvar Instance = new CollectionsField();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9jb2xsZWN0aW9ucy5qcz82YzU1Il0sIm5hbWVzIjpbIkNvbGxlY3Rpb25zRmllbGQiLCJsaXN0cyIsIiQiLCJlYWNoIiwiaW5kZXgiLCJsaXN0IiwiYWRkTGlzdCIsIm9uIiwiX29uQWRkZWROb2RlcyIsImJpbmQiLCJhZGQiLCJldmVudCIsImFkZEl0ZW0iLCJyZW1vdmVJdGVtIiwiY29sbGFwc2VJdGVtIiwiZXhwYW5kSXRlbSIsInNvcnRJdGVtcyIsImNvbGxhcHNlSXRlbXMiLCJleHBhbmRJdGVtcyIsIm9ic2VydmVLZXkiLCJmaW5kIiwiY29udGFpbmVyIiwiZGF0YSIsImhhc0F0dHJpYnV0ZSIsIlNvcnRhYmxlIiwiZ2V0IiwiZm9yY2VGYWxsYmFjayIsImhhbmRsZSIsImFuaW1hdGlvbiIsIm9uVXBkYXRlIiwicmVpbmRleCIsIl91cGRhdGVBY3Rpb25zU3RhdGVCYXNlZE9uTWluTWF4IiwiYnV0dG9uIiwiY3VycmVudFRhcmdldCIsInBvc2l0aW9uIiwiY2xvc2VzdCIsInRlbXBsYXRlIiwiaXRlbXMiLCJtYXhJdGVtcyIsImxlbmd0aCIsInRvcEFjdGlvbiIsInNvcnRBY3Rpb24iLCJwYXJlbnQiLCJyZW1vdmVDbGFzcyIsInRyaWdnZXIiLCJpdGVtIiwibWluSXRlbXMiLCJyZW1vdmUiLCJhZGRDbGFzcyIsImNsaWNrIiwiYXR0ciIsInNvcnRieSIsInNvcnRieV9kaXIiLCJzb3J0IiwiYSIsImIiLCJBIiwiQiIsInZhbCIsIl8iLCJhcHBlbmQiLCJpbnB1dCIsInRhcmdldCIsInZhbHVlIiwib2JzZXJ2ZWQiLCJvYnNlcnZlZFZhbHVlIiwiaGFzQ3VzdG9tS2V5IiwiY3VycmVudEtleSIsImZvckVhY2giLCJwcm9wIiwiZWxlbWVudCIsImluZGV4ZXMiLCJhcnJheV9pbmRleCIsInJlZ2V4cHMiLCJSZWdFeHAiLCJtYXRjaF9pbmRleCIsIm1hdGNoIiwicGF0dGVybiIsImRhdGFzZXQiLCJncmF2QXJyYXlOYW1lIiwicGFyZW50cyIsIm1hcCIsImlkeCIsInB1c2giLCJyZXZlcnNlIiwibWF0Y2hlZEtleSIsInJlcGxhY2VkIiwicmVwbGFjZSIsImV4dHJhcyIsImNvbnNvbGUiLCJsb2ciLCJzaGlmdCIsImNvbGxlY3Rpb25zIiwiY29sbGVjdGlvbiIsIkluc3RhbmNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7O0lBRXFCQSxnQjtBQUNqQiw4QkFBYztBQUFBOztBQUFBOztBQUNWLFNBQUtDLEtBQUwsR0FBYUMsNkNBQUMsRUFBZDtBQUVBQSxpREFBQyxDQUFDLDBCQUFELENBQUQsQ0FBOEJDLElBQTlCLENBQW1DLFVBQUNDLEtBQUQsRUFBUUMsSUFBUjtBQUFBLGFBQWlCLEtBQUksQ0FBQ0MsT0FBTCxDQUFhRCxJQUFiLENBQWpCO0FBQUEsS0FBbkM7QUFDQUgsaURBQUMsQ0FBQyxNQUFELENBQUQsQ0FBVUssRUFBVixDQUFhLGdCQUFiLEVBQStCLEtBQUtDLGFBQUwsQ0FBbUJDLElBQW5CLENBQXdCLElBQXhCLENBQS9CO0FBRUg7Ozs7NEJBRU9KLEksRUFBTTtBQUFBOztBQUNWQSxVQUFJLEdBQUdILDZDQUFDLENBQUNHLElBQUQsQ0FBUjtBQUNBLFdBQUtKLEtBQUwsR0FBYSxLQUFLQSxLQUFMLENBQVdTLEdBQVgsQ0FBZUwsSUFBZixDQUFiO0FBRUFBLFVBQUksQ0FBQ0UsRUFBTCxDQUFRLE9BQVIsRUFBaUIsMkNBQWpCLEVBQThELFVBQUNJLEtBQUQ7QUFBQSxlQUFXLE1BQUksQ0FBQ0MsT0FBTCxDQUFhRCxLQUFiLENBQVg7QUFBQSxPQUE5RDtBQUNBTixVQUFJLENBQUNFLEVBQUwsQ0FBUSxPQUFSLEVBQWlCLGtEQUFqQixFQUFxRSxVQUFDSSxLQUFEO0FBQUEsZUFBVyxNQUFJLENBQUNFLFVBQUwsQ0FBZ0JGLEtBQWhCLENBQVg7QUFBQSxPQUFyRTtBQUNBTixVQUFJLENBQUNFLEVBQUwsQ0FBUSxPQUFSLEVBQWlCLG9EQUFqQixF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QyxDQUE4QywrQkFBOUMsQ0FBWjtBQUNBLFVBQUkwQixRQUFRLEdBQUd6QyxJQUFJLENBQUNpQixJQUFMLENBQVUsS0FBVixDQUFmO0FBQ0EsVUFBSWdCLFFBQVEsR0FBR2pDLElBQUksQ0FBQ2lCLElBQUwsQ0FBVSxLQUFWLENBQWY7QUFFQWpCLFVBQUksQ0FBQ2UsSUFBTCxDQUFVLDJDQUFWLEVBQXVEOEIsSUFBdkQsQ0FBNEQsVUFBNUQsRUFBd0UsS0FBeEU7QUFDQTdDLFVBQUksQ0FBQ2UsSUFBTCxDQUFVLGtEQUFWLEVBQThEOEIsSUFBOUQsQ0FBbUUsVUFBbkUsRUFBK0UsS0FBL0U7O0FBRUEsVUFBSSxPQUFPSixRQUFQLEtBQW9CLFdBQXBCLElBQW1DVCxLQUFLLENBQUNFLE1BQU4sSUFBZ0JPLFFBQXZELEVBQWlFO0FBQzdEekMsWUFBSSxDQUFDZSxJQUFMLENBQVUsa0RBQVYsRUFBOEQ4QixJQUE5RCxDQUFtRSxVQUFuRSxFQUErRSxJQUEvRTtBQUNIOztBQUVELFVBQUksT0FBT1osUUFBUCxLQUFvQixXQUFwQixJQUFtQ0QsS0FBSyxDQUFDRSxNQUFOLElBQWdCRCxRQUF2RCxFQUFpRTtBQUM3RGpDLFlBQUksQ0FBQ2UsSUFBTCxDQUFVLDJDQUFWLEVBQXVEOEIsSUFBdkQsQ0FBNEQsVUFBNUQsRUFBd0UsSUFBeEU7QUFDSDtBQUNKOzs7Ozs7O0FBR0UsSUFBSTRDLFFBQVEsR0FBRyxJQUFJOUYsZ0JBQUosRUFBZiIsImZpbGUiOiIuL2FwcC9mb3Jtcy9maWVsZHMvY29sbGVjdGlvbnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IFNvcnRhYmxlIGZyb20gJ3NvcnRhYmxlanMnO1xuaW1wb3J0ICcuLi8uLi91dGlscy9qcXVlcnktdXRpbHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb2xsZWN0aW9uc0ZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5saXN0cyA9ICQoKTtcblxuICAgICAgICAkKCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpLmVhY2goKGluZGV4LCBsaXN0KSA9PiB0aGlzLmFkZExpc3QobGlzdCkpO1xuICAgICAgICAkKCdib2R5Jykub24oJ211dGF0aW9uLl9ncmF2JywgdGhpcy5fb25BZGRlZE5vZGVzLmJpbmQodGhpcykpO1xuXG4gICAgfVxuXG4gICAgYWRkTGlzdChsaXN0KSB7XG4gICAgICAgIGxpc3QgPSAkKGxpc3QpO1xuICAgICAgICB0aGlzLmxpc3RzID0gdGhpcy5saXN0cy5hZGQobGlzdCk7XG5cbiAgICAgICAgbGlzdC5vbignY2xpY2snLCAnPiAuY29sbGVjdGlvbi1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImFkZFwiXScsIChldmVudCkgPT4gdGhpcy5hZGRJdGVtKGV2ZW50KSk7XG4gICAgICAgIGxpc3Qub24oJ2NsaWNrJywgJz4gdWwgPiBsaSA+IC5pdGVtLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiZGVsZXRlXCJdJywgKGV2ZW50KSA9PiB0aGlzLnJlbW92ZUl0ZW0oZXZlbnQpKTtcbiAgICAgICAgbGlzdC5vbignY2xpY2snLCAnPiB1bCA+IGxpID4gLml0ZW0tYWN0aW9ucyBbZGF0YS1hY3Rpb249XCJjb2xsYXBzZVwiXScsIChldmVudCkgPT4gdGhpcy5jb2xsYXBzZUl0ZW0oZXZlbnQpKTtcbiAgICAgICAgbGlzdC5vbignY2xpY2snLCAnPiB1bCA+IGxpID4gLml0ZW0tYWN0aW9ucyBbZGF0YS1hY3Rpb249XCJleHBhbmRcIl0nLCAoZXZlbnQpID0+IHRoaXMuZXhwYW5kSXRlbShldmVudCkpO1xuICAgICAgICBsaXN0Lm9uKCdjbGljaycsICc+IC5jb2xsZWN0aW9uLWFjdGlvbnMgW2RhdGEtYWN0aW9uLXNvcnQ9XCJkYXRlXCJdJywgKGV2ZW50KSA9PiB0aGlzLnNvcnRJdGVtcyhldmVudCkpO1xuICAgICAgICBsaXN0Lm9uKCdjbGljaycsICc+IC5jb2xsZWN0aW9uLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiY29sbGFwc2VfYWxsXCJdJywgKGV2ZW50KSA9PiB0aGlzLmNvbGxhcHNlSXRlbXMoZXZlbnQpKTtcbiAgICAgICAgbGlzdC5vbignY2xpY2snLCAnPiAuY29sbGVjdGlvbi1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImV4cGFuZF9hbGxcIl0nLCAoZXZlbnQpID0+IHRoaXMuZXhwYW5kSXRlbXMoZXZlbnQpKTtcbiAgICAgICAgbGlzdC5vbignaW5wdXQgY2hhbmdlJywgJ1tkYXRhLWtleS1vYnNlcnZlXScsIChldmVudCkgPT4gdGhpcy5vYnNlcnZlS2V5KGV2ZW50KSk7XG5cbiAgICAgICAgbGlzdC5maW5kKCdbZGF0YS1jb2xsZWN0aW9uLWhvbGRlcl0nKS5lYWNoKChpbmRleCwgY29udGFpbmVyKSA9PiB7XG4gICAgICAgICAgICBjb250YWluZXIgPSAkKGNvbnRhaW5lcik7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyLmRhdGEoJ2NvbGxlY3Rpb24tc29ydCcpIHx8IGNvbnRhaW5lclswXS5oYXNBdHRyaWJ1dGUoJ2RhdGEtY29sbGVjdGlvbi1ub3NvcnQnKSkgeyByZXR1cm47IH1cblxuICAgICAgICAgICAgY29udGFpbmVyLmRhdGEoJ2NvbGxlY3Rpb24tc29ydCcsIG5ldyBTb3J0YWJsZShjb250YWluZXIuZ2V0KDApLCB7XG4gICAgICAgICAgICAgICAgZm9yY2VGYWxsYmFjazogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGFuZGxlOiAnLmNvbGxlY3Rpb24tc29ydCcsXG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uOiAxNTAsXG4gICAgICAgICAgICAgICAgb25VcGRhdGU6ICgpID0+IHRoaXMucmVpbmRleChjb250YWluZXIpXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZUFjdGlvbnNTdGF0ZUJhc2VkT25NaW5NYXgobGlzdCk7XG4gICAgfVxuXG4gICAgYWRkSXRlbShldmVudCkge1xuICAgICAgICBsZXQgYnV0dG9uID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gYnV0dG9uLmRhdGEoJ2FjdGlvbi1hZGQnKSB8fCAnYm90dG9tJztcbiAgICAgICAgbGV0IGxpc3QgPSAkKGJ1dHRvbi5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpKTtcbiAgICAgICAgbGV0IHRlbXBsYXRlID0gJChsaXN0LmZpbmQoJz4gW2RhdGEtY29sbGVjdGlvbi10ZW1wbGF0ZT1cIm5ld1wiXScpLmRhdGEoJ2NvbGxlY3Rpb24tdGVtcGxhdGUtaHRtbCcpKTtcblxuICAgICAgICB0aGlzLl91cGRhdGVBY3Rpb25zU3RhdGVCYXNlZE9uTWluTWF4KGxpc3QpO1xuICAgICAgICBsZXQgaXRlbXMgPSBsaXN0LmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykuZmluZCgnPiB1bCA+IFtkYXRhLWNvbGxlY3Rpb24taXRlbV0nKTtcbiAgICAgICAgbGV0IG1heEl0ZW1zID0gbGlzdC5kYXRhKCdtYXgnKTtcbiAgICAgICAgaWYgKHR5cGVvZiBtYXhJdGVtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbXMubGVuZ3RoID49IG1heEl0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsaXN0LmZpbmQoJz4gW2RhdGEtY29sbGVjdGlvbi1ob2xkZXJdJylbcG9zaXRpb24gPT09ICd0b3AnID8gJ3ByZXBlbmQnIDogJ2FwcGVuZCddKHRlbXBsYXRlKTtcbiAgICAgICAgdGhpcy5yZWluZGV4KGxpc3QpO1xuXG4gICAgICAgIGl0ZW1zID0gbGlzdC5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpLmZpbmQoJz4gdWwgPiBbZGF0YS1jb2xsZWN0aW9uLWl0ZW1dJyk7XG4gICAgICAgIGxldCB0b3BBY3Rpb24gPSBsaXN0LmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykuZmluZCgnW2RhdGEtYWN0aW9uLWFkZD1cInRvcFwiXScpO1xuICAgICAgICBsZXQgc29ydEFjdGlvbiA9IGxpc3QuY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKS5maW5kKCdbZGF0YS1hY3Rpb249XCJzb3J0XCJdJyk7XG5cbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRvcEFjdGlvbi5sZW5ndGgpIHsgdG9wQWN0aW9uLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsgfVxuICAgICAgICAgICAgaWYgKHNvcnRBY3Rpb24ubGVuZ3RoICYmIGl0ZW1zLmxlbmd0aCA+IDEpIHsgc29ydEFjdGlvbi5yZW1vdmVDbGFzcygnaGlkZGVuJyk7IH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlZnJlc2ggdG9nZ2xlYWJsZXMgaW4gYSBsaXN0XG4gICAgICAgICQoJ1tkYXRhLWdyYXYtZmllbGQ9XCJ0b2dnbGVhYmxlXCJdIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXScpLnRyaWdnZXIoJ2NoYW5nZScpO1xuICAgIH1cblxuICAgIHJlbW92ZUl0ZW0oZXZlbnQpIHtcbiAgICAgICAgbGV0IGJ1dHRvbiA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgIGxldCBpdGVtID0gYnV0dG9uLmNsb3Nlc3QoJ1tkYXRhLWNvbGxlY3Rpb24taXRlbV0nKTtcbiAgICAgICAgbGV0IGxpc3QgPSAkKGJ1dHRvbi5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpKTtcblxuICAgICAgICBsZXQgaXRlbXMgPSBsaXN0LmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykuZmluZCgnPiB1bCA+IFtkYXRhLWNvbGxlY3Rpb24taXRlbV0nKTtcbiAgICAgICAgbGV0IG1pbkl0ZW1zID0gbGlzdC5kYXRhKCdtaW4nKTtcblxuICAgICAgICBpZiAodHlwZW9mIG1pbkl0ZW1zICE9PSAndW5kZWZpbmVkJyAmJiBpdGVtcy5sZW5ndGggPD0gbWluSXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0ucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMucmVpbmRleChsaXN0KTtcblxuICAgICAgICBpdGVtcyA9IGxpc3QuY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKS5maW5kKCc+IHVsID4gW2RhdGEtY29sbGVjdGlvbi1pdGVtXScpO1xuICAgICAgICBsZXQgdG9wQWN0aW9uID0gbGlzdC5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpLmZpbmQoJ1tkYXRhLWFjdGlvbi1hZGQ9XCJ0b3BcIl0nKTtcbiAgICAgICAgbGV0IHNvcnRBY3Rpb24gPSBsaXN0LmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykuZmluZCgnW2RhdGEtYWN0aW9uPVwic29ydFwiXScpO1xuXG4gICAgICAgIGlmICghaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodG9wQWN0aW9uLmxlbmd0aCkgeyB0b3BBY3Rpb24ucGFyZW50KCkuYWRkQ2xhc3MoJ2hpZGRlbicpOyB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc29ydEFjdGlvbi5sZW5ndGggJiYgaXRlbXMubGVuZ3RoIDw9IDEpIHsgc29ydEFjdGlvbi5hZGRDbGFzcygnaGlkZGVuJyk7IH1cbiAgICAgICAgdGhpcy5fdXBkYXRlQWN0aW9uc1N0YXRlQmFzZWRPbk1pbk1heChsaXN0KTtcbiAgICB9XG5cbiAgICBjb2xsYXBzZUl0ZW1zKGV2ZW50KSB7XG4gICAgICAgIGxldCBidXR0b24gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBsZXQgaXRlbXMgPSAkKGJ1dHRvbi5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpKS5maW5kKCc+IHVsID4gW2RhdGEtY29sbGVjdGlvbi1pdGVtXSA+IC5pdGVtLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiY29sbGFwc2VcIl0nKTtcblxuICAgICAgICBpdGVtcy5jbGljaygpO1xuICAgIH1cblxuICAgIGNvbGxhcHNlSXRlbShldmVudCkge1xuICAgICAgICBsZXQgYnV0dG9uID0gJChldmVudC5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgbGV0IGl0ZW0gPSBidXR0b24uY2xvc2VzdCgnW2RhdGEtY29sbGVjdGlvbi1pdGVtXScpO1xuXG4gICAgICAgIGJ1dHRvbi5hdHRyKCdkYXRhLWFjdGlvbicsICdleHBhbmQnKS5yZW1vdmVDbGFzcygnZmEtY2hldnJvbi1jaXJjbGUtZG93bicpLmFkZENsYXNzKCdmYS1jaGV2cm9uLWNpcmNsZS1yaWdodCcpO1xuICAgICAgICBpdGVtLmFkZENsYXNzKCdjb2xsZWN0aW9uLWNvbGxhcHNlZCcpO1xuICAgIH1cblxuICAgIGV4cGFuZEl0ZW1zKGV2ZW50KSB7XG4gICAgICAgIGxldCBidXR0b24gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBsZXQgaXRlbXMgPSAkKGJ1dHRvbi5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpKS5maW5kKCc+IHVsID4gW2RhdGEtY29sbGVjdGlvbi1pdGVtXSA+IC5pdGVtLWFjdGlvbnMgW2RhdGEtYWN0aW9uPVwiZXhwYW5kXCJdJyk7XG5cbiAgICAgICAgaXRlbXMuY2xpY2soKTtcbiAgICB9XG5cbiAgICBleHBhbmRJdGVtKGV2ZW50KSB7XG4gICAgICAgIGxldCBidXR0b24gPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICBsZXQgaXRlbSA9IGJ1dHRvbi5jbG9zZXN0KCdbZGF0YS1jb2xsZWN0aW9uLWl0ZW1dJyk7XG5cbiAgICAgICAgYnV0dG9uLmF0dHIoJ2RhdGEtYWN0aW9uJywgJ2NvbGxhcHNlJykucmVtb3ZlQ2xhc3MoJ2ZhLWNoZXZyb24tY2lyY2xlLXJpZ2h0JykuYWRkQ2xhc3MoJ2ZhLWNoZXZyb24tY2lyY2xlLWRvd24nKTtcbiAgICAgICAgaXRlbS5yZW1vdmVDbGFzcygnY29sbGVjdGlvbi1jb2xsYXBzZWQnKTtcbiAgICB9XG5cbiAgICBzb3J0SXRlbXMoZXZlbnQpIHtcbiAgICAgICAgbGV0IGJ1dHRvbiA9ICQoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgIGxldCBzb3J0YnkgPSBidXR0b24uZGF0YSgnYWN0aW9uLXNvcnQnKTtcbiAgICAgICAgbGV0IHNvcnRieV9kaXIgPSBidXR0b24uZGF0YSgnYWN0aW9uLXNvcnQtZGlyJykgfHwgJ2FzYyc7XG4gICAgICAgIGxldCBsaXN0ID0gJChidXR0b24uY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKSk7XG4gICAgICAgIGxldCBpdGVtcyA9IGxpc3QuY2xvc2VzdCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKS5maW5kKCc+IHVsID4gW2RhdGEtY29sbGVjdGlvbi1pdGVtXScpO1xuXG4gICAgICAgIGl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGxldCBBID0gJChhKS5maW5kKCdbbmFtZSQ9XCJbJyArIHNvcnRieSArICddXCJdJyk7XG4gICAgICAgICAgICBsZXQgQiA9ICQoYikuZmluZCgnW25hbWUkPVwiWycgKyBzb3J0YnkgKyAnXVwiXScpO1xuICAgICAgICAgICAgbGV0IHNvcnQ7XG5cbiAgICAgICAgICAgIGlmIChzb3J0YnlfZGlyID09PSAnYXNjJykge1xuICAgICAgICAgICAgICAgIHNvcnQgPSAoQS52YWwoKSA8IEIudmFsKCkpID8gLTEgOiAoQS52YWwoKSA+IEIudmFsKCkpID8gMSA6IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNvcnQgPSAoQS52YWwoKSA+IEIudmFsKCkpID8gLTEgOiAoQS52YWwoKSA8IEIudmFsKCkpID8gMSA6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzb3J0O1xuICAgICAgICB9KS5lYWNoKChfLCBjb250YWluZXIpID0+IHtcbiAgICAgICAgICAgICQoY29udGFpbmVyKS5wYXJlbnQoKS5hcHBlbmQoY29udGFpbmVyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZWluZGV4KGxpc3QpO1xuICAgIH1cblxuICAgIG9ic2VydmVLZXkoZXZlbnQpIHtcbiAgICAgICAgbGV0IGlucHV0ID0gJChldmVudC50YXJnZXQpO1xuICAgICAgICBsZXQgdmFsdWUgPSBpbnB1dC52YWwoKTtcbiAgICAgICAgbGV0IGl0ZW0gPSBpbnB1dC5jbG9zZXN0KCdbZGF0YS1jb2xsZWN0aW9uLWtleV0nKTtcblxuICAgICAgICBpdGVtLmRhdGEoJ2NvbGxlY3Rpb24ta2V5LWJhY2t1cCcsIGl0ZW0uZGF0YSgnY29sbGVjdGlvbi1rZXknKSkuZGF0YSgnY29sbGVjdGlvbi1rZXknLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMucmVpbmRleChudWxsLCBpdGVtKTtcbiAgICB9XG5cbiAgICByZWluZGV4KGxpc3QsIGl0ZW1zKSB7XG4gICAgICAgIGl0ZW1zID0gaXRlbXMgfHwgJChsaXN0KS5jbG9zZXN0KCdbZGF0YS10eXBlPVwiY29sbGVjdGlvblwiXScpLmZpbmQoJz4gdWwgPiBbZGF0YS1jb2xsZWN0aW9uLWl0ZW1dJyk7XG5cbiAgICAgICAgaXRlbXMuZWFjaCgoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0gPSAkKGl0ZW0pO1xuXG4gICAgICAgICAgICBsZXQgb2JzZXJ2ZWQgPSBpdGVtLmZpbmQoJ1tkYXRhLWtleS1vYnNlcnZlXScpO1xuICAgICAgICAgICAgbGV0IG9ic2VydmVkVmFsdWUgPSBvYnNlcnZlZC52YWwoKTtcbiAgICAgICAgICAgIGxldCBoYXNDdXN0b21LZXkgPSBvYnNlcnZlZC5sZW5ndGg7XG4gICAgICAgICAgICBsZXQgY3VycmVudEtleSA9IGl0ZW0uZGF0YSgnY29sbGVjdGlvbi1rZXktYmFja3VwJyk7XG5cbiAgICAgICAgICAgIGl0ZW0uYXR0cignZGF0YS1jb2xsZWN0aW9uLWtleScsIGhhc0N1c3RvbUtleSA/IG9ic2VydmVkVmFsdWUgOiBpbmRleCk7XG5cbiAgICAgICAgICAgIFsnbmFtZScsICdkYXRhLWdyYXYtZmllbGQtbmFtZScsICdmb3InLCAnaWQnLCAnZGF0YS1ncmF2LWZpbGUtc2V0dGluZ3MnLCAnZGF0YS1maWxlLXBvc3QtYWRkJywgJ2RhdGEtZmlsZS1wb3N0LXJlbW92ZScsICdkYXRhLWdyYXYtYXJyYXktbmFtZSddLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLmZpbmQoJ1snICsgcHJvcCArICddLCBbXycgKyBwcm9wICsgJ10nKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIGxldCBhcnJheV9pbmRleCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdleHBzID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFJlZ0V4cCgnXFxcXFsoXFxcXGQrfFxcXFwqfCcgKyBjdXJyZW50S2V5ICsgJylcXFxcXScsICdnJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVnRXhwKCdcXFxcLihcXFxcZCt8XFxcXCp8JyArIGN1cnJlbnRLZXkgKyAnKVxcXFwuJywgJ2cnKVxuICAgICAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSB0byBwcmVzZXJ2ZSBhcnJheSBmaWVsZCBpbmRleCBrZXlzXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSAnbmFtZScgJiYgZWxlbWVudC5kYXRhKCdncmF2QXJyYXlUeXBlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoX2luZGV4ID0gZWxlbWVudC5hdHRyKHByb3ApLm1hdGNoKC9cXFtbMC05XXsxLH1cXF0kLyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXR0ZXJuID0gZWxlbWVudFswXS5jbG9zZXN0KCdbZGF0YS1ncmF2LWFycmF5LW5hbWVdJykuZGF0YXNldC5ncmF2QXJyYXlOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoX2luZGV4ICYmIHBhdHRlcm4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9pbmRleCA9IG1hdGNoX2luZGV4WzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXR0cihwcm9wLCBgJHtwYXR0ZXJufSR7bWF0Y2hfaW5kZXhbMF19YCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0N1c3RvbUtleSAmJiAhb2JzZXJ2ZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hdHRyKGBfJHtwcm9wfWAsIGVsZW1lbnQuYXR0cihwcm9wKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmF0dHIocHJvcCwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5hdHRyKGBfJHtwcm9wfWApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmF0dHIocHJvcCwgZWxlbWVudC5hdHRyKGBfJHtwcm9wfWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXR0cihgXyR7cHJvcH1gLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQucGFyZW50cygnW2RhdGEtY29sbGVjdGlvbi1rZXldJykubWFwKChpZHgsIHBhcmVudCkgPT4gaW5kZXhlcy5wdXNoKCQocGFyZW50KS5hdHRyKCdkYXRhLWNvbGxlY3Rpb24ta2V5JykpKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhlcy5yZXZlcnNlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoZWRLZXkgPSBjdXJyZW50S2V5O1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVwbGFjZWQgPSBlbGVtZW50LmF0dHIocHJvcCkucmVwbGFjZShyZWdleHBzWzBdLCAoLyogc3RyLCBwMSwgb2Zmc2V0ICovKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXh0cmFzID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlfaW5kZXgpIHsgZXh0cmFzID0gYXJyYXlfaW5kZXg7IGNvbnNvbGUubG9nKGluZGV4ZXMsIGV4dHJhcyk7IH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZEtleSA9IGluZGV4ZXMuc2hpZnQoKSB8fCBtYXRjaGVkS2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBbJHttYXRjaGVkS2V5fV0ke2V4dHJhc31gO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlZCA9IHJlcGxhY2VkLnJlcGxhY2UocmVnZXhwc1sxXSwgKC8qIHN0ciwgcDEsIG9mZnNldCAqLykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZEtleSA9IGluZGV4ZXMuc2hpZnQoKSB8fCBtYXRjaGVkS2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAuJHttYXRjaGVkS2V5fS5gO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmF0dHIocHJvcCwgcmVwbGFjZWQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIF9vbkFkZGVkTm9kZXMoZXZlbnQsIHRhcmdldC8qICwgcmVjb3JkLCBpbnN0YW5jZSAqLykge1xuICAgICAgICBsZXQgY29sbGVjdGlvbnMgPSAkKHRhcmdldCkuZmluZCgnW2RhdGEtdHlwZT1cImNvbGxlY3Rpb25cIl0nKTtcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9ucy5sZW5ndGgpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY29sbGVjdGlvbnMuZWFjaCgoaW5kZXgsIGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSAkKGNvbGxlY3Rpb24pO1xuICAgICAgICAgICAgaWYgKCF+dGhpcy5saXN0cy5pbmRleChjb2xsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTGlzdChjb2xsZWN0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZUFjdGlvbnNTdGF0ZUJhc2VkT25NaW5NYXgobGlzdCkge1xuICAgICAgICBsZXQgaXRlbXMgPSBsaXN0LmNsb3Nlc3QoJ1tkYXRhLXR5cGU9XCJjb2xsZWN0aW9uXCJdJykuZmluZCgnPiB1bCA+IFtkYXRhLWNvbGxlY3Rpb24taXRlbV0nKTtcbiAgICAgICAgbGV0IG1pbkl0ZW1zID0gbGlzdC5kYXRhKCdtaW4nKTtcbiAgICAgICAgbGV0IG1heEl0ZW1zID0gbGlzdC5kYXRhKCdtYXgnKTtcblxuICAgICAgICBsaXN0LmZpbmQoJz4gLmNvbGxlY3Rpb24tYWN0aW9ucyBbZGF0YS1hY3Rpb249XCJhZGRcIl0nKS5hdHRyKCdkaXNhYmxlZCcsIGZhbHNlKTtcbiAgICAgICAgbGlzdC5maW5kKCc+IHVsID4gbGkgPiAuaXRlbS1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImRlbGV0ZVwiXScpLmF0dHIoJ2Rpc2FibGVkJywgZmFsc2UpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgbWluSXRlbXMgIT09ICd1bmRlZmluZWQnICYmIGl0ZW1zLmxlbmd0aCA8PSBtaW5JdGVtcykge1xuICAgICAgICAgICAgbGlzdC5maW5kKCc+IHVsID4gbGkgPiAuaXRlbS1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImRlbGV0ZVwiXScpLmF0dHIoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG1heEl0ZW1zICE9PSAndW5kZWZpbmVkJyAmJiBpdGVtcy5sZW5ndGggPj0gbWF4SXRlbXMpIHtcbiAgICAgICAgICAgIGxpc3QuZmluZCgnPiAuY29sbGVjdGlvbi1hY3Rpb25zIFtkYXRhLWFjdGlvbj1cImFkZFwiXScpLmF0dHIoJ2Rpc2FibGVkJywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBsZXQgSW5zdGFuY2UgPSBuZXcgQ29sbGVjdGlvbnNGaWVsZCgpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/forms/fields/collections.js\n"); /***/ }), @@ -160,7 +160,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ FilesField,\n/* harmony export */ \"UriToMarkdown\": () => /* binding */ UriToMarkdown,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dropzone */ \"./node_modules/dropzone/dist/dropzone.js\");\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_3__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n // import EXIF from 'exif-js';\n\n\n // translations\n\nvar Dictionary = {\n dictCancelUpload: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_CANCEL_UPLOAD,\n dictCancelUploadConfirmation: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_CANCEL_UPLOAD_CONFIRMATION,\n dictDefaultMessage: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_DEFAULT_MESSAGE,\n dictFallbackMessage: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_FALLBACK_MESSAGE,\n dictFallbackText: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_FALLBACK_TEXT,\n dictFileTooBig: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_FILE_TOO_BIG,\n dictInvalidFileType: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_INVALID_FILE_TYPE,\n dictMaxFilesExceeded: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_MAX_FILES_EXCEEDED,\n dictRemoveFile: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_REMOVE_FILE,\n dictResponseError: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_RESPONSE_ERROR\n};\n(dropzone__WEBPACK_IMPORTED_MODULE_1___default().autoDiscover) = false;\n(dropzone__WEBPACK_IMPORTED_MODULE_1___default().options.gravPageDropzone) = {};\n\n(dropzone__WEBPACK_IMPORTED_MODULE_1___default().confirm) = function (question, accepted, rejected) {\n var doc = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);\n var modalSelector = '[data-remodal-id=\"delete-media\"]';\n\n var removeEvents = function removeEvents() {\n doc.off('confirmation', modalSelector, accept);\n doc.off('cancellation', modalSelector, reject);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(modalSelector).find('.remodal-confirm').removeClass('pointer-events-disabled');\n };\n\n var accept = function accept() {\n accepted && accepted();\n removeEvents();\n };\n\n var reject = function reject() {\n rejected && rejected();\n removeEvents();\n };\n\n (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[jquery__WEBPACK_IMPORTED_MODULE_0___default()(modalSelector).data('remodal')].open();\n doc.on('confirmation', modalSelector, accept);\n doc.on('cancellation', modalSelector, reject);\n};\n\nvar DropzoneMediaConfig = {\n timeout: 0,\n thumbnailWidth: 200,\n thumbnailHeight: 150,\n addRemoveLinks: false,\n dictDefaultMessage: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROP_FILES_HERE_TO_UPLOAD.replace(/</g, '<').replace(/>/g, '>'),\n dictRemoveFileConfirmation: '[placeholder]',\n previewTemplate: \"\\n
\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_ERROR_UPLOAD, \" \").concat(file.name, \"
\\n\").concat(response.message, \"\")\n });\n }\n }, {\n key: \"onDropzoneComplete\",\n value: function onDropzoneComplete(file) {\n if (!file.accepted && !file.rejected) {\n var data = {\n status: 'error',\n message: \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_UNSUPPORTED, \": \").concat(file.name.match(/\\..+/).join(''))\n };\n return this.handleError({\n file: file,\n data: data,\n mode: 'removeFile',\n msg: \"
\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_ERROR_ADD, \" \").concat(file.name, \"
\\n\").concat(data.message, \"\")\n });\n }\n\n if (this.options.reloadPage) {\n __webpack_require__.g.location.reload();\n }\n }\n }, {\n key: \"b64_to_utf8\",\n value: function b64_to_utf8(str) {\n str = str.replace(/\\s/g, '');\n return decodeURIComponent(escape(window.atob(str)));\n }\n }, {\n key: \"onDropzoneRemovedFile\",\n value: function onDropzoneRemovedFile(file) {\n var _this5 = this;\n\n if (!file.accepted || file.rejected) {\n return;\n }\n\n var url = file.removeUrl || this.urls[\"delete\"] || this.options.url;\n var path = (url || '').match(/path:(.*)\\//);\n var body = {\n filename: file.name,\n uri: this.getURI()\n };\n\n if (file.sessionParams) {\n body.task = 'filessessionremove';\n body.session = file.sessionParams;\n }\n\n var customPost = this.container.data('filePostRemove') || {};\n\n if (Object.keys(customPost).length) {\n body = {};\n Object.keys(customPost).forEach(function (key) {\n body[key] = customPost[key];\n });\n }\n\n body['filename'] = file.name;\n body['admin-nonce'] = grav_config__WEBPACK_IMPORTED_MODULE_3__.config.admin_nonce;\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: body\n }, function () {\n if (!path) {\n return;\n }\n\n path = _this5.b64_to_utf8(path[1]);\n\n var input = _this5.container.find('[name][type=\"hidden\"]');\n\n var data = JSON.parse(input.val() || '{}');\n delete data[path];\n input.val(JSON.stringify(data));\n });\n }\n }, {\n key: \"onDropzoneError\",\n value: function onDropzoneError(file, response, xhr) {\n var message = xhr ? response.error.message : response;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(file.previewElement).find('[data-dz-errormessage]').html(message);\n return this.handleError({\n file: file,\n data: {\n status: 'error'\n },\n msg: \"
\".concat(message, \"\")\n });\n }\n }, {\n key: \"handleError\",\n value: function handleError(options) {\n var file = options.file,\n data = options.data,\n mode = options.mode,\n msg = options.msg;\n\n if (data.status !== 'error' && data.status !== 'unauthorized') {\n return;\n }\n\n switch (mode) {\n case 'addBack':\n if (file instanceof File) {\n this.dropzone.addFile.call(this.dropzone, file);\n } else {\n this.dropzone.files.push(file);\n this.dropzone.options.addedfile.call(this.dropzone, file);\n this.dropzone.options.thumbnail.call(this.dropzone, file, file.extras.url);\n }\n\n break;\n\n case 'removeFile':\n default:\n if (~this.dropzone.files.indexOf(file)) {\n file.rejected = true;\n this.dropzone.removeFile.call(this.dropzone, file, {\n silent: true\n });\n }\n\n break;\n }\n\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"generic\"]');\n modal.find('.error-content').html(msg);\n (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal.data('remodal')].open();\n }\n }]);\n\n return FilesField;\n}();\n\n\nfunction UriToMarkdown(uri) {\n uri = uri.replace(/@3x|@2x|@1x/, '');\n uri = uri.replace(/\\(/g, '%28');\n uri = uri.replace(/\\)/g, '%29');\n return uri.match(/\\.(jpe?g|png|gif|svg|mp4|webm|ogv|mov)$/i) ? \"\") : \"[\".concat(decodeURI(uri), \"](\").concat(uri, \")\");\n}\nvar instances = [];\nvar cache = jquery__WEBPACK_IMPORTED_MODULE_0___default()();\n\nvar onAddedNodes = function onAddedNodes(event, target\n/* , record, instance */\n) {\n var files = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).find('.dropzone.files-upload');\n\n if (!files.length) {\n return;\n }\n\n files.each(function (index, file) {\n file = jquery__WEBPACK_IMPORTED_MODULE_0___default()(file);\n\n if (!~cache.index(file)) {\n addNode(file);\n }\n });\n};\n\nvar addNode = function addNode(container) {\n container = jquery__WEBPACK_IMPORTED_MODULE_0___default()(container);\n var input = container.find('input[type=\"file\"]');\n var settings = container.data('grav-file-settings') || {};\n\n if (settings.accept && ~settings.accept.indexOf('*')) {\n settings.accept = [''];\n }\n\n var options = {\n url: container.data('file-url-add') || (container.closest('form').attr('action') || grav_config__WEBPACK_IMPORTED_MODULE_3__.config.current_url) + '.json',\n paramName: settings.paramName || 'file',\n dotNotation: settings.name || 'file',\n acceptedFiles: settings.accept ? settings.accept.join(',') : input.attr('accept') || container.data('media-types'),\n maxFilesize: typeof settings.filesize !== 'undefined' ? settings.filesize : 256,\n maxFiles: settings.limit || null,\n resizeWidth: settings.resizeWidth || null,\n resizeHeight: settings.resizeHeight || null,\n resizeQuality: settings.resizeQuality || null,\n resolution: settings.resolution || null,\n accept: function accept(file, done) {\n ACCEPT_FUNC(file, done, settings);\n }\n };\n cache = cache.add(container);\n container = container[0];\n instances.push(new FilesField({\n container: container,\n options: options\n }));\n};\n\nvar Instance = function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dropzone.files-upload').each(function (i, container) {\n return addNode(container);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('mutation._grav', onAddedNodes);\n return instances;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9maWxlcy5qcz82MTc5Il0sIm5hbWVzIjpbIkRpY3Rpb25hcnkiLCJkaWN0Q2FuY2VsVXBsb2FkIiwidHJhbnNsYXRpb25zIiwiZGljdENhbmNlbFVwbG9hZENvbmZpcm1hdGlvbiIsImRpY3REZWZhdWx0TWVzc2FnZSIsImRpY3RGYWxsYmFja01lc3NhZ2UiLCJkaWN0RmFsbGJhY2tUZXh0IiwiZGljdEZpbGVUb29CaWciLCJkaWN0SW52YWxpZEZpbGVUeXBlIiwiZGljdE1heEZpbGVzRXhjZWVkZWQiLCJkaWN0UmVtb3ZlRmlsZSIsImRpY3RSZXNwb25zZUVycm9yIiwiRFJPUFpPTkVfUkVTUE9OU0VfRVJST1IiLCJEcm9wem9uZSIsInF1ZXN0aW9uIiwiYWNjZXB0ZWQiLCJyZWplY3RlZCIsImRvYyIsIiQiLCJkb2N1bWVudCIsIm1vZGFsU2VsZWN0b3IiLCJyZW1vdmVFdmVudHMiLCJvZmYiLCJhY2NlcHQiLCJyZWplY3QiLCJmaW5kIiwicmVtb3ZlQ2xhc3MiLCJkYXRhIiwib3BlbiIsIm9uIiwiRHJvcHpvbmVNZWRpYUNvbmZpZyIsInRpbWVvdXQiLCJ0aHVtYm5haWxXaWR0aCIsInRodW1ibmFpbEhlaWdodCIsImFkZFJlbW92ZUxpbmtzIiwicmVwbGFjZSIsImRpY3RSZW1vdmVGaWxlQ29uZmlybWF0aW9uIiwicHJldmlld1RlbXBsYXRlIiwidHJpbSIsIkFDQ0VQVF9GVU5DIiwiZmlsZSIsImRvbmUiLCJzZXR0aW5ncyIsInJlc29sdXRpb24iLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwiZXJyb3IiLCJoYXNNaW4iLCJtaW4iLCJ3aWR0aCIsImhlaWdodCIsImhhc01heCIsIm1heCIsInJlc2l6ZVdpZHRoIiwicmVzaXplSGVpZ2h0Iiwib25sb2FkIiwiZXZlbnQiLCJpbWFnZSIsIkltYWdlIiwic3JjIiwidGFyZ2V0IiwicmVzdWx0Iiwib25lcnJvciIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiYXR0ciIsIlVSTCIsInJldm9rZU9iamVjdFVSTCIsInJlYWRBc0RhdGFVUkwiLCJGaWxlc0ZpZWxkIiwiY29udGFpbmVyIiwib3B0aW9ucyIsImxlbmd0aCIsInVybHMiLCJjdXN0b21Qb3N0IiwiYXNzaWduIiwia2xhc3MiLCJ1cmwiLCJjb25maWciLCJhY2NlcHRlZEZpbGVzIiwiaW5pdCIsImluaXREcm9wem9uZSIsImRyb3B6b25lIiwib25Ecm9wem9uZUNvbXBsZXRlIiwiYmluZCIsIm9uRHJvcHpvbmVTdWNjZXNzIiwib25Ecm9wem9uZVJlbW92ZWRGaWxlIiwib25Ecm9wem9uZVNlbmRpbmciLCJvbkRyb3B6b25lRXJyb3IiLCJlIiwidmFsdWUiLCJKU09OIiwicGFyc2UiLCJ2YWwiLCJjdXJyZW50VGFyZ2V0IiwicGFyZW50IiwiZmlsZW5hbWUiLCJlbmNvZGVVUkkiLCJ0ZXh0IiwiZmlsdGVyIiwia2V5IiwibmFtZSIsInNoaWZ0IiwiZmlsZXMiLCJlYWNoIiwiaW5kZXgiLCJtb2NrIiwic2l6ZSIsInR5cGUiLCJzdGF0dXMiLCJyZW1vdmVVcmwiLCJyZW1vdmUiLCJwdXNoIiwiYWRkZWRmaWxlIiwiY2FsbCIsIm1hdGNoIiwidGh1bWJuYWlsIiwicGF0aCIsImNyZWF0ZVRodW1ibmFpbEZyb21VcmwiLCJ4aHIiLCJmb3JtRGF0YSIsImFwcGVuZCIsImRvdE5vdGF0aW9uIiwiZ2V0VVJJIiwicmVzcG9uc2UiLCJyZWxvYWRQYWdlIiwiZ2xvYmFsIiwibG9jYXRpb24iLCJyZWxvYWQiLCJzZXNzaW9uIiwic2Vzc2lvblBhcmFtcyIsImlucHV0IiwiaGFuZGxlRXJyb3IiLCJtb2RlIiwibXNnIiwibWVzc2FnZSIsImpvaW4iLCJzdHIiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ3aW5kb3ciLCJhdG9iIiwiYm9keSIsInVyaSIsInRhc2siLCJyZXF1ZXN0IiwibWV0aG9kIiwiYjY0X3RvX3V0ZjgiLCJzdHJpbmdpZnkiLCJwcmV2aWV3RWxlbWVudCIsImh0bWwiLCJGaWxlIiwiYWRkRmlsZSIsImV4dHJhcyIsImluZGV4T2YiLCJyZW1vdmVGaWxlIiwic2lsZW50IiwibW9kYWwiLCJVcmlUb01hcmtkb3duIiwiZGVjb2RlVVJJIiwiaW5zdGFuY2VzIiwiY2FjaGUiLCJvbkFkZGVkTm9kZXMiLCJhZGROb2RlIiwiY2xvc2VzdCIsInBhcmFtTmFtZSIsIm1heEZpbGVzaXplIiwiZmlsZXNpemUiLCJtYXhGaWxlcyIsImxpbWl0IiwicmVzaXplUXVhbGl0eSIsImFkZCIsIkluc3RhbmNlIiwiaSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0NBRUE7O0FBQ0E7Q0FHQTs7QUFDQSxJQUFNQSxVQUFVLEdBQUc7QUFDZkMsa0JBQWdCLEVBQUVDLHlGQURIO0FBRWZDLDhCQUE0QixFQUFFRCxzR0FGZjtBQUdmRSxvQkFBa0IsRUFBRUYsMkZBSEw7QUFJZkcscUJBQW1CLEVBQUVILDRGQUpOO0FBS2ZJLGtCQUFnQixFQUFFSix5RkFMSDtBQU1mSyxnQkFBYyxFQUFFTCx3RkFORDtBQU9mTSxxQkFBbUIsRUFBRU4sNkZBUE47QUFRZk8sc0JBQW9CLEVBQUVQLDhGQVJQO0FBU2ZRLGdCQUFjLEVBQUVSLHVGQVREO0FBVWZTLG1CQUFpQixFQUFFVCwwRkFBaURVO0FBVnJELENBQW5CO0FBYUFDLDhEQUFBLEdBQXdCLEtBQXhCO0FBQ0FBLDBFQUFBLEdBQW9DLEVBQXBDOztBQUNBQSx5REFBQSxHQUFtQixVQUFDQyxRQUFELEVBQVdDLFFBQVgsRUFBcUJDLFFBQXJCLEVBQWtDO0FBQ2pELE1BQUlDLEdBQUcsR0FBR0MsNkNBQUMsQ0FBQ0MsUUFBRCxDQUFYO0FBQ0EsTUFBSUMsYUFBYSxHQUFHLGtDQUFwQjs7QUFFQSxNQUFJQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ3JCSixPQUFHLENBQUNLLEdBQUosQ0FBUSxjQUFSLEVBQXdCRixhQUF4QixFQUF1Q0csTUFBdkM7QUFDQU4sT0FBRyxDQUFDSyxHQUFKLENBQVEsY0FBUixFQUF3QkYsYUFB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USxDQUFDaUksYUFBVCxJQUEwQixJQVQvQjtBQVVWaEksY0FBVSxFQUFFRCxRQUFRLENBQUNDLFVBQVQsSUFBdUIsSUFWekI7QUFXVnBCLFVBQU0sRUFBRSxnQkFBU2lCLElBQVQsRUFBZUMsSUFBZixFQUFxQjtBQUFFRixpQkFBVyxDQUFDQyxJQUFELEVBQU9DLElBQVAsRUFBYUMsUUFBYixDQUFYO0FBQW9DO0FBWHpELEdBQWQ7QUFjQXdILE9BQUssR0FBR0EsS0FBSyxDQUFDVSxHQUFOLENBQVVyRyxTQUFWLENBQVI7QUFDQUEsV0FBUyxHQUFHQSxTQUFTLENBQUMsQ0FBRCxDQUFyQjtBQUNBMEYsV0FBUyxDQUFDaEQsSUFBVixDQUFlLElBQUkzQyxVQUFKLENBQWU7QUFBRUMsYUFBUyxFQUFUQSxTQUFGO0FBQWFDLFdBQU8sRUFBUEE7QUFBYixHQUFmLENBQWY7QUFDSCxDQTFCRDs7QUE0Qk8sSUFBSXFHLFFBQVEsR0FBSSxZQUFNO0FBQ3pCM0osK0NBQUMsQ0FBQyx3QkFBRCxDQUFELENBQTRCdUYsSUFBNUIsQ0FBaUMsVUFBQ3FFLENBQUQsRUFBSXZHLFNBQUo7QUFBQSxXQUFrQjZGLE9BQU8sQ0FBQzdGLFNBQUQsQ0FBekI7QUFBQSxHQUFqQztBQUNBckQsK0NBQUMsQ0FBQyxNQUFELENBQUQsQ0FBVVcsRUFBVixDQUFhLGdCQUFiLEVBQStCc0ksWUFBL0I7QUFFQSxTQUFPRixTQUFQO0FBQ0gsQ0FMcUIsRUFBZiIsImZpbGUiOiIuL2FwcC9mb3Jtcy9maWVsZHMvZmlsZXMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IERyb3B6b25lIGZyb20gJ2Ryb3B6b25lJztcbi8vIGltcG9ydCBFWElGIGZyb20gJ2V4aWYtanMnO1xuaW1wb3J0IHJlcXVlc3QgZnJvbSAnLi4vLi4vdXRpbHMvcmVxdWVzdCc7XG5pbXBvcnQgeyBjb25maWcsIHRyYW5zbGF0aW9ucyB9IGZyb20gJ2dyYXYtY29uZmlnJztcblxuLy8gdHJhbnNsYXRpb25zXG5jb25zdCBEaWN0aW9uYXJ5ID0ge1xuICAgIGRpY3RDYW5jZWxVcGxvYWQ6IHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRFJPUFpPTkVfQ0FOQ0VMX1VQTE9BRCxcbiAgICBkaWN0Q2FuY2VsVXBsb2FkQ29uZmlybWF0aW9uOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0NBTkNFTF9VUExPQURfQ09ORklSTUFUSU9OLFxuICAgIGRpY3REZWZhdWx0TWVzc2FnZTogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9ERUZBVUxUX01FU1NBR0UsXG4gICAgZGljdEZhbGxiYWNrTWVzc2FnZTogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9GQUxMQkFDS19NRVNTQUdFLFxuICAgIGRpY3RGYWxsYmFja1RleHQ6IHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRFJPUFpPTkVfRkFMTEJBQ0tfVEVYVCxcbiAgICBkaWN0RmlsZVRvb0JpZzogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9GSUxFX1RPT19CSUcsXG4gICAgZGljdEludmFsaWRGaWxlVHlwZTogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9JTlZBTElEX0ZJTEVfVFlQRSxcbiAgICBkaWN0TWF4RmlsZXNFeGNlZWRlZDogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9NQVhfRklMRVNfRVhDRUVERUQsXG4gICAgZGljdFJlbW92ZUZpbGU6IHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRFJPUFpPTkVfUkVNT1ZFX0ZJTEUsXG4gICAgZGljdFJlc3BvbnNlRXJyb3I6IHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRFJPUFpPTkVfUkVTUE9OU0VfRVJST1Jcbn07XG5cbkRyb3B6b25lLmF1dG9EaXNjb3ZlciA9IGZhbHNlO1xuRHJvcHpvbmUub3B0aW9ucy5ncmF2UGFnZURyb3B6b25lID0ge307XG5Ecm9wem9uZS5jb25maXJtID0gKHF1ZXN0aW9uLCBhY2NlcHRlZCwgcmVqZWN0ZWQpID0+IHtcbiAgICBsZXQgZG9jID0gJChkb2N1bWVudCk7XG4gICAgbGV0IG1vZGFsU2VsZWN0b3IgPSAnW2RhdGEtcmVtb2RhbC1pZD1cImRlbGV0ZS1tZWRpYVwiXSc7XG5cbiAgICBsZXQgcmVtb3ZlRXZlbnRzID0gKCkgPT4ge1xuICAgICAgICBkb2Mub2ZmKCdjb25maXJtYXRpb24nLCBtb2RhbFNlbGVjdG9yLCBhY2NlcHQpO1xuICAgICAgICBkb2Mub2ZmKCdjYW5jZWxsYXRpb24nLCBtb2RhbFNlbGVjdG9yLCByZWplY3QpO1xuXG4gICAgICAgICQobW9kYWxTZWxlY3RvcikuZmluZCgnLnJlbW9kYWwtY29uZmlybScpLnJlbW92ZUNsYXNzKCdwb2ludGVyLWV2ZW50cy1kaXNhYmxlZCcpO1xuICAgIH07XG5cbiAgICBsZXQgYWNjZXB0ID0gKCkgPT4ge1xuICAgICAgICBhY2NlcHRlZCAmJiBhY2NlcHRlZCgpO1xuICAgICAgICByZW1vdmVFdmVudHMoKTtcbiAgICB9O1xuXG4gICAgbGV0IHJlamVjdCA9ICgpID0+IHtcbiAgICAgICAgcmVqZWN0ZWQgJiYgcmVqZWN0ZWQoKTtcbiAgICAgICAgcmVtb3ZlRXZlbnRzKCk7XG4gICAgfTtcblxuICAgICQucmVtb2RhbC5sb29rdXBbJChtb2RhbFNlbGVjdG9yKS5kYXRhKCdyZW1vZGFsJyldLm9wZW4oKTtcbiAgICBkb2Mub24oJ2NvbmZpcm1hdGlvbicsIG1vZGFsU2VsZWN0b3IsIGFjY2VwdCk7XG4gICAgZG9jLm9uKCdjYW5jZWxsYXRpb24nLCBtb2RhbFNlbGVjdG9yLCByZWplY3QpO1xufTtcblxuY29uc3QgRHJvcHpvbmVNZWRpYUNvbmZpZyA9IHtcbiAgICB0aW1lb3V0OiAwLFxuICAgIHRodW1ibmFpbFdpZHRoOiAyMDAsXG4gICAgdGh1bWJuYWlsSGVpZ2h0OiAxNTAsXG4gICAgYWRkUmVtb3ZlTGlua3M6IGZhbHNlLFxuICAgIGRpY3REZWZhdWx0TWVzc2FnZTogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QX0ZJTEVTX0hFUkVfVE9fVVBMT0FELnJlcGxhY2UoLyZsdDsvZywgJzwnKS5yZXBsYWNlKC8mZ3Q7L2csICc+JyksXG4gICAgZGljdFJlbW92ZUZpbGVDb25maXJtYXRpb246ICdbcGxhY2Vob2xkZXJdJyxcbiAgICBwcmV2aWV3VGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImR6LXByZXZpZXcgZHotZmlsZS1wcmV2aWV3IGR6LW5vLWVkaXRvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkei1kZXRhaWxzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHotZmlsZW5hbWVcIj48c3BhbiBkYXRhLWR6LW5hbWU+PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImR6LXNpemVcIiBkYXRhLWR6LXNpemU+PC9kaXY+XG4gICAgICAgICAgICA8aW1nIGRhdGEtZHotdGh1bWJuYWlsIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImR6LXByb2dyZXNzXCI+PHNwYW4gY2xhc3M9XCJkei11cGxvYWRcIiBkYXRhLWR6LXVwbG9hZHByb2dyZXNzPjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHotc3VjY2Vzcy1tYXJrXCI+PHNwYW4+4pyUPC9zcGFuPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkei1lcnJvci1tYXJrXCI+PHNwYW4+4pyYPC9zcGFuPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkei1lcnJvci1tZXNzYWdlXCI+PHNwYW4gZGF0YS1kei1lcnJvcm1lc3NhZ2U+PC9zcGFuPjwvZGl2PlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHotdW5zZXRcIiB0aXRsZT1cIiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5VTlNFVH1cIiBocmVmPVwiI1wiIGRhdGEtZHotdW5zZXQ+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlVOU0VUfTwvYT5cbiAgICAgICAgICA8YSBjbGFzcz1cImR6LXJlbW92ZVwiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRFTEVURX1cIiBocmVmPVwiamF2YXNjcmlwdDp1bmRlZmluZWQ7XCIgZGF0YS1kei1yZW1vdmU+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRFTEVURX08L2E+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkei1tZXRhZGF0YVwiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLk1FVEFEQVRBfVwiIGhyZWY9XCIjXCIgdGFyZ2V0PVwiX2JsYW5rXCIgZGF0YS1kei1tZXRhZGF0YT4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uTUVUQURBVEF9PC9hPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHotdmlld1wiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlZJRVd9XCIgaHJlZj1cIiNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBkYXRhLWR6LXZpZXc+JHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlZJRVd9PC9hPlxuICAgICAgICA8L2Rpdj5gLnRyaW0oKVxufTtcblxuLy8gZ2xvYmFsLkVYSUYgPSBFWElGO1xuXG5jb25zdCBBQ0NFUFRfRlVOQyA9IGZ1bmN0aW9uKGZpbGUsIGRvbmUsIHNldHRpbmdzKSB7XG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IHNldHRpbmdzLnJlc29sdXRpb247XG4gICAgaWYgKCFyZXNvbHV0aW9uKSByZXR1cm4gZG9uZSgpO1xuXG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICBsZXQgZXJyb3IgPSAnJztcbiAgICBjb25zdCBoYXNNaW4gPSAocmVzb2x1dGlvbi5taW4gJiYgKHJlc29sdXRpb24ubWluLndpZHRoIHx8IHJlc29sdXRpb24ubWluLmhlaWdodCkpO1xuICAgIGNvbnN0IGhhc01heCA9IChyZXNvbHV0aW9uLm1heCAmJiAocmVzb2x1dGlvbi5tYXgud2lkdGggfHwgcmVzb2x1dGlvbi5tYXguaGVpZ2h0KSk7XG4gICAgaWYgKGhhc01pbiB8fCAoIShzZXR0aW5ncy5yZXNpemVXaWR0aCB8fCBzZXR0aW5ncy5yZXNpemVIZWlnaHQpICYmIGhhc01heCkpIHtcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgaW1hZ2Uuc3JjID0gZXZlbnQudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgICAgIGltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBkb25lKHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRklMRV9FUlJPUl9VUExPQUQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLm1pbikge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNvbHV0aW9uLm1pbikuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdXRpb24ubWluW2F0dHJdICYmIHRoaXNbYXR0cl0gPCByZXNvbHV0aW9uLm1pblthdHRyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICs9IHRyYW5zbGF0aW9ucy5QTFVHSU5fRk9STS5SRVNPTFVUSU9OX01JTi5yZXBsYWNlKC97e2F0dHJ9fS9nLCBhdHRyKS5yZXBsYWNlKC97e21pbn19L2csIHJlc29sdXRpb24ubWluW2F0dHJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCEoc2V0dGluZ3MucmVzaXplV2lkdGggfHwgc2V0dGluZ3MucmVzaXplSGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi5tYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc29sdXRpb24ubWF4KS5mb3JFYWNoKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdXRpb24ubWF4W2F0dHJdICYmIHRoaXNbYXR0cl0gPiByZXNvbHV0aW9uLm1heFthdHRyXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciArPSB0cmFuc2xhdGlvbnMuUExVR0lOX0ZPUk0uUkVTT0xVVElPTl9NQVgucmVwbGFjZSgve3thdHRyfX0vZywgYXR0cikucmVwbGFjZSgve3ttYXh9fS9nLCByZXNvbHV0aW9uLm1heFthdHRyXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGltYWdlLnNyYyk7IC8vIHJlbGVhc2UgbWVtb3J5XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yID8gZG9uZShlcnJvcikgOiBkb25lKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlcnJvciA/IGRvbmUoZXJyb3IpIDogZG9uZSgpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbGVzRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKHsgY29udGFpbmVyID0gJy5kcm9wem9uZS5maWxlcy11cGxvYWQnLCBvcHRpb25zID0ge30gfSA9IHt9KSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gJChjb250YWluZXIpO1xuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLnVybHMgPSB7fTtcbiAgICAgICAgdGhpcy5jdXN0b21Qb3N0ID0gdGhpcy5jb250YWluZXIuZGF0YSgnZmlsZVBvc3RBZGQnKSB8fCB7fTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgRGljdGlvbmFyeSwgRHJvcHpvbmVNZWRpYUNvbmZpZywge1xuICAgICAgICAgICAga2xhc3M6IHRoaXMsXG4gICAgICAgICAgICB1cmw6IHRoaXMuY29udGFpbmVyLmRhdGEoJ2ZpbGUtdXJsLWFkZCcpIHx8IGNvbmZpZy5jdXJyZW50X3VybCxcbiAgICAgICAgICAgIGFjY2VwdGVkRmlsZXM6IHRoaXMuY29udGFpbmVyLmRhdGEoJ21lZGlhLXR5cGVzJyksXG4gICAgICAgICAgICBpbml0OiB0aGlzLmluaXREcm9wem9uZVxuICAgICAgICB9LCB0aGlzLmNvbnRhaW5lci5kYXRhKCdkcm9wem9uZS1vcHRpb25zJyksIG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0aW9ucywge1xuICAgICAgICAgICAgYWNjZXB0OiBmdW5jdGlvbihmaWxlLCBkb25lKSB7IEFDQ0VQVF9GVU5DKGZpbGUsIGRvbmUsIHRoaXMub3B0aW9ucyk7IH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kcm9wem9uZSA9IG5ldyBEcm9wem9uZShjb250YWluZXIsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZHJvcHpvbmUub24oJ2NvbXBsZXRlJywgdGhpcy5vbkRyb3B6b25lQ29tcGxldGUuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuZHJvcHpvbmUub24oJ3N1Y2Nlc3MnLCB0aGlzLm9uRHJvcHpvbmVTdWNjZXNzLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLmRyb3B6b25lLm9uKCdyZW1vdmVkZmlsZScsIHRoaXMub25Ecm9wem9uZVJlbW92ZWRGaWxlLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLmRyb3B6b25lLm9uKCdzZW5kaW5nJywgdGhpcy5vbkRyb3B6b25lU2VuZGluZy5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5kcm9wem9uZS5vbignZXJyb3InLCB0aGlzLm9uRHJvcHpvbmVFcnJvci5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLmNvbnRhaW5lci5vbignbW91c2VlbnRlcicsICdbZGF0YS1kei12aWV3XScsIChlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IEpTT04ucGFyc2UodGhpcy5jb250YWluZXIuZmluZCgnW25hbWVdW3R5cGU9XCJoaWRkZW5cIl0nKS52YWwoKSB8fCAne30nKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9ICQoZS5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0YXJnZXQucGFyZW50KCcuZHotcHJldmlldycpLmZpbmQoJy5kei1maWxlbmFtZScpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBlbmNvZGVVUkkoZmlsZS50ZXh0KCkpO1xuXG4gICAgICAgICAgICBjb25zdCBVUkwgPSBPYmplY3Qua2V5cyh2YWx1ZSkuZmlsdGVyKChrZXkpID0+IHZhbHVlW2tleV0ubmFtZSA9PT0gZmlsZW5hbWUpLnNoaWZ0KCk7XG4gICAgICAgICAgICB0YXJnZXQuYXR0cignaHJlZicsIGAke2NvbmZpZy5iYXNlX3VybF9zaW1wbGV9LyR7VVJMfWApO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGluaXREcm9wem9uZSgpIHtcbiAgICAgICAgbGV0IGZpbGVzID0gdGhpcy5vcHRpb25zLmtsYXNzLmNvbnRhaW5lci5maW5kKCdbZGF0YS1maWxlXScpO1xuICAgICAgICBsZXQgZHJvcHpvbmUgPSB0aGlzO1xuICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgICAgICBmaWxlcy5lYWNoKChpbmRleCwgZmlsZSkgPT4ge1xuICAgICAgICAgICAgZmlsZSA9ICQoZmlsZSk7XG4gICAgICAgICAgICBsZXQgZGF0YSA9IGZpbGUuZGF0YSgnZmlsZScpO1xuICAgICAgICAgICAgbGV0IG1vY2sgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogZGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgIHNpemU6IGRhdGEuc2l6ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBkYXRhLnR5cGUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBEcm9wem9uZS5BRERFRCxcbiAgICAgICAgICAgICAgICBhY2NlcHRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB1cmw6IHRoaXMub3B0aW9ucy51cmwsXG4gICAgICAgICAgICAgICAgcmVtb3ZlVXJsOiBkYXRhLnJlbW92ZVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZHJvcHpvbmUuZmlsZXMucHVzaChtb2NrKTtcbiAgICAgICAgICAgIGRyb3B6b25lLm9wdGlvbnMuYWRkZWRmaWxlLmNhbGwoZHJvcHpvbmUsIG1vY2spO1xuICAgICAgICAgICAgaWYgKG1vY2sudHlwZS5tYXRjaCgvXmltYWdlXFwvLykpIHtcbiAgICAgICAgICAgICAgICBkcm9wem9uZS5vcHRpb25zLnRodW1ibmFpbC5jYWxsKGRyb3B6b25lLCBtb2NrLCBkYXRhLnBhdGgpO1xuICAgICAgICAgICAgICAgIGRyb3B6b25lLmNyZWF0ZVRodW1ibmFpbEZyb21VcmwobW9jaywgZGF0YS5wYXRoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZmlsZS5yZW1vdmUoKTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBnZXRVUkkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5lci5kYXRhKCdtZWRpYVVyaScpIHx8ICcnO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVTZW5kaW5nKGZpbGUsIHhociwgZm9ybURhdGEpIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuY3VzdG9tUG9zdCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmN1c3RvbVBvc3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHRoaXMuY3VzdG9tUG9zdFtrZXldKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCduYW1lJywgdGhpcy5vcHRpb25zLmRvdE5vdGF0aW9uKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgndGFzaycsICdmaWxlc3VwbG9hZCcpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCd1cmknLCB0aGlzLmdldFVSSSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnYWRtaW4tbm9uY2UnLCBjb25maWcuYWRtaW5fbm9uY2UpO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVTdWNjZXNzKGZpbGUsIHJlc3BvbnNlLCB4aHIpIHtcbiAgICAgICAgcmVzcG9uc2UgPSB0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShyZXNwb25zZSkgOiByZXNwb25zZTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yZWxvYWRQYWdlKSB7XG4gICAgICAgICAgICBnbG9iYWwubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdG9yZSBwYXJhbXMgZm9yIHJlbW92aW5nIGZpbGUgZnJvbSBzZXNzaW9uIGJlZm9yZSBpdCBnZXRzIHNhdmVkXG4gICAgICAgIGlmIChyZXNwb25zZS5zZXNzaW9uKSB7XG4gICAgICAgICAgICBmaWxlLnNlc3Npb25QYXJhbXMgPSByZXNwb25zZS5zZXNzaW9uO1xuICAgICAgICAgICAgZmlsZS5yZW1vdmVVcmwgPSB0aGlzLm9wdGlvbnMudXJsO1xuXG4gICAgICAgICAgICAvLyBUb3VjaCBmaWVsZCB2YWx1ZSB0byBmb3JjZSBhIG11dGF0aW9uIGRldGVjdGlvblxuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmNvbnRhaW5lci5maW5kKCdbbmFtZV1bdHlwZT1cImhpZGRlblwiXScpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC52YWwoKTtcbiAgICAgICAgICAgIGlucHV0LnZhbCh2YWx1ZSArICcgJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcih7XG4gICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgZGF0YTogcmVzcG9uc2UsXG4gICAgICAgICAgICBtb2RlOiAncmVtb3ZlRmlsZScsXG4gICAgICAgICAgICBtc2c6IGA8cD4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRklMRV9FUlJPUl9VUExPQUR9IDxzdHJvbmc+JHtmaWxlLm5hbWV9PC9zdHJvbmc+PC9wPlxuICAgICAgICAgICAgPHByZT4ke3Jlc3BvbnNlLm1lc3NhZ2V9PC9wcmU+YFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRyb3B6b25lQ29tcGxldGUoZmlsZSkge1xuICAgICAgICBpZiAoIWZpbGUuYWNjZXB0ZWQgJiYgIWZpbGUucmVqZWN0ZWQpIHtcbiAgICAgICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkZJTEVfVU5TVVBQT1JURUR9OiAke2ZpbGUubmFtZS5tYXRjaCgvXFwuLisvKS5qb2luKCcnKX1gXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcih7XG4gICAgICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIG1vZGU6ICdyZW1vdmVGaWxlJyxcbiAgICAgICAgICAgICAgICBtc2c6IGA8cD4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRklMRV9FUlJPUl9BRER9IDxzdHJvbmc+JHtmaWxlLm5hbWV9PC9zdHJvbmc+PC9wPlxuICAgICAgICAgICAgICAgIDxwcmU+JHtkYXRhLm1lc3NhZ2V9PC9wcmU+YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlbG9hZFBhZ2UpIHtcbiAgICAgICAgICAgIGdsb2JhbC5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGI2NF90b191dGY4KHN0cikge1xuICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUod2luZG93LmF0b2Ioc3RyKSkpO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVSZW1vdmVkRmlsZShmaWxlLCAuLi5leHRyYSkge1xuICAgICAgICBpZiAoIWZpbGUuYWNjZXB0ZWQgfHwgZmlsZS5yZWplY3RlZCkgeyByZXR1cm47IH1cbiAgICAgICAgbGV0IHVybCA9IGZpbGUucmVtb3ZlVXJsIHx8IHRoaXMudXJscy5kZWxldGUgfHwgdGhpcy5vcHRpb25zLnVybDtcbiAgICAgICAgbGV0IHBhdGggPSAodXJsIHx8ICcnKS5tYXRjaCgvcGF0aDooLiopXFwvLyk7XG4gICAgICAgIGxldCBib2R5ID0geyBmaWxlbmFtZTogZmlsZS5uYW1lLCB1cmk6IHRoaXMuZ2V0VVJJKCkgfTtcblxuICAgICAgICBpZiAoZmlsZS5zZXNzaW9uUGFyYW1zKSB7XG4gICAgICAgICAgICBib2R5LnRhc2sgPSAnZmlsZXNzZXNzaW9ucmVtb3ZlJztcbiAgICAgICAgICAgIGJvZHkuc2Vzc2lvbiA9IGZpbGUuc2Vzc2lvblBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1c3RvbVBvc3QgPSB0aGlzLmNvbnRhaW5lci5kYXRhKCdmaWxlUG9zdFJlbW92ZScpIHx8IHt9O1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoY3VzdG9tUG9zdCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBib2R5ID0ge307XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjdXN0b21Qb3N0KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBib2R5W2tleV0gPSBjdXN0b21Qb3N0W2tleV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJvZHlbJ2ZpbGVuYW1lJ10gPSBmaWxlLm5hbWU7XG4gICAgICAgIGJvZHlbJ2FkbWluLW5vbmNlJ10gPSBjb25maWcuYWRtaW5fbm9uY2U7XG5cbiAgICAgICAgcmVxdWVzdCh1cmwsIHsgbWV0aG9kOiAncG9zdCcsIGJvZHkgfSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFwYXRoKSB7IHJldHVybjsgfVxuXG4gICAgICAgICAgICBwYXRoID0gdGhpcy5iNjRfdG9fdXRmOChwYXRoWzFdKTtcbiAgICAgICAgICAgIGxldCBpbnB1dCA9IHRoaXMuY29udGFpbmVyLmZpbmQoJ1tuYW1lXVt0eXBlPVwiaGlkZGVuXCJdJyk7XG4gICAgICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoaW5wdXQudmFsKCkgfHwgJ3t9Jyk7XG4gICAgICAgICAgICBkZWxldGUgZGF0YVtwYXRoXTtcbiAgICAgICAgICAgIGlucHV0LnZhbChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVFcnJvcihmaWxlLCByZXNwb25zZSwgeGhyKSB7XG4gICAgICAgIGxldCBtZXNzYWdlID0geGhyID8gcmVzcG9uc2UuZXJyb3IubWVzc2FnZSA6IHJlc3BvbnNlO1xuICAgICAgICAkKGZpbGUucHJldmlld0VsZW1lbnQpLmZpbmQoJ1tkYXRhLWR6LWVycm9ybWVzc2FnZV0nKS5odG1sKG1lc3NhZ2UpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKHtcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBkYXRhOiB7IHN0YXR1czogJ2Vycm9yJyB9LFxuICAgICAgICAgICAgbXNnOiBgPHByZT4ke21lc3NhZ2V9PC9wcmU+YFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihvcHRpb25zKSB7XG4gICAgICAgIGxldCB7IGZpbGUsIGRhdGEsIG1vZGUsIG1zZyB9ID0gb3B0aW9ucztcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAnZXJyb3InICYmIGRhdGEuc3RhdHVzICE9PSAndW5hdXRob3JpemVkJykgeyByZXR1cm47IH1cblxuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FkZEJhY2snOlxuICAgICAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3B6b25lLmFkZEZpbGUuY2FsbCh0aGlzLmRyb3B6b25lLCBmaWxlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3B6b25lLmZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUub3B0aW9ucy5hZGRlZGZpbGUuY2FsbCh0aGlzLmRyb3B6b25lLCBmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5vcHRpb25zLnRodW1ibmFpbC5jYWxsKHRoaXMuZHJvcHpvbmUsIGZpbGUsIGZpbGUuZXh0cmFzLnVybCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZW1vdmVGaWxlJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKH50aGlzLmRyb3B6b25lLmZpbGVzLmluZGV4T2YoZmlsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZS5yZWplY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUucmVtb3ZlRmlsZS5jYWxsKHRoaXMuZHJvcHpvbmUsIGZpbGUsIHsgc2lsZW50OiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1vZGFsID0gJCgnW2RhdGEtcmVtb2RhbC1pZD1cImdlbmVyaWNcIl0nKTtcbiAgICAgICAgbW9kYWwuZmluZCgnLmVycm9yLWNvbnRlbnQnKS5odG1sKG1zZyk7XG4gICAgICAgICQucmVtb2RhbC5sb29rdXBbbW9kYWwuZGF0YSgncmVtb2RhbCcpXS5vcGVuKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gVXJpVG9NYXJrZG93bih1cmkpIHtcbiAgICB1cmkgPSB1cmkucmVwbGFjZSgvQDN4fEAyeHxAMXgvLCAnJyk7XG4gICAgdXJpID0gdXJpLnJlcGxhY2UoL1xcKC9nLCAnJTI4Jyk7XG4gICAgdXJpID0gdXJpLnJlcGxhY2UoL1xcKS9nLCAnJTI5Jyk7XG5cbiAgICByZXR1cm4gdXJpLm1hdGNoKC9cXC4oanBlP2d8cG5nfGdpZnxzdmd8bXA0fHdlYm18b2d2fG1vdikkL2kpID8gYCFbXSgke3VyaX0pYCA6IGBbJHtkZWNvZGVVUkkodXJpKX1dKCR7dXJpfSlgO1xufVxuXG5sZXQgaW5zdGFuY2VzID0gW107XG5sZXQgY2FjaGUgPSAkKCk7XG5jb25zdCBvbkFkZGVkTm9kZXMgPSAoZXZlbnQsIHRhcmdldC8qICwgcmVjb3JkLCBpbnN0YW5jZSAqLykgPT4ge1xuICAgIGxldCBmaWxlcyA9ICQodGFyZ2V0KS5maW5kKCcuZHJvcHpvbmUuZmlsZXMtdXBsb2FkJyk7XG4gICAgaWYgKCFmaWxlcy5sZW5ndGgpIHsgcmV0dXJuOyB9XG5cbiAgICBmaWxlcy5lYWNoKChpbmRleCwgZmlsZSkgPT4ge1xuICAgICAgICBmaWxlID0gJChmaWxlKTtcbiAgICAgICAgaWYgKCF+Y2FjaGUuaW5kZXgoZmlsZSkpIHtcbiAgICAgICAgICAgIGFkZE5vZGUoZmlsZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IGFkZE5vZGUgPSAoY29udGFpbmVyKSA9PiB7XG4gICAgY29udGFpbmVyID0gJChjb250YWluZXIpO1xuICAgIGxldCBpbnB1dCA9IGNvbnRhaW5lci5maW5kKCdpbnB1dFt0eXBlPVwiZmlsZVwiXScpO1xuICAgIGxldCBzZXR0aW5ncyA9IGNvbnRhaW5lci5kYXRhKCdncmF2LWZpbGUtc2V0dGluZ3MnKSB8fCB7fTtcblxuICAgIGlmIChzZXR0aW5ncy5hY2NlcHQgJiYgfnNldHRpbmdzLmFjY2VwdC5pbmRleE9mKCcqJykpIHtcbiAgICAgICAgc2V0dGluZ3MuYWNjZXB0ID0gWycnXTtcbiAgICB9XG5cbiAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgICAgdXJsOiBjb250YWluZXIuZGF0YSgnZmlsZS11cmwtYWRkJykgfHwgKGNvbnRhaW5lci5jbG9zZXN0KCdmb3JtJykuYXR0cignYWN0aW9uJykgfHwgY29uZmlnLmN1cnJlbnRfdXJsKSArICcuanNvbicsXG4gICAgICAgIHBhcmFtTmFtZTogc2V0dGluZ3MucGFyYW1OYW1lIHx8ICdmaWxlJyxcbiAgICAgICAgZG90Tm90YXRpb246IHNldHRpbmdzLm5hbWUgfHwgJ2ZpbGUnLFxuICAgICAgICBhY2NlcHRlZEZpbGVzOiBzZXR0aW5ncy5hY2NlcHQgPyBzZXR0aW5ncy5hY2NlcHQuam9pbignLCcpIDogaW5wdXQuYXR0cignYWNjZXB0JykgfHwgY29udGFpbmVyLmRhdGEoJ21lZGlhLXR5cGVzJyksXG4gICAgICAgIG1heEZpbGVzaXplOiB0eXBlb2Ygc2V0dGluZ3MuZmlsZXNpemUgIT09ICd1bmRlZmluZWQnID8gc2V0dGluZ3MuZmlsZXNpemUgOiAyNTYsXG4gICAgICAgIG1heEZpbGVzOiBzZXR0aW5ncy5saW1pdCB8fCBudWxsLFxuICAgICAgICByZXNpemVXaWR0aDogc2V0dGluZ3MucmVzaXplV2lkdGggfHwgbnVsbCxcbiAgICAgICAgcmVzaXplSGVpZ2h0OiBzZXR0aW5ncy5yZXNpemVIZWlnaHQgfHwgbnVsbCxcbiAgICAgICAgcmVzaXplUXVhbGl0eTogc2V0dGluZ3MucmVzaXplUXVhbGl0eSB8fCBudWxsLFxuICAgICAgICByZXNvbHV0aW9uOiBzZXR0aW5ncy5yZXNvbHV0aW9uIHx8IG51bGwsXG4gICAgICAgIGFjY2VwdDogZnVuY3Rpb24oZmlsZSwgZG9uZSkgeyBBQ0NFUFRfRlVOQyhmaWxlLCBkb25lLCBzZXR0aW5ncyk7IH1cbiAgICB9O1xuXG4gICAgY2FjaGUgPSBjYWNoZS5hZGQoY29udGFpbmVyKTtcbiAgICBjb250YWluZXIgPSBjb250YWluZXJbMF07XG4gICAgaW5zdGFuY2VzLnB1c2gobmV3IEZpbGVzRmllbGQoeyBjb250YWluZXIsIG9wdGlvbnMgfSkpO1xufTtcblxuZXhwb3J0IGxldCBJbnN0YW5jZSA9ICgoKSA9PiB7XG4gICAgJCgnLmRyb3B6b25lLmZpbGVzLXVwbG9hZCcpLmVhY2goKGksIGNvbnRhaW5lcikgPT4gYWRkTm9kZShjb250YWluZXIpKTtcbiAgICAkKCdib2R5Jykub24oJ211dGF0aW9uLl9ncmF2Jywgb25BZGRlZE5vZGVzKTtcblxuICAgIHJldHVybiBpbnN0YW5jZXM7XG59KSgpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/forms/fields/files.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => /* binding */ FilesField,\n/* harmony export */ \"UriToMarkdown\": () => /* binding */ UriToMarkdown,\n/* harmony export */ \"Instance\": () => /* binding */ Instance\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dropzone */ \"./node_modules/dropzone/dist/dropzone.js\");\n/* harmony import */ var dropzone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dropzone__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/request */ \"./app/utils/request.js\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! grav-config */ \"grav-config\");\n/* harmony import */ var grav_config__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(grav_config__WEBPACK_IMPORTED_MODULE_3__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n // import EXIF from 'exif-js';\n\n\n // translations\n\nvar Dictionary = {\n dictCancelUpload: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_CANCEL_UPLOAD,\n dictCancelUploadConfirmation: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_CANCEL_UPLOAD_CONFIRMATION,\n dictDefaultMessage: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_DEFAULT_MESSAGE,\n dictFallbackMessage: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_FALLBACK_MESSAGE,\n dictFallbackText: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_FALLBACK_TEXT,\n dictFileTooBig: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_FILE_TOO_BIG,\n dictInvalidFileType: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_INVALID_FILE_TYPE,\n dictMaxFilesExceeded: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_MAX_FILES_EXCEEDED,\n dictRemoveFile: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_REMOVE_FILE,\n dictResponseError: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROPZONE_RESPONSE_ERROR\n};\n(dropzone__WEBPACK_IMPORTED_MODULE_1___default().autoDiscover) = false;\n(dropzone__WEBPACK_IMPORTED_MODULE_1___default().options.gravPageDropzone) = {};\n\n(dropzone__WEBPACK_IMPORTED_MODULE_1___default().confirm) = function (question, accepted, rejected) {\n var doc = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);\n var modalSelector = '[data-remodal-id=\"delete-media\"]';\n\n var removeEvents = function removeEvents() {\n doc.off('confirmation', modalSelector, accept);\n doc.off('cancellation', modalSelector, reject);\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(modalSelector).find('.remodal-confirm').removeClass('pointer-events-disabled');\n };\n\n var accept = function accept() {\n accepted && accepted();\n removeEvents();\n };\n\n var reject = function reject() {\n rejected && rejected();\n removeEvents();\n };\n\n (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[jquery__WEBPACK_IMPORTED_MODULE_0___default()(modalSelector).data('remodal')].open();\n doc.on('confirmation', modalSelector, accept);\n doc.on('cancellation', modalSelector, reject);\n};\n\nvar DropzoneMediaConfig = {\n timeout: 0,\n thumbnailWidth: 200,\n thumbnailHeight: 150,\n addRemoveLinks: false,\n dictDefaultMessage: grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.DROP_FILES_HERE_TO_UPLOAD.replace(/</g, '<').replace(/>/g, '>'),\n dictRemoveFileConfirmation: '[placeholder]',\n previewTemplate: \"\\n
\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_ERROR_UPLOAD, \" \").concat(file.name, \"
\\n\").concat(response.message, \"\")\n });\n }\n }, {\n key: \"onDropzoneComplete\",\n value: function onDropzoneComplete(file) {\n if (!file.accepted && !file.rejected) {\n var data = {\n status: 'error',\n message: \"\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_UNSUPPORTED, \": \").concat(file.name.match(/\\..+/).join(''))\n };\n return this.handleError({\n file: file,\n data: data,\n mode: 'removeFile',\n msg: \"
\".concat(grav_config__WEBPACK_IMPORTED_MODULE_3__.translations.PLUGIN_ADMIN.FILE_ERROR_ADD, \" \").concat(file.name, \"
\\n\").concat(data.message, \"\")\n });\n }\n\n if (this.options.reloadPage) {\n __webpack_require__.g.location.reload();\n }\n }\n }, {\n key: \"b64_to_utf8\",\n value: function b64_to_utf8(str) {\n str = str.replace(/\\s/g, '');\n return decodeURIComponent(escape(window.atob(str)));\n }\n }, {\n key: \"onDropzoneRemovedFile\",\n value: function onDropzoneRemovedFile(file) {\n var _this5 = this;\n\n if (!file.accepted || file.rejected) {\n return;\n }\n\n var url = file.removeUrl || this.urls[\"delete\"] || this.options.url;\n var path = (url || '').match(/path:(.*)\\//);\n var body = {\n filename: file.name,\n uri: this.getURI()\n };\n\n if (file.sessionParams) {\n body.task = 'filessessionremove';\n body.session = file.sessionParams;\n }\n\n var customPost = this.container.data('filePostRemove') || {};\n\n if (Object.keys(customPost).length) {\n body = {};\n Object.keys(customPost).forEach(function (key) {\n body[key] = customPost[key];\n });\n }\n\n body['filename'] = file.name;\n body['admin-nonce'] = grav_config__WEBPACK_IMPORTED_MODULE_3__.config.admin_nonce;\n (0,_utils_request__WEBPACK_IMPORTED_MODULE_2__.default)(url, {\n method: 'post',\n body: body\n }, function () {\n if (!path) {\n return;\n }\n\n path = _this5.b64_to_utf8(path[1]);\n\n var input = _this5.container.find('[name][type=\"hidden\"]');\n\n var data = JSON.parse(input.val() || '{}');\n delete data[path];\n input.val(JSON.stringify(data));\n });\n }\n }, {\n key: \"onDropzoneError\",\n value: function onDropzoneError(file, response, xhr) {\n var message = xhr ? response.error.message : response;\n jquery__WEBPACK_IMPORTED_MODULE_0___default()(file.previewElement).find('[data-dz-errormessage]').html(message);\n return this.handleError({\n file: file,\n data: {\n status: 'error'\n },\n msg: \"
\".concat(message, \"\")\n });\n }\n }, {\n key: \"handleError\",\n value: function handleError(options) {\n var file = options.file,\n data = options.data,\n mode = options.mode,\n msg = options.msg;\n\n if (data.status !== 'error' && data.status !== 'unauthorized') {\n return;\n }\n\n switch (mode) {\n case 'addBack':\n if (file instanceof File) {\n this.dropzone.addFile.call(this.dropzone, file);\n } else {\n this.dropzone.files.push(file);\n this.dropzone.options.addedfile.call(this.dropzone, file);\n this.dropzone.options.thumbnail.call(this.dropzone, file, file.extras.url);\n }\n\n break;\n\n case 'removeFile':\n default:\n if (~this.dropzone.files.indexOf(file)) {\n file.rejected = true;\n this.dropzone.removeFile.call(this.dropzone, file, {\n silent: true\n });\n }\n\n break;\n }\n\n var modal = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-remodal-id=\"generic\"]');\n modal.find('.error-content').html(msg);\n (jquery__WEBPACK_IMPORTED_MODULE_0___default().remodal.lookup)[modal.data('remodal')].open();\n }\n }]);\n\n return FilesField;\n}();\n\n\nfunction UriToMarkdown(uri) {\n uri = uri.replace(/@3x|@2x|@1x/, '');\n uri = uri.replace(/\\(/g, '%28');\n uri = uri.replace(/\\)/g, '%29');\n var title = uri.split('.').slice(0, -1).join('.');\n return uri.match(/\\.(jpe?g|png|gif|svg|mp4|webm|ogv|mov)$/i) ? \".concat(uri, \" \\\"\").concat(title, \"\\\")\") : \"[\".concat(decodeURI(uri), \"](\").concat(uri, \")\");\n}\nvar instances = [];\nvar cache = jquery__WEBPACK_IMPORTED_MODULE_0___default()();\n\nvar onAddedNodes = function onAddedNodes(event, target\n/* , record, instance */\n) {\n var files = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).find('.dropzone.files-upload');\n\n if (!files.length) {\n return;\n }\n\n files.each(function (index, file) {\n file = jquery__WEBPACK_IMPORTED_MODULE_0___default()(file);\n\n if (!~cache.index(file)) {\n addNode(file);\n }\n });\n};\n\nvar addNode = function addNode(container) {\n container = jquery__WEBPACK_IMPORTED_MODULE_0___default()(container);\n var input = container.find('input[type=\"file\"]');\n var settings = container.data('grav-file-settings') || {};\n\n if (settings.accept && ~settings.accept.indexOf('*')) {\n settings.accept = [''];\n }\n\n var options = {\n url: container.data('file-url-add') || (container.closest('form').attr('action') || grav_config__WEBPACK_IMPORTED_MODULE_3__.config.current_url) + '.json',\n paramName: settings.paramName || 'file',\n dotNotation: settings.name || 'file',\n acceptedFiles: settings.accept ? settings.accept.join(',') : input.attr('accept') || container.data('media-types'),\n maxFilesize: typeof settings.filesize !== 'undefined' ? settings.filesize : 256,\n maxFiles: settings.limit || null,\n resizeWidth: settings.resizeWidth || null,\n resizeHeight: settings.resizeHeight || null,\n resizeQuality: settings.resizeQuality || null,\n resolution: settings.resolution || null,\n accept: function accept(file, done) {\n ACCEPT_FUNC(file, done, settings);\n }\n };\n cache = cache.add(container);\n container = container[0];\n instances.push(new FilesField({\n container: container,\n options: options\n }));\n};\n\nvar Instance = function () {\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('.dropzone.files-upload').each(function (i, container) {\n return addNode(container);\n });\n jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('mutation._grav', onAddedNodes);\n return instances;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9HcmF2Ly4vYXBwL2Zvcm1zL2ZpZWxkcy9maWxlcy5qcz82MTc5Il0sIm5hbWVzIjpbIkRpY3Rpb25hcnkiLCJkaWN0Q2FuY2VsVXBsb2FkIiwidHJhbnNsYXRpb25zIiwiZGljdENhbmNlbFVwbG9hZENvbmZpcm1hdGlvbiIsImRpY3REZWZhdWx0TWVzc2FnZSIsImRpY3RGYWxsYmFja01lc3NhZ2UiLCJkaWN0RmFsbGJhY2tUZXh0IiwiZGljdEZpbGVUb29CaWciLCJkaWN0SW52YWxpZEZpbGVUeXBlIiwiZGljdE1heEZpbGVzRXhjZWVkZWQiLCJkaWN0UmVtb3ZlRmlsZSIsImRpY3RSZXNwb25zZUVycm9yIiwiRFJPUFpPTkVfUkVTUE9OU0VfRVJST1IiLCJEcm9wem9uZSIsInF1ZXN0aW9uIiwiYWNjZXB0ZWQiLCJyZWplY3RlZCIsImRvYyIsIiQiLCJkb2N1bWVudCIsIm1vZGFsU2VsZWN0b3IiLCJyZW1vdmVFdmVudHMiLCJvZmYiLCJhY2NlcHQiLCJyZWplY3QiLCJmaW5kIiwicmVtb3ZlQ2xhc3MiLCJkYXRhIiwib3BlbiIsIm9uIiwiRHJvcHpvbmVNZWRpYUNvbmZpZyIsInRpbWVvdXQiLCJ0aHVtYm5haWxXaWR0aCIsInRodW1ibmFpbEhlaWdodCIsImFkZFJlbW92ZUxpbmtzIiwicmVwbGFjZSIsImRpY3RSZW1vdmVGaWxlQ29uZmlybWF0aW9uIiwicHJldmlld1RlbXBsYXRlIiwidHJpbSIsIkFDQ0VQVF9GVU5DIiwiZmlsZSIsImRvbmUiLCJzZXR0aW5ncyIsInJlc29sdXRpb24iLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwiZXJyb3IiLCJoYXNNaW4iLCJtaW4iLCJ3aWR0aCIsImhlaWdodCIsImhhc01heCIsIm1heCIsInJlc2l6ZVdpZHRoIiwicmVzaXplSGVpZ2h0Iiwib25sb2FkIiwiZXZlbnQiLCJpbWFnZSIsIkltYWdlIiwic3JjIiwidGFyZ2V0IiwicmVzdWx0Iiwib25lcnJvciIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiYXR0ciIsIlVSTCIsInJldm9rZU9iamVjdFVSTCIsInJlYWRBc0RhdGFVUkwiLCJGaWxlc0ZpZWxkIiwiY29udGFpbmVyIiwib3B0aW9ucyIsImxlbmd0aCIsInVybHMiLCJjdXN0b21Qb3N0IiwiYXNzaWduIiwia2xhc3MiLCJ1cmwiLCJjb25maWciLCJhY2NlcHRlZEZpbGVzIiwiaW5pdCIsImluaXREcm9wem9uZSIsImRyb3B6b25lIiwib25Ecm9wem9uZUNvbXBsZXRlIiwiYmluZCIsIm9uRHJvcHpvbmVTdWNjZXNzIiwib25Ecm9wem9uZVJlbW92ZWRGaWxlIiwib25Ecm9wem9uZVNlbmRpbmciLCJvbkRyb3B6b25lRXJyb3IiLCJlIiwidmFsdWUiLCJKU09OIiwicGFyc2UiLCJ2YWwiLCJjdXJyZW50VGFyZ2V0IiwicGFyZW50IiwiZmlsZW5hbWUiLCJlbmNvZGVVUkkiLCJ0ZXh0IiwiZmlsdGVyIiwia2V5IiwibmFtZSIsInNoaWZ0IiwiZmlsZXMiLCJlYWNoIiwiaW5kZXgiLCJtb2NrIiwic2l6ZSIsInR5cGUiLCJzdGF0dXMiLCJyZW1vdmVVcmwiLCJyZW1vdmUiLCJwdXNoIiwiYWRkZWRmaWxlIiwiY2FsbCIsIm1hdGNoIiwidGh1bWJuYWlsIiwicGF0aCIsImNyZWF0ZVRodW1ibmFpbEZyb21VcmwiLCJ4aHIiLCJmb3JtRGF0YSIsImFwcGVuZCIsImRvdE5vdGF0aW9uIiwiZ2V0VVJJIiwicmVzcG9uc2UiLCJyZWxvYWRQYWdlIiwiZ2xvYmFsIiwibG9jYXRpb24iLCJyZWxvYWQiLCJzZXNzaW9uIiwic2Vzc2lvblBhcmFtcyIsImlucHV0IiwiaGFuZGxlRXJyb3IiLCJtb2RlIiwibXNnIiwibWVzc2FnZSIsImpvaW4iLCJzdHIiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ3aW5kb3ciLCJhdG9iIiwiYm9keSIsInVyaSIsInRhc2siLCJyZXF1ZXN0IiwibWV0aG9kIiwiYjY0X3RvX3V0ZjgiLCJzdHJpbmdpZnkiLCJwcmV2aWV3RWxlbWVudCIsImh0bWwiLCJGaWxlIiwiYWRkRmlsZSIsImV4dHJhcyIsImluZGV4T2YiLCJyZW1vdmVGaWxlIiwic2lsZW50IiwibW9kYWwiLCJVcmlUb01hcmtkb3duIiwidGl0bGUiLCJzcGxpdCIsInNsaWNlIiwiZGVjb2RlVVJJIiwiaW5zdGFuY2VzIiwiY2FjaGUiLCJvbkFkZGVkTm9kZXMiLCJhZGROb2RlIiwiY2xvc2VzdCIsInBhcmFtTmFtZSIsIm1heEZpbGVzaXplIiwiZmlsZXNpemUiLCJtYXhGaWxlcyIsImxpbWl0IiwicmVzaXplUXVhbGl0eSIsImFkZCIsIkluc3RhbmNlIiwiaSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0NBRUE7O0FBQ0E7Q0FHQTs7QUFDQSxJQUFNQSxVQUFVLEdBQUc7QUFDZkMsa0JBQWdCLEVBQUVDLHlGQURIO0FBRWZDLDhCQUE0QixFQUFFRCxzR0FGZjtBQUdmRSxvQkFBa0IsRUFBRUYsMkZBSEw7QUFJZkcscUJBQW1CLEVBQUVILDRGQUpOO0FBS2ZJLGtCQUFnQixFQUFFSix5RkFMSDtBQU1mSyxnQkFBYyxFQUFFTCx3RkFORDtBQU9mTSxxQkFBbUIsRUFBRU4sNkZBUE47QUFRZk8sc0JBQW9CLEVBQUVQLDhGQVJQO0FBU2ZRLGdCQUFjLEVBQUVSLHVGQVREO0FBVWZTLG1CQUFpQixFQUFFVCwwRkFBaURVO0FBVnJELENBQW5CO0FBYUFDLDhEQUFBLEdBQXdCLEtBQXhCO0FBQ0FBLDBFQUFBLEdBQW9DLEVBQXBDOztBQUNBQSx5REFBQSxHQUFtQixVQUFDQyxRQUFELEVBQVdDLFFBQVgsRUFBcUJDLFFBQXJCLEVBQWtDO0FBQ2pELE1BQUlDLEdBQUcsR0FBR0MsNkNBQUMsQ0FBQ0MsUUFBRCxDQUFYO0FBQ0EsTUFBSUMsYUFBYSxHQUFHLGtDQUFwQjs7QUFFQSxNQUFJQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxHQUFNO0FBQ3JCSixPQUFHLENBQUNLLEdBQUosQ0FBUSxjQUFSLEVBQXdCRixhQUF4QixFQUF1Q0csTUFBdkM7QUFDQU4sT0FBRyxDQUFDSyxH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QUErRCxHQUxsRTtBQU1WQyxZQUFRLEVBQUVsSSxRQUFRLENBQUNtSSxLQUFULElBQWtCLElBTmxCO0FBT1Z4SCxlQUFXLEVBQUVYLFFBQVEsQ0FBQ1csV0FBVCxJQUF3QixJQVAzQjtBQVFWQyxnQkFBWSxFQUFFWixRQUFRLENBQUNZLFlBQVQsSUFBeUIsSUFSN0I7QUFTVndILGlCQUFhLEVBQUVwSSxRQUFRLENBQUNvSSxhQUFULElBQTBCLElBVC9CO0FBVVZuSSxjQUFVLEVBQUVELFFBQVEsQ0FBQ0MsVUFBVCxJQUF1QixJQVZ6QjtBQVdWcEIsVUFBTSxFQUFFLGdCQUFTaUIsSUFBVCxFQUFlQyxJQUFmLEVBQXFCO0FBQUVGLGlCQUFXLENBQUNDLElBQUQsRUFBT0MsSUFBUCxFQUFhQyxRQUFiLENBQVg7QUFBb0M7QUFYekQsR0FBZDtBQWNBMkgsT0FBSyxHQUFHQSxLQUFLLENBQUNVLEdBQU4sQ0FBVXhHLFNBQVYsQ0FBUjtBQUNBQSxXQUFTLEdBQUdBLFNBQVMsQ0FBQyxDQUFELENBQXJCO0FBQ0E2RixXQUFTLENBQUNuRCxJQUFWLENBQWUsSUFBSTNDLFVBQUosQ0FBZTtBQUFFQyxhQUFTLEVBQVRBLFNBQUY7QUFBYUMsV0FBTyxFQUFQQTtBQUFiLEdBQWYsQ0FBZjtBQUNILENBMUJEOztBQTRCTyxJQUFJd0csUUFBUSxHQUFJLFlBQU07QUFDekI5SiwrQ0FBQyxDQUFDLHdCQUFELENBQUQsQ0FBNEJ1RixJQUE1QixDQUFpQyxVQUFDd0UsQ0FBRCxFQUFJMUcsU0FBSjtBQUFBLFdBQWtCZ0csT0FBTyxDQUFDaEcsU0FBRCxDQUF6QjtBQUFBLEdBQWpDO0FBQ0FyRCwrQ0FBQyxDQUFDLE1BQUQsQ0FBRCxDQUFVVyxFQUFWLENBQWEsZ0JBQWIsRUFBK0J5SSxZQUEvQjtBQUVBLFNBQU9GLFNBQVA7QUFDSCxDQUxxQixFQUFmIiwiZmlsZSI6Ii4vYXBwL2Zvcm1zL2ZpZWxkcy9maWxlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgRHJvcHpvbmUgZnJvbSAnZHJvcHpvbmUnO1xuLy8gaW1wb3J0IEVYSUYgZnJvbSAnZXhpZi1qcyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0JztcbmltcG9ydCB7IGNvbmZpZywgdHJhbnNsYXRpb25zIH0gZnJvbSAnZ3Jhdi1jb25maWcnO1xuXG4vLyB0cmFuc2xhdGlvbnNcbmNvbnN0IERpY3Rpb25hcnkgPSB7XG4gICAgZGljdENhbmNlbFVwbG9hZDogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9DQU5DRUxfVVBMT0FELFxuICAgIGRpY3RDYW5jZWxVcGxvYWRDb25maXJtYXRpb246IHRyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRFJPUFpPTkVfQ0FOQ0VMX1VQTE9BRF9DT05GSVJNQVRJT04sXG4gICAgZGljdERlZmF1bHRNZXNzYWdlOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0RFRkFVTFRfTUVTU0FHRSxcbiAgICBkaWN0RmFsbGJhY2tNZXNzYWdlOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0ZBTExCQUNLX01FU1NBR0UsXG4gICAgZGljdEZhbGxiYWNrVGV4dDogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9GQUxMQkFDS19URVhULFxuICAgIGRpY3RGaWxlVG9vQmlnOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0ZJTEVfVE9PX0JJRyxcbiAgICBkaWN0SW52YWxpZEZpbGVUeXBlOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX0lOVkFMSURfRklMRV9UWVBFLFxuICAgIGRpY3RNYXhGaWxlc0V4Y2VlZGVkOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BaT05FX01BWF9GSUxFU19FWENFRURFRCxcbiAgICBkaWN0UmVtb3ZlRmlsZTogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9SRU1PVkVfRklMRSxcbiAgICBkaWN0UmVzcG9uc2VFcnJvcjogdHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5EUk9QWk9ORV9SRVNQT05TRV9FUlJPUlxufTtcblxuRHJvcHpvbmUuYXV0b0Rpc2NvdmVyID0gZmFsc2U7XG5Ecm9wem9uZS5vcHRpb25zLmdyYXZQYWdlRHJvcHpvbmUgPSB7fTtcbkRyb3B6b25lLmNvbmZpcm0gPSAocXVlc3Rpb24sIGFjY2VwdGVkLCByZWplY3RlZCkgPT4ge1xuICAgIGxldCBkb2MgPSAkKGRvY3VtZW50KTtcbiAgICBsZXQgbW9kYWxTZWxlY3RvciA9ICdbZGF0YS1yZW1vZGFsLWlkPVwiZGVsZXRlLW1lZGlhXCJdJztcblxuICAgIGxldCByZW1vdmVFdmVudHMgPSAoKSA9PiB7XG4gICAgICAgIGRvYy5vZmYoJ2NvbmZpcm1hdGlvbicsIG1vZGFsU2VsZWN0b3IsIGFjY2VwdCk7XG4gICAgICAgIGRvYy5vZmYoJ2NhbmNlbGxhdGlvbicsIG1vZGFsU2VsZWN0b3IsIHJlamVjdCk7XG5cbiAgICAgICAgJChtb2RhbFNlbGVjdG9yKS5maW5kKCcucmVtb2RhbC1jb25maXJtJykucmVtb3ZlQ2xhc3MoJ3BvaW50ZXItZXZlbnRzLWRpc2FibGVkJyk7XG4gICAgfTtcblxuICAgIGxldCBhY2NlcHQgPSAoKSA9PiB7XG4gICAgICAgIGFjY2VwdGVkICYmIGFjY2VwdGVkKCk7XG4gICAgICAgIHJlbW92ZUV2ZW50cygpO1xuICAgIH07XG5cbiAgICBsZXQgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICByZWplY3RlZCAmJiByZWplY3RlZCgpO1xuICAgICAgICByZW1vdmVFdmVudHMoKTtcbiAgICB9O1xuXG4gICAgJC5yZW1vZGFsLmxvb2t1cFskKG1vZGFsU2VsZWN0b3IpLmRhdGEoJ3JlbW9kYWwnKV0ub3BlbigpO1xuICAgIGRvYy5vbignY29uZmlybWF0aW9uJywgbW9kYWxTZWxlY3RvciwgYWNjZXB0KTtcbiAgICBkb2Mub24oJ2NhbmNlbGxhdGlvbicsIG1vZGFsU2VsZWN0b3IsIHJlamVjdCk7XG59O1xuXG5jb25zdCBEcm9wem9uZU1lZGlhQ29uZmlnID0ge1xuICAgIHRpbWVvdXQ6IDAsXG4gICAgdGh1bWJuYWlsV2lkdGg6IDIwMCxcbiAgICB0aHVtYm5haWxIZWlnaHQ6IDE1MCxcbiAgICBhZGRSZW1vdmVMaW5rczogZmFsc2UsXG4gICAgZGljdERlZmF1bHRNZXNzYWdlOiB0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLkRST1BfRklMRVNfSEVSRV9UT19VUExPQUQucmVwbGFjZSgvJmx0Oy9nLCAnPCcpLnJlcGxhY2UoLyZndDsvZywgJz4nKSxcbiAgICBkaWN0UmVtb3ZlRmlsZUNvbmZpcm1hdGlvbjogJ1twbGFjZWhvbGRlcl0nLFxuICAgIHByZXZpZXdUZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHotcHJldmlldyBkei1maWxlLXByZXZpZXcgZHotbm8tZWRpdG9yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImR6LWRldGFpbHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkei1maWxlbmFtZVwiPjxzcGFuIGRhdGEtZHotbmFtZT48L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHotc2l6ZVwiIGRhdGEtZHotc2l6ZT48L2Rpdj5cbiAgICAgICAgICAgIDxpbWcgZGF0YS1kei10aHVtYm5haWwgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHotcHJvZ3Jlc3NcIj48c3BhbiBjbGFzcz1cImR6LXVwbG9hZFwiIGRhdGEtZHotdXBsb2FkcHJvZ3Jlc3M+PC9zcGFuPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkei1zdWNjZXNzLW1hcmtcIj48c3Bhbj7inJQ8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImR6LWVycm9yLW1hcmtcIj48c3Bhbj7inJg8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImR6LWVycm9yLW1lc3NhZ2VcIj48c3BhbiBkYXRhLWR6LWVycm9ybWVzc2FnZT48L3NwYW4+PC9kaXY+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkei11bnNldFwiIHRpdGxlPVwiJHt0cmFuc2xhdGlvbnMuUExVR0lOX0FETUlOLlVOU0VUfVwiIGhyZWY9XCIjXCIgZGF0YS1kei11bnNldD4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVU5TRVR9PC9hPlxuICAgICAgICAgIDxhIGNsYXNzPVwiZHotcmVtb3ZlXCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uREVMRVRFfVwiIGhyZWY9XCJqYXZhc2NyaXB0OnVuZGVmaW5lZDtcIiBkYXRhLWR6LXJlbW92ZT4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uREVMRVRFfTwvYT5cbiAgICAgICAgICA8YSBjbGFzcz1cImR6LW1ldGFkYXRhXCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uTUVUQURBVEF9XCIgaHJlZj1cIiNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBkYXRhLWR6LW1ldGFkYXRhPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5NRVRBREFUQX08L2E+XG4gICAgICAgICAgPGEgY2xhc3M9XCJkei12aWV3XCIgdGl0bGU9XCIke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVklFV31cIiBocmVmPVwiI1wiIHRhcmdldD1cIl9ibGFua1wiIGRhdGEtZHotdmlldz4ke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uVklFV308L2E+XG4gICAgICAgIDwvZGl2PmAudHJpbSgpXG59O1xuXG4vLyBnbG9iYWwuRVhJRiA9IEVYSUY7XG5cbmNvbnN0IEFDQ0VQVF9GVU5DID0gZnVuY3Rpb24oZmlsZSwgZG9uZSwgc2V0dGluZ3MpIHtcbiAgICBjb25zdCByZXNvbHV0aW9uID0gc2V0dGluZ3MucmVzb2x1dGlvbjtcbiAgICBpZiAoIXJlc29sdXRpb24pIHJldHVybiBkb25lKCk7XG5cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGxldCBlcnJvciA9ICcnO1xuICAgIGNvbnN0IGhhc01pbiA9IChyZXNvbHV0aW9uLm1pbiAmJiAocmVzb2x1dGlvbi5taW4ud2lkdGggfHwgcmVzb2x1dGlvbi5taW4uaGVpZ2h0KSk7XG4gICAgY29uc3QgaGFzTWF4ID0gKHJlc29sdXRpb24ubWF4ICYmIChyZXNvbHV0aW9uLm1heC53aWR0aCB8fCByZXNvbHV0aW9uLm1heC5oZWlnaHQpKTtcbiAgICBpZiAoaGFzTWluIHx8ICghKHNldHRpbmdzLnJlc2l6ZVdpZHRoIHx8IHNldHRpbmdzLnJlc2l6ZUhlaWdodCkgJiYgaGFzTWF4KSkge1xuICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICAgICAgICBpbWFnZS5zcmMgPSBldmVudC50YXJnZXQucmVzdWx0O1xuICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGRvbmUodHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5GSUxFX0VSUk9SX1VQTE9BRCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc29sdXRpb24ubWluKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc29sdXRpb24ubWluKS5mb3JFYWNoKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi5taW5bYXR0cl0gJiYgdGhpc1thdHRyXSA8IHJlc29sdXRpb24ubWluW2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgKz0gdHJhbnNsYXRpb25zLlBMVUdJTl9GT1JNLlJFU09MVVRJT05fTUlOLnJlcGxhY2UoL3t7YXR0cn19L2csIGF0dHIpLnJlcGxhY2UoL3t7bWlufX0vZywgcmVzb2x1dGlvbi5taW5bYXR0cl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIShzZXR0aW5ncy5yZXNpemVXaWR0aCB8fCBzZXR0aW5ncy5yZXNpemVIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uLm1heCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzb2x1dGlvbi5tYXgpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x1dGlvbi5tYXhbYXR0cl0gJiYgdGhpc1thdHRyXSA+IHJlc29sdXRpb24ubWF4W2F0dHJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICs9IHRyYW5zbGF0aW9ucy5QTFVHSU5fRk9STS5SRVNPTFVUSU9OX01BWC5yZXBsYWNlKC97e2F0dHJ9fS9nLCBhdHRyKS5yZXBsYWNlKC97e21heH19L2csIHJlc29sdXRpb24ubWF4W2F0dHJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoaW1hZ2Uuc3JjKTsgLy8gcmVsZWFzZSBtZW1vcnlcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IgPyBkb25lKGVycm9yKSA6IGRvbmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGVycm9yID8gZG9uZShlcnJvcikgOiBkb25lKCk7XG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmlsZXNGaWVsZCB7XG4gICAgY29uc3RydWN0b3IoeyBjb250YWluZXIgPSAnLmRyb3B6b25lLmZpbGVzLXVwbG9hZCcsIG9wdGlvbnMgPSB7fSB9ID0ge30pIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIgPSAkKGNvbnRhaW5lcik7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXIubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHRoaXMudXJscyA9IHt9O1xuICAgICAgICB0aGlzLmN1c3RvbVBvc3QgPSB0aGlzLmNvbnRhaW5lci5kYXRhKCdmaWxlUG9zdEFkZCcpIHx8IHt9O1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBEaWN0aW9uYXJ5LCBEcm9wem9uZU1lZGlhQ29uZmlnLCB7XG4gICAgICAgICAgICBrbGFzczogdGhpcyxcbiAgICAgICAgICAgIHVybDogdGhpcy5jb250YWluZXIuZGF0YSgnZmlsZS11cmwtYWRkJykgfHwgY29uZmlnLmN1cnJlbnRfdXJsLFxuICAgICAgICAgICAgYWNjZXB0ZWRGaWxlczogdGhpcy5jb250YWluZXIuZGF0YSgnbWVkaWEtdHlwZXMnKSxcbiAgICAgICAgICAgIGluaXQ6IHRoaXMuaW5pdERyb3B6b25lXG4gICAgICAgIH0sIHRoaXMuY29udGFpbmVyLmRhdGEoJ2Ryb3B6b25lLW9wdGlvbnMnKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zLCB7XG4gICAgICAgICAgICBhY2NlcHQ6IGZ1bmN0aW9uKGZpbGUsIGRvbmUpIHsgQUNDRVBUX0ZVTkMoZmlsZSwgZG9uZSwgdGhpcy5vcHRpb25zKTsgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRyb3B6b25lID0gbmV3IERyb3B6b25lKGNvbnRhaW5lciwgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5kcm9wem9uZS5vbignY29tcGxldGUnLCB0aGlzLm9uRHJvcHpvbmVDb21wbGV0ZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5kcm9wem9uZS5vbignc3VjY2VzcycsIHRoaXMub25Ecm9wem9uZVN1Y2Nlc3MuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuZHJvcHpvbmUub24oJ3JlbW92ZWRmaWxlJywgdGhpcy5vbkRyb3B6b25lUmVtb3ZlZEZpbGUuYmluZCh0aGlzKSk7XG4gICAgICAgIHRoaXMuZHJvcHpvbmUub24oJ3NlbmRpbmcnLCB0aGlzLm9uRHJvcHpvbmVTZW5kaW5nLmJpbmQodGhpcykpO1xuICAgICAgICB0aGlzLmRyb3B6b25lLm9uKCdlcnJvcicsIHRoaXMub25Ecm9wem9uZUVycm9yLmJpbmQodGhpcykpO1xuXG4gICAgICAgIHRoaXMuY29udGFpbmVyLm9uKCdtb3VzZWVudGVyJywgJ1tkYXRhLWR6LXZpZXddJywgKGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gSlNPTi5wYXJzZSh0aGlzLmNvbnRhaW5lci5maW5kKCdbbmFtZV1bdHlwZT1cImhpZGRlblwiXScpLnZhbCgpIHx8ICd7fScpO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gJChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IHRhcmdldC5wYXJlbnQoJy5kei1wcmV2aWV3JykuZmluZCgnLmR6LWZpbGVuYW1lJyk7XG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IGVuY29kZVVSSShmaWxlLnRleHQoKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IFVSTCA9IE9iamVjdC5rZXlzKHZhbHVlKS5maWx0ZXIoKGtleSkgPT4gdmFsdWVba2V5XS5uYW1lID09PSBmaWxlbmFtZSkuc2hpZnQoKTtcbiAgICAgICAgICAgIHRhcmdldC5hdHRyKCdocmVmJywgYCR7Y29uZmlnLmJhc2VfdXJsX3NpbXBsZX0vJHtVUkx9YCk7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgaW5pdERyb3B6b25lKCkge1xuICAgICAgICBsZXQgZmlsZXMgPSB0aGlzLm9wdGlvbnMua2xhc3MuY29udGFpbmVyLmZpbmQoJ1tkYXRhLWZpbGVdJyk7XG4gICAgICAgIGxldCBkcm9wem9uZSA9IHRoaXM7XG4gICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGZpbGVzLmVhY2goKGluZGV4LCBmaWxlKSA9PiB7XG4gICAgICAgICAgICBmaWxlID0gJChmaWxlKTtcbiAgICAgICAgICAgIGxldCBkYXRhID0gZmlsZS5kYXRhKCdmaWxlJyk7XG4gICAgICAgICAgICBsZXQgbW9jayA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogZGF0YS5zaXplLFxuICAgICAgICAgICAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgICAgICAgICAgICBzdGF0dXM6IERyb3B6b25lLkFEREVELFxuICAgICAgICAgICAgICAgIGFjY2VwdGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHVybDogdGhpcy5vcHRpb25zLnVybCxcbiAgICAgICAgICAgICAgICByZW1vdmVVcmw6IGRhdGEucmVtb3ZlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBkcm9wem9uZS5maWxlcy5wdXNoKG1vY2spO1xuICAgICAgICAgICAgZHJvcHpvbmUub3B0aW9ucy5hZGRlZGZpbGUuY2FsbChkcm9wem9uZSwgbW9jayk7XG4gICAgICAgICAgICBpZiAobW9jay50eXBlLm1hdGNoKC9eaW1hZ2VcXC8vKSkge1xuICAgICAgICAgICAgICAgIGRyb3B6b25lLm9wdGlvbnMudGh1bWJuYWlsLmNhbGwoZHJvcHpvbmUsIG1vY2ssIGRhdGEucGF0aCk7XG4gICAgICAgICAgICAgICAgZHJvcHpvbmUuY3JlYXRlVGh1bWJuYWlsRnJvbVVybChtb2NrLCBkYXRhLnBhdGgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmaWxlLnJlbW92ZSgpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGdldFVSSSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyLmRhdGEoJ21lZGlhVXJpJykgfHwgJyc7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZVNlbmRpbmcoZmlsZSwgeGhyLCBmb3JtRGF0YSkge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5jdXN0b21Qb3N0KS5sZW5ndGgpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuY3VzdG9tUG9zdCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgdGhpcy5jdXN0b21Qb3N0W2tleV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ25hbWUnLCB0aGlzLm9wdGlvbnMuZG90Tm90YXRpb24pO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCd0YXNrJywgJ2ZpbGVzdXBsb2FkJyk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VyaScsIHRoaXMuZ2V0VVJJKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdhZG1pbi1ub25jZScsIGNvbmZpZy5hZG1pbl9ub25jZSk7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZVN1Y2Nlc3MoZmlsZSwgcmVzcG9uc2UsIHhocikge1xuICAgICAgICByZXNwb25zZSA9IHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHJlc3BvbnNlKSA6IHJlc3BvbnNlO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJlbG9hZFBhZ2UpIHtcbiAgICAgICAgICAgIGdsb2JhbC5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0b3JlIHBhcmFtcyBmb3IgcmVtb3ZpbmcgZmlsZSBmcm9tIHNlc3Npb24gYmVmb3JlIGl0IGdldHMgc2F2ZWRcbiAgICAgICAgaWYgKHJlc3BvbnNlLnNlc3Npb24pIHtcbiAgICAgICAgICAgIGZpbGUuc2Vzc2lvblBhcmFtcyA9IHJlc3BvbnNlLnNlc3Npb247XG4gICAgICAgICAgICBmaWxlLnJlbW92ZVVybCA9IHRoaXMub3B0aW9ucy51cmw7XG5cbiAgICAgICAgICAgIC8vIFRvdWNoIGZpZWxkIHZhbHVlIHRvIGZvcmNlIGEgbXV0YXRpb24gZGV0ZWN0aW9uXG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuY29udGFpbmVyLmZpbmQoJ1tuYW1lXVt0eXBlPVwiaGlkZGVuXCJdJyk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbCgpO1xuICAgICAgICAgICAgaW5wdXQudmFsKHZhbHVlICsgJyAnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKHtcbiAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICBkYXRhOiByZXNwb25zZSxcbiAgICAgICAgICAgIG1vZGU6ICdyZW1vdmVGaWxlJyxcbiAgICAgICAgICAgIG1zZzogYDxwPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5GSUxFX0VSUk9SX1VQTE9BRH0gPHN0cm9uZz4ke2ZpbGUubmFtZX08L3N0cm9uZz48L3A+XG4gICAgICAgICAgICA8cHJlPiR7cmVzcG9uc2UubWVzc2FnZX08L3ByZT5gXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRHJvcHpvbmVDb21wbGV0ZShmaWxlKSB7XG4gICAgICAgIGlmICghZmlsZS5hY2NlcHRlZCAmJiAhZmlsZS5yZWplY3RlZCkge1xuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGAke3RyYW5zbGF0aW9ucy5QTFVHSU5fQURNSU4uRklMRV9VTlNVUFBPUlRFRH06ICR7ZmlsZS5uYW1lLm1hdGNoKC9cXC4uKy8pLmpvaW4oJycpfWBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKHtcbiAgICAgICAgICAgICAgICBmaWxlLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgbW9kZTogJ3JlbW92ZUZpbGUnLFxuICAgICAgICAgICAgICAgIG1zZzogYDxwPiR7dHJhbnNsYXRpb25zLlBMVUdJTl9BRE1JTi5GSUxFX0VSUk9SX0FERH0gPHN0cm9uZz4ke2ZpbGUubmFtZX08L3N0cm9uZz48L3A+XG4gICAgICAgICAgICAgICAgPHByZT4ke2RhdGEubWVzc2FnZX08L3ByZT5gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVsb2FkUGFnZSkge1xuICAgICAgICAgICAgZ2xvYmFsLmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYjY0X3RvX3V0Zjgoc3RyKSB7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh3aW5kb3cuYXRvYihzdHIpKSk7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZVJlbW92ZWRGaWxlKGZpbGUsIC4uLmV4dHJhKSB7XG4gICAgICAgIGlmICghZmlsZS5hY2NlcHRlZCB8fCBmaWxlLnJlamVjdGVkKSB7IHJldHVybjsgfVxuICAgICAgICBsZXQgdXJsID0gZmlsZS5yZW1vdmVVcmwgfHwgdGhpcy51cmxzLmRlbGV0ZSB8fCB0aGlzLm9wdGlvbnMudXJsO1xuICAgICAgICBsZXQgcGF0aCA9ICh1cmwgfHwgJycpLm1hdGNoKC9wYXRoOiguKilcXC8vKTtcbiAgICAgICAgbGV0IGJvZHkgPSB7IGZpbGVuYW1lOiBmaWxlLm5hbWUsIHVyaTogdGhpcy5nZXRVUkkoKSB9O1xuXG4gICAgICAgIGlmIChmaWxlLnNlc3Npb25QYXJhbXMpIHtcbiAgICAgICAgICAgIGJvZHkudGFzayA9ICdmaWxlc3Nlc3Npb25yZW1vdmUnO1xuICAgICAgICAgICAgYm9keS5zZXNzaW9uID0gZmlsZS5zZXNzaW9uUGFyYW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VzdG9tUG9zdCA9IHRoaXMuY29udGFpbmVyLmRhdGEoJ2ZpbGVQb3N0UmVtb3ZlJykgfHwge307XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhjdXN0b21Qb3N0KS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGJvZHkgPSB7fTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGN1c3RvbVBvc3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGJvZHlba2V5XSA9IGN1c3RvbVBvc3Rba2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYm9keVsnZmlsZW5hbWUnXSA9IGZpbGUubmFtZTtcbiAgICAgICAgYm9keVsnYWRtaW4tbm9uY2UnXSA9IGNvbmZpZy5hZG1pbl9ub25jZTtcblxuICAgICAgICByZXF1ZXN0KHVybCwgeyBtZXRob2Q6ICdwb3N0JywgYm9keSB9LCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXBhdGgpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgICAgIHBhdGggPSB0aGlzLmI2NF90b191dGY4KHBhdGhbMV0pO1xuICAgICAgICAgICAgbGV0IGlucHV0ID0gdGhpcy5jb250YWluZXIuZmluZCgnW25hbWVdW3R5cGU9XCJoaWRkZW5cIl0nKTtcbiAgICAgICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShpbnB1dC52YWwoKSB8fCAne30nKTtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhW3BhdGhdO1xuICAgICAgICAgICAgaW5wdXQudmFsKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Ecm9wem9uZUVycm9yKGZpbGUsIHJlc3BvbnNlLCB4aHIpIHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB4aHIgPyByZXNwb25zZS5lcnJvci5tZXNzYWdlIDogcmVzcG9uc2U7XG4gICAgICAgICQoZmlsZS5wcmV2aWV3RWxlbWVudCkuZmluZCgnW2RhdGEtZHotZXJyb3JtZXNzYWdlXScpLmh0bWwobWVzc2FnZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3Ioe1xuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIGRhdGE6IHsgc3RhdHVzOiAnZXJyb3InIH0sXG4gICAgICAgICAgICBtc2c6IGA8cHJlPiR7bWVzc2FnZX08L3ByZT5gXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUVycm9yKG9wdGlvbnMpIHtcbiAgICAgICAgbGV0IHsgZmlsZSwgZGF0YSwgbW9kZSwgbXNnIH0gPSBvcHRpb25zO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09ICdlcnJvcicgJiYgZGF0YS5zdGF0dXMgIT09ICd1bmF1dGhvcml6ZWQnKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHN3aXRjaCAobW9kZSkge1xuICAgICAgICAgICAgY2FzZSAnYWRkQmFjayc6XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUuYWRkRmlsZS5jYWxsKHRoaXMuZHJvcHpvbmUsIGZpbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcHpvbmUuZmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5vcHRpb25zLmFkZGVkZmlsZS5jYWxsKHRoaXMuZHJvcHpvbmUsIGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyb3B6b25lLm9wdGlvbnMudGh1bWJuYWlsLmNhbGwodGhpcy5kcm9wem9uZSwgZmlsZSwgZmlsZS5leHRyYXMudXJsKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZUZpbGUnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAofnRoaXMuZHJvcHpvbmUuZmlsZXMuaW5kZXhPZihmaWxlKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlLnJlamVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wem9uZS5yZW1vdmVGaWxlLmNhbGwodGhpcy5kcm9wem9uZSwgZmlsZSwgeyBzaWxlbnQ6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbW9kYWwgPSAkKCdbZGF0YS1yZW1vZGFsLWlkPVwiZ2VuZXJpY1wiXScpO1xuICAgICAgICBtb2RhbC5maW5kKCcuZXJyb3ItY29udGVudCcpLmh0bWwobXNnKTtcbiAgICAgICAgJC5yZW1vZGFsLmxvb2t1cFttb2RhbC5kYXRhKCdyZW1vZGFsJyldLm9wZW4oKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBVcmlUb01hcmtkb3duKHVyaSkge1xuICAgIHVyaSA9IHVyaS5yZXBsYWNlKC9AM3h8QDJ4fEAxeC8sICcnKTtcbiAgICB1cmkgPSB1cmkucmVwbGFjZSgvXFwoL2csICclMjgnKTtcbiAgICB1cmkgPSB1cmkucmVwbGFjZSgvXFwpL2csICclMjknKTtcblxuICAgIGNvbnN0IHRpdGxlID0gdXJpLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKTtcblxuICAgIHJldHVybiB1cmkubWF0Y2goL1xcLihqcGU/Z3xwbmd8Z2lmfHN2Z3xtcDR8d2VibXxvZ3Z8bW92KSQvaSkgPyBgIVske3RpdGxlfV0oJHt1cml9IFwiJHt0aXRsZX1cIilgIDogYFske2RlY29kZVVSSSh1cmkpfV0oJHt1cml9KWA7XG59XG5cbmxldCBpbnN0YW5jZXMgPSBbXTtcbmxldCBjYWNoZSA9ICQoKTtcbmNvbnN0IG9uQWRkZWROb2RlcyA9IChldmVudCwgdGFyZ2V0LyogLCByZWNvcmQsIGluc3RhbmNlICovKSA9PiB7XG4gICAgbGV0IGZpbGVzID0gJCh0YXJnZXQpLmZpbmQoJy5kcm9wem9uZS5maWxlcy11cGxvYWQnKTtcbiAgICBpZiAoIWZpbGVzLmxlbmd0aCkgeyByZXR1cm47IH1cblxuICAgIGZpbGVzLmVhY2goKGluZGV4LCBmaWxlKSA9PiB7XG4gICAgICAgIGZpbGUgPSAkKGZpbGUpO1xuICAgICAgICBpZiAoIX5jYWNoZS5pbmRleChmaWxlKSkge1xuICAgICAgICAgICAgYWRkTm9kZShmaWxlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuY29uc3QgYWRkTm9kZSA9IChjb250YWluZXIpID0+IHtcbiAgICBjb250YWluZXIgPSAkKGNvbnRhaW5lcik7XG4gICAgbGV0IGlucHV0ID0gY29udGFpbmVyLmZpbmQoJ2lucHV0W3R5cGU9XCJmaWxlXCJdJyk7XG4gICAgbGV0IHNldHRpbmdzID0gY29udGFpbmVyLmRhdGEoJ2dyYXYtZmlsZS1zZXR0aW5ncycpIHx8IHt9O1xuXG4gICAgaWYgKHNldHRpbmdzLmFjY2VwdCAmJiB+c2V0dGluZ3MuYWNjZXB0LmluZGV4T2YoJyonKSkge1xuICAgICAgICBzZXR0aW5ncy5hY2NlcHQgPSBbJyddO1xuICAgIH1cblxuICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgICB1cmw6IGNvbnRhaW5lci5kYXRhKCdmaWxlLXVybC1hZGQnKSB8fCAoY29udGFpbmVyLmNsb3Nlc3QoJ2Zvcm0nKS5hdHRyKCdhY3Rpb24nKSB8fCBjb25maWcuY3VycmVudF91cmwpICsgJy5qc29uJyxcbiAgICAgICAgcGFyYW1OYW1lOiBzZXR0aW5ncy5wYXJhbU5hbWUgfHwgJ2ZpbGUnLFxuICAgICAgICBkb3ROb3RhdGlvbjogc2V0dGluZ3MubmFtZSB8fCAnZmlsZScsXG4gICAgICAgIGFjY2VwdGVkRmlsZXM6IHNldHRpbmdzLmFjY2VwdCA/IHNldHRpbmdzLmFjY2VwdC5qb2luKCcsJykgOiBpbnB1dC5hdHRyKCdhY2NlcHQnKSB8fCBjb250YWluZXIuZGF0YSgnbWVkaWEtdHlwZXMnKSxcbiAgICAgICAgbWF4RmlsZXNpemU6IHR5cGVvZiBzZXR0aW5ncy5maWxlc2l6ZSAhPT0gJ3VuZGVmaW5lZCcgPyBzZXR0aW5ncy5maWxlc2l6ZSA6IDI1NixcbiAgICAgICAgbWF4RmlsZXM6IHNldHRpbmdzLmxpbWl0IHx8IG51bGwsXG4gICAgICAgIHJlc2l6ZVdpZHRoOiBzZXR0aW5ncy5yZXNpemVXaWR0aCB8fCBudWxsLFxuICAgICAgICByZXNpemVIZWlnaHQ6IHNldHRpbmdzLnJlc2l6ZUhlaWdodCB8fCBudWxsLFxuICAgICAgICByZXNpemVRdWFsaXR5OiBzZXR0aW5ncy5yZXNpemVRdWFsaXR5IHx8IG51bGwsXG4gICAgICAgIHJlc29sdXRpb246IHNldHRpbmdzLnJlc29sdXRpb24gfHwgbnVsbCxcbiAgICAgICAgYWNjZXB0OiBmdW5jdGlvbihmaWxlLCBkb25lKSB7IEFDQ0VQVF9GVU5DKGZpbGUsIGRvbmUsIHNldHRpbmdzKTsgfVxuICAgIH07XG5cbiAgICBjYWNoZSA9IGNhY2hlLmFkZChjb250YWluZXIpO1xuICAgIGNvbnRhaW5lciA9IGNvbnRhaW5lclswXTtcbiAgICBpbnN0YW5jZXMucHVzaChuZXcgRmlsZXNGaWVsZCh7IGNvbnRhaW5lciwgb3B0aW9ucyB9KSk7XG59O1xuXG5leHBvcnQgbGV0IEluc3RhbmNlID0gKCgpID0+IHtcbiAgICAkKCcuZHJvcHpvbmUuZmlsZXMtdXBsb2FkJykuZWFjaCgoaSwgY29udGFpbmVyKSA9PiBhZGROb2RlKGNvbnRhaW5lcikpO1xuICAgICQoJ2JvZHknKS5vbignbXV0YXRpb24uX2dyYXYnLCBvbkFkZGVkTm9kZXMpO1xuXG4gICAgcmV0dXJuIGluc3RhbmNlcztcbn0pKCk7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/forms/fields/files.js\n"); /***/ }),